Multiple Choice - predefined answers in Dialogflow - dialogflow-es

Is there a way to give the user a predefined answer such as yes/no. For example, if I ask my user: Are you happy? I want to let him choose from: Yes/No.
So he doesn't have to write any word but clicking on Yes or No options.

Related

How to build a Dialogflow agent with open questions?

I'm new to Dialogflow, I ask for your help to try to build an open question.
I'm doing a customer satisfaction survey and I want to end it with a question like "Lastly, I'd like to know if you have any feedback on your experience with this process"
Here the user can write anything, often I want to thank him and end the conversation.
My flow is the following:
The open question is asked in the response of the intentions:
Q3_opinionservice -custom - yes
Q3_opinionservice -custom - no
Thank you
Receive a text of an open question and end the conversation
You may try and consider below approach.
In this approach, you will add a Custom follow-up intent on each of your Q3_opinionservice -custom - yes and Q3_opinionservice -custom - no.
The Custom follow-up intent will only contain one training phrase (any random sentences you want) and then annotate it as sys.any entity in which it matches any non-empty input as mentioned in this Dialogflow System Entities documentation.
My sample custom follow-up intent:
My sample conversation output:

Dialogflow - Multiple Yes / No Questions not staying in context

I am trying to setup a structure in the Dialogflow console that involves multiple yes / no questions. It looks like something like this:
Agent: do you want to go to Basel?
If User: No -> Agent: Do you want to go to Zurich?
If User: Yes: Great, you chose Zurich!
If User: Yes -> Agent: Great, you chose Basel!
Basically, it keeps asking questions based on something like a location and when the user says Yes, it responds with with the chosen location.
If the user says yes for the first question everything works fine. However, when the user responds with yes for a followup question, Dialogflow still maps the intent of the first question and responds with:
Great, you chose Basel!
Instead of:
Great, you chose Zurich!
In the image you can see my intent structure from the Dialogflow console.
IntentStructure
Does anyone have any recommendations here? I am aware that the mutliple yes / no questions all contain the same examples, but how can I make sure that Dialogflow stays in context?
I will suggest not to keep all your intents as a follow-up intent. Instead, you can manage all your contexts. What you have to do is that create an intent for each location and two follow-up intent "Yes" and "No". If the user responds with yes show the message else add your next question to the no follow-up intent response and set its output context for the new location "yes" follow-up intent. Similarly, you can create a chain.

Dialogflow regain the context after slot filling is canceled with out all the required parameters/slots filled by user

We are trying to build a chatbot for vehicle dealerships. When a user asks for queries like "I am looking for ford 2017 models" etc we have some more slots to fill before we show the user final results. So to handle this we have created an intent with required parameters. We are also providing some custom UI buttons to help the user with the slot filling process. However some times users can choose to give their own input and some times users can enter text other than the slot value.
For example:
User: I am looking for ford latest models 2017 or afterwards.
Bot: Which model are you looking for: We display some options
User: escape
Bot: What is the price range you are looking for: We display some options
User: I looking for something which will suffice for a family of 4.
Here, in this case, the slot filling is broken as the user didn't give the expected slot/parameter. Also, it would be good user experience if we can somehow reply to such human nuances and continue with the slot filling.
EDIT:
We have already incorporated some mechanism during slot filling to handle the cases where the user enters some input other than required slot value. But sometimes this mechanism is not working and some times user might enter a statement which triggers new intent.
How can I handle such cases using dialogflow?
I would recommend not using Dialogflow's built-in slot filling. I've had this issue before and now I just create different intents for each 'variable' I want to gather from the user.
You could still use slot filling if you let the user know what format you're expecting them to answer in. The KLM chatbot does this perfectly, you should check that out.
UPDATE: Here's how you could handle input for different parameters. Whenever a user responds something you don't expect the 'question.invalidInput' will be triggered and there you can remind the user what format you're expecting.
Intent: question
Trainings phrase: 'May I enter?'
Output context: 'await_olderThan21'
Response: 'Are you older than 21?'
Intent: question.yes
Training phrase: 'yes'
Input context: 'await_olderThan21'
Output context: ''
Response: 'Yes, you may enter'
Intent: question.no
Training phrase: 'no'
Input context: 'await_olderThan21'
Output context: ''
Response: 'No, you may not.'
Intent: question.invalidInput
Training phrase: #sys.any
Input context: 'await_olderThan21'
Output context: 'await_olderThan21'
Response: 'Invalid answer. Please reply with yes or no.'
E.g.:
User: I am looking for ford latest models 2017 or afterwards.
Bot: Which model are you looking for: We display some options
User: escape
Bot: What is the price range you are looking for: We display some options
User: I looking for something which will suffice for a family of 4.
Bot *fallback*: Please enter the maximum amount you would like to spend on a car (in dollar)
This way the user knows how to respond and you will notice that you will experience less expected behaviours.
Always try to guide the user in your desired direction.
Hope this helps!

How to capture negative response from user in bixby

I am using input-view for selection and i can see none button at the bottom of the screen.I haven't included any conversation-driver yet i can see the button. How to avoid that? Event if we can not avoid it, how can i add the event-listener on this? If user click or say none, I want to give user a custom message and pass it to other intent. is it possible?
Also is it possible to give user other option if none of the utterances matched with the defined one? for example
User: what is the temperature of Oakland?
bixby: today, it is 73 F in san francisco.
User: I want to buy land on mars?
These kind of question is out of context. how to handle it?
Now in this case i want user to be prompt like "It is not possible for me to get the information, but I can tell you weather forecast of your current location. Would you like to know?" User might say yes or no. Yes would redirect it to the weather intent and no will say thank you.
A "None" conversation-driver is shown when the input-view is for a Concept that is optional (min(Optional)) for your Action. Changing it to min(Required) will remove the "None" conversation-driver.
If you want to keep the concept Optional as an input for the Action, you can add a default-init (link to relevant docs) to your Action to kick off another Action that would help the user provide you a correct input.
Bixby cannot create a path for out-of-scope utterances. The idea is that, since every user's personal Bixby will contain a number of capsules, your capsule will get called only if a user's utterance matches the types of utterances you have trained Bixby to recognize via your training file.

Open dialog, slot filling chatbot

Hi I am creating slot filling chatbot where I would like to ask as much open question as possible at the beginning to make my flow the most similar to the normal conversation.
How can I achieve such a thing in terms of intents. Should I create three separate intents for case 1,2 and 3 and adding context flows in terms of 2nd and 3rd? Please help
For a case like this, you can do them as a single simple Intent that has prompts for parameters/slots that aren't addressed by the user.
First, we'll need a simple vehicle Entity type. Something like this, perhaps:
Once we have that, we can create an Intent and give it a few sample phrases:
We then need to do a few additional things (which are illustrated in the picture by the two orange arrows):
We need to mark the parameters as Required.
We need to give some Prompts for each parameter
With these, the Intent won't be complete until the user has responded to each prompt to fill the parameters. Once the user has given all the required values, it will call your fulfillment.

Resources