Dialogflow - Entity with different reference values and similar synonyms - machine-learning

Help me to resolve the query for Dialogflow agent!
I've defined an entity called "ProgrammingLanguages" and assigned 2 different reference values with common synonyms like below :
Android - Mobile OS, Mobile Development, Google
iOS - Mobile OS, Mobile Development, Apple
Already defined a intent with parameter named "ProgrammingLanguages" along with isList selected "Yes"
Now when I ask my agent "Show me the list of mobile os", it always returns "Android" only! when I replaced the sequence for values inside entity, it started showing me "iOS", That means, it's always taking the first value and didn't show all the values with similar synonyms for that particular entity!
Could someone help me to understand this behaviour?
Thanks,

This will not work correctly. You cannot put same synonyms for different Entity values. If you are using the same synonyms that means the two entities are same.
isList is used to capture multiple values for a parameter like if I am collecting brand names of cars, my entity will be car_brands and user can provide single value or multiple like Ferrari, Benz, Bugati, BMW or only Suzuki.
If you ask your agent "Show the list of mobile os" that means, it should return Android and iOS. Entities are not used to return response values. They are used to capture category for which you want bot/agent to return value.
In your case,
create an Entity and put all the above synonyms under one say "mobileOS".
when the user uses synonyms, mobileOS will be the captured parameter.
use it to decide and return all the mobile OS.
You don't need to enable isList as you are not collecting a list of values from the user.

Related

Feature ID's in OpenLayers 3 are undefined

In OL2 feature id's were generated internally. In OL3 this doesn't seem to be the case since the id's are undefined. I have tried with WKT, JSON, and KML sources and none of them have id's assigned to features. Has the internal feature id been removed from OL3? If not what do I need to do to get the id's generated. I am requesting the id via:
feature.getId();
This is real problem for drag and drop since I don't have control over the files.
Cheers
No, OL3 does not generate any feature IDs.
When reading features, each Format may set the feature ID if it is defined according to the semantics of the format. For GeoJSON, it's the "id" member of the feature (not a property).
When creating new features, it's the responsibility of the application to set the features ID if necessary. Use the setId method of the feature. If using the Draw interaction, it's drawend event might be useful.
You should also note these facts about feature IDs in OL3:
No features with duplicate IDs may be in the same source. If you add a feature to a source where a feature with an equal ID exists, the new feature is ignored.
Feature IDs are compared as strings, so 1234 and "1234" are considered equal.
IDs are included when serializing features according to each Format's specification for feature identifiers.

Visual Studio REST API Iteration and Area ID's

I am working with the VSO REST API and have a question on how Iteration and Area ID's are assigned. Specifically, why is it when I assign a work item to the root Iteration or Area the ID that is returned for the WIT is not returned when I query the classification nodes?
For example, imagine I have this hierarchy when I query /DefaultCollection/my project/_apis/wit/classificationnodes?$depth=2
My Project: id=1234
Area 1: id=5678
Area 2: id= 9012
And I then query for a work item using /DefaultCollection/_apis/wit/workItems/1?$expand=all
If the work item is in Area 1 or Area 2, the System.AreaId field is as expected (5678 and 9012, respectively). However, if I assign the work item to My Project, the System.AreaID is some value that is not included when I query for all classification nodes. There appears to be some kind of relationship between the ID's as they are serial (e.g. the ID returned by the classification node query is 1232 for the area and 1233 for the iteration), but I can't seem to find a way to query to get the actual ID returned by the work item query.
In fact, not only is the ID returned for a work item not present when I query for all classification nodes, if I assign the work item to both the root iteration and area, the ID returned for both fields is the same value that is not included in the classification node query.
What I need is a way to look at a work item and figure out the area and iteration it belongs to. I could probably do something with the path field strings that are returned, but that seems error prone since users can change them.
****Edit****
The above appears to be a bug in the REST API, but for anyone who comes across this post there is a way to get a usable iteration ID by the path string. Structure your REST call like so:
/DefaultCollection/[Project Name]/_apis/wit/classificationnodes/iterations/Release 1/Sprint 1 (etc.)
I have never done this with ID. I only use the path. In the classification service you can get the node by path easily enough.
For example, using the REST API - you can access this url to get the data about a specific iteration:
/DefaultCollection/[Project Name]/_apis/wit/classificationnodes/iterations/[Release X]/[Sprint Y]
Note that trying to access the default iteration path (the project name instead of a specific iteration) will return an error:
/DefaultCollection/[Project Name]/_apis/wit/classificationnodes/iterations/[Project Name]
will give :
{"$id":"1","innerException":null,"message":"VS402485: The node name is not recognized: [Project Name]","typeName":"Microsoft.TeamFoundation.WorkItemTracking.Server.Metadata.WorkItemTrackingTreeNodeNotFoundException, Microsoft.TeamFoundation.WorkItemTracking.Server","typeKey":"WorkItemTrackingTreeNodeNotFoundException","errorCode":0,"eventId":3200}
So if you do batch work, you have to filter those before querying the api.
There are three ways of identifying an Area (everything I post equally applies to Iterations also). The Path (string), the ID (int) and a Guid. each of them are used in different ways, and have different ramifications.
For example renaming an Area, does NOT change it's identity, therefore does not update a work item (the path returned for in a workitem is dynamic).
It is also possible to delete and recreate and identical path, but it will have a different ID.
The GUID is used primarily for the Excel Reports (such as are parent of the SharePoint portal)
Depending on how you want things to react determines the appropriate element to use.
I have not seen any issues with the ID that you mention, and if you could create a simple repro, I would be glad to look at it.
david(dot)corbin(at)dynconcepts(dot)com

