Not Detecting Parameters Other Than Provided In The Entity

403 Views Asked by At

I am trying to create a Google Action for Rocket Chat and username and channelname are important parameters to complete an intent. However when I try saying other than the listed entity values, Assistant does not recognise it.

I am using Dialogflow V2 for development and I have already added around to 30-40 entity values and training phrases but only ones that are listed in entity slot values list gets recognised while trying other ones just give a blank value in response. I have attached some photos of my intents and entities along with response for both listed and unlisted value below.

Screenshots

Username Entity Slot Values

enter image description here

Channelname Entity Slot Values

enter image description here

Sample Intent

enter image description here

Parameters used in an Intent

enter image description here

Response On Using A Listed Parameter Value

enter image description here

Response On Using An Unlisted Parameter Value

enter image description here

I tried using required setting in parameters with setting prompts if a value is not passed but it simply reprompts 3-4 times and then the assistant crashes.

2

There are 2 best solutions below

0
On BEST ANSWER

An entity type is intentionally a fixed enum. If you never created defined 'actions developers' as a channel name type, it is not going to be processed as an entity.

If you want to handle any channel name, you should replace your entity with the type @sys.any. This will allow you to capture any value and process it.

When using this, be prepared to do a lot of testing and create a lot of training phrases in order to ensure that you only capture the text that you want to capture and nothing surrounding it.

enter image description here

0
On

You may consider to use composite entities. You can create new entity which contains channelname entity and sys.any entity. For example, you can create an entity named "CreateChannel" and insert these entities create @sys.any:anyChannelName and create @Channelname:Channelname as value.(Don't forget to disabled "Define synonyms" button) Then you can use this entity as training phrase.

Now, you can get any value as parameter whether it is "channelname" entity or not and can be sure that user wants to create a channel.

For more information:

Composite entities