I want the bot to recognize any word as #sys.given-name , so I put 30000 random character words into entity but doesn't work - dialogflow-es

I am using dialogflow to make a chatbot.
In my scenario, the bot asks the name of user. If a user answers the name, then the bot call him using the name.
For example, if a user enters name as "I am Jack" then the bot extract Jack as given-name entity and
the answer became Thank you Jack. here, Jack, is from $given-name.
however, sometimes user insert the name as "akjdlfsa", some random words.
I hope this bot can recognize this random words as given-name. So I made 30000 random words using excel and put them in entity list.
So, some words in the list works, but it doesn't work for others. it means, bot does not recognize some random words as name entity.
How can I do more~??
Please help me~~
This is what I did to train entity~~~

Related

Having issues with email and person entities in the same intent

We have an intent which catches a person's name and email. Below is how our training data looks.
The problem is with utterances which contain just name and email, without additional phrases around. As we are using it in SMS conversation, I guess that it could be quite often the case.
For example if user types in "Mark Randel gone#hotmail.com", we will get name: Mark and email: Randelgone#hotmail.com
I noticed that if we enter an exact phrase as it is in one of the utterances in training phrases, we will get the right result, but obviously, we can not add all possible combinations here.
Would it be expected that recognition will improve if we add additional 20-30 training phrases with various just name and email combinations? This would be kind of strange, because, what is the point of system entities in that case?
Has anyone had a similar issue?
In Dialogflow ES, default #sys.email entity allows empty string for extracting email. I think this cause the problem.
You use regexp entities with email regex, so that you might be able to extract only valid email string.
EDIT
In my environment, I created regex custom entity for extracting email.
Entity
regex : [\w-\.]+#([\w-]+\.)+[\w-]{2,4}
Test
input : Mark Randel gone#hotmail.com
output :
parameters
value
person
{'name': 'Mark Randel'}
regex-email
gone#hotmail.com

Difficulties with combined words as entities in Dialogflow

I'm trying to write an intent in Dialogflow that requires the user to fill both a room as well as an object.
I need to determine if the room is part of a house (check in entity 1) and if the object is made of glass (check in entity 2).
In English, for instance, that would result in '[kitchen] [window]', however I have to do this in Dutch, where a lot of words are combined.
Users should be able to say 'the window of my kitchen is damaged', but in Dutch it is more natural to say 'keukenraam', so: 'my kitchenwindow is damaged.
This one word combines location and object, but I have not been able to use one word to fill two entities.
Does anybody have a good suggestion, because I can't find a proper solution for this problem.

Is there an easy way to create a "Movie-name" entity in dialogflow

I want to create an action that takes the name of a Movie or Tv show and returns some details about it.
The problem is that I need to add all the possible tv show names to an entity.
Even then there is the limit of 3000 for the maximum number of entities in an Entity. Is there a way around this problem?
Ideally I would like to give it some sample tv show names and when the user says a new tv show name(one that the entity doesn't contain), it is able to recognise it and pass it on to the intent.
You should create a custom entity, and train it with as many examples as you can. Additionally, mark the allowed automatic expansion, so that dialogflow will be able to recognize the names which you have not defined.
The problem could still be there, that dialogflow might recognize something as movie name which is not a movie name, for that you should have a validation function in your webhook code. If validation fails, you can prompt the user again for correct movie name.

Dialogflow(Api.Ai) Doesn't recognize custom entity

I have been working lately with Dialogflow to make chatbots to do some simple tasks. For instance with webhooks and youtube api where the user ask to show him a video and then the bot just answers with the youtube video url.
E.G.
USER SAYS
Show me Neil young harvest moon
AGENT SAYS
Here you go : https://www.youtube.com/watch?v=n2MtEsrcTTs
I do this by using a custom Entity I called "YoutubeQuery" I checked "Allow Automated expansion" and unchecked "Define Synonyms" then I just added 2 values "Kavinsky Night Call" and "Indigo Night Tamino"
In my Intent I just made a couple of training phrases like these:
And everything works.
Now my issue is with a new Agent which I called Orders
I want just to get Order Id's from the firestore database, but before getting there I'm running in kind of a huge problem
I defined the order's ID entity just like the one with the youtubeQuery. And I added some example Order ID's , I want them all to Start with OD and have 4digits after example (DX0001,DX0009,DX9999)
Afterwards I made the intent
Now unless I give the EXACT order ID's from the traininphrase or the ID examples I defined in the Entity it will always give me a response with an empty parameter OrderID
I start my intent by saying "my order" then I get prompted with "What is your ID?
So when I give an ID that has not been used in the training phrases of the Intent I get an empty value in the parameters like this:
But when I give an ID that has been used in the training phrases like for instance the first one DX0808 it does work...
How can I make this work without adding all the possible order id's ranging from DX0001 to DX9999 in the training phrases or the entity.
I mean it does work for my youtube query, I can put anything there it does "catch" the value. Any help please?
It looks like the required parameter is the problem here, my suggestion would be to:
Create intent to get the order id in one sentence without reprompt (turn off required on the order id) and id is always present, ex: "my id is DX0402". Include training response where only ID is provided like "DL3932", ex. below:
Set other intent for scenario when customer wants to provide the id but it is missing, for ex. customer says: "my id" and make your bot ask for the id as an response ex. "ok, provide me your id"
If you do it, in case user doesn't provide the id, intent 2 will be triggered and after id is provided you'll trigger intent 1.
Hope this makes sense.

how chatterbot is creating the in_response_to and in_response_to_contains list

I want to know after finding the closest match from the text section of the response table how chatterbot is generating the "in_response_to" list and the "in_response_to_contains" list. If somebody could enlight me this then it would be a great help.
The in_response_to list is generated based on previous input statements that the bot receives. So for example, lets say that the following interaction occurs:
User: "Hello, how are you?"
Bot: "I am well, how are you."
User: "I am also well."
In this case, the bot would learn based on how the user responded to it. So "I am also well." is added to the in_response_to list of "I am well, how are you."
For the second part of your question, the in_response_to__contains is an attributed used to tell the chat bot to query the database for statements where the in_response_to field contains a particular response.

Resources