How to pass a list (comma separated) to a traffic variable in Omniture?

I have a field "taxonomy" and I would like to pass it to Omniture. This Taxonomy field can have multiple values and I would like to calculate the count for each of the taxonomy separately. Let me explain my question with an example:
Item can be associated with multiple taxonomy. Letz say we are talking about an item called "Item1". This item can be associated with taxonomy "Tx1","Tx2","Tx3".
So the js code will be like,
s.prop1 = "Item1"
s.prop2 = "Tx1, Tx2, Tx3"
I was expecting omniture to store individual buckets/counters for "Tx1" "Tx2" and "Tx3". But Omniture created one bucket for "Tx1, Tx2, Tx3". I hope there is a way to treat them separately. Ideally I would not like to pass the taxonomies separately in separate prop variables.
I would appreciate if someone can point me in the right direction.
Thanks,
Rag
Actually Omniture does support list-style props, aptly called a list prop. You have to talk to Client Care to enable it for your prop, and you will need to specify a delimiter to use (like the comma). Then you would populate it exactly as you are doing, except without the space between the comma and value. ("a,b,c" not "a, b, c").
An alternative is the list eVar as Racheet mentioned. The difference is that a list prop sends in values and each value is within a prop variable scope, vs. the list eVar values are recorded with an eVar scope.
If you decide to do it w/ a list eVar instead of list prop, read up on how Omniture handles the allocation for them..there are some implications to consider with them only being able to be set to first or last allocation...
Omniture does have the functionality you're looking for from version 15 onwards. Unfortunately it won't do it in a prop. You need to use a slightly different variable type. The variable you're looking for is a list eVar.
Every implementation has three of these available:
s.list1
s.list2
s.list3
Here's the blog post where Omniture introduced them.
You can also find information on them in Knowledge Base article 10549 from inside the Adobe Marketing Cloud interface.

Choose properties to be COLLECTed

How can I choose which properties to be collected in a Cypher COLLECT statement?
I can do COLLECT([profile.name, profile.email]) but then I don't get the properties names.
Say I have ProfileA which is connected to several ProfileB's, I'd like to have returned ProfileA and a collection of ProfileB's where ProfileA-->ProfileB, but only ProfileB.name and ProfileB.email.
At the moment there's no support for literal maps in collections, so we can't build a collection of maps, which it sounds like you want to be able to do.
Your idea of passing a collection to collect should work, and you'll get a collection of collections where the name is always first and the email is always last.
Another option is to do collect(profile.name) as names, collect(profile.email) as emails and have two collections.
Or, you could just have the full nodes. Sorry that there's not a better way (AFAIK)!

Translating choice lists in LightSwitch

Is it possible to translate the display name of choice list items defined for LightSwitch entity properties?
I would like to be able to show different users translated display names in their language when they are viewing the SAME record, and also show translated names in the autocomplete combo box when they are editing a record.
Not really, no. The values are stored in the LSML file & aren't able to be modified at runtime. If you need to translate the values, then you'll need to use a lookup table (possibly by using a custom RIA service) instead of a Choice List.
The advantage of a Choice List is that it's very quick & easy to set one up.
The down side of a Choice List is the lack of flexibility, or even reusability (you have to define the values for the list every time you want to use it somewhere).

Resources