I need to add a confirmation entity so I get a 'Yes' or a 'Cancel' in the parameters of a certain operation in dialogflow (api.ai). Say a user is purchasing a coffee, I'd ask details about the coffee and the quantity and finally i need a confirmation, what entity should i apply for that? any tutorial that refers to the same will also be helpful.
3 Answers
DialogFlow has a concept called a follow-up intent that you could use in a case like this:
You would create a "yes" follow-up to capture if the user wants to proceed, a "no" to cancel, and a "fallback" to explain to the user what is happening and what are acceptable answers.
If you are working with Actions on Google, you could also use askForConfirmation which is done completely from within your webhook code.
You can choose the most appropriate way depending on how your code is structured.

- 3,203
- 18
- 19
-
How you're actually supposed to use askForConfirmation is a mystery – Mingwei Samuel Dec 05 '17 at 08:32
The other way would be to create a confirmation entity and prompt for it in your intent.
Create entty: Create 2 rows, one for yes and another for no, with the appropriate synonyms.
Adding it as a parameter with the entity you just created, and add the appropriate prompt.

- 1,448
- 2
- 24
- 37

- 21
- 1
An answer for who jump here trying to obtain this confirmation behavior with Actions on Google.
You can take a look at the documentation for Confirmation helper of Actions SDK for Node.js.
The solution is to setup an intent with the actions_intent_CONFIRMATION
event in DialogFlow in order to retrieve the user response. My advice is to check how you configured your intents and use this method, otherwise be sure to create the follow-up intents with the desired context lifespan.
Example from documentation:
app.intent('Default Welcome Intent', conv => {
conv.ask(new Confirmation('Are you sure you want to do that?'))
})
// Create a Dialogflow intent with the `actions_intent_CONFIRMATION` event
app.intent('Get Confirmation', (conv, input, confirmation) => {
if (confirmation) {
conv.close(`Great! I'm glad you want to do it!`)
} else {
conv.close(`That's okay. Let's not do it now.`)
}
})
See also this question.

- 76
- 5