The setup:
My 'Default Welcome Intent' asks the user "Choose between Amsterdam, Berlin, Frankfurt, London".
Then I've created a custom followup intent.
I've also created an entity called 'location', which I've added the four cities to.
My followup intent looks like this:
Here's the problem:
When I run the app in Actions on Google simulator, it always triggers the "Default Fallback Intent", and doesn't trigger the followup intent.
Here are some more screenshots of my setup, as requested in the comments:
The issue was me not reading the documentation properly. I've stupidly skipped the part where it explains how to accept card responses.
app.intent('Carousel - OPTION', (conv, params, option) => {
const SELECTED_ITEM_RESPONSES = {
'SELECTION_KEY_ONE': 'You selected the first item',
'SELECTION_KEY_GOOGLE_HOME': 'You selected the Google Home!',
'SELECTION_KEY_GOOGLE_PIXEL': 'You selected the Google Pixel!',
};
conv.ask(SELECTED_ITEM_RESPONSES[option]);
conv.ask('Which response would you like to see next?');
});
https://developers.google.com/actions/assistant/responses
Related
I have a "Welcome" intent in Dialogflow, which shows the user various options such as "Breakfast Menu" or "Dinner Menu". I'm thinking about adding an option so that when a user misclicks one of the menus and they type "Return", they can be sent back to the options shown in the "Welcome" intent. How can I do this? Thanks in advance.
You can use the follow-up intents to manage this kind of behavior. Specifically the predefined "previous" child intent.
I need some help here. I have a google assistant food recipes bot with the following intents:
[GET_RECIPES_BY_NAME]
[GET_RECIPES_BY_CAROUSEL]
-----[GET_OPTION]
So, when the user says "I want a chocolate cake", the dialogflow invokes the [GET_RECIPES_BY_NAME].
When user says "See menu", the bot shows the carousel. But, when the user taps the item, the dialogflow is invoking the [GET_RECIPES_BY_NAME] too, not the [GET_OPTION].
It is using/returning the title instead of the option/key.
[GET_OPTION] intent was set as followup with the context and event actions_intent_OPTION.
The flow is a little bit more complex, but I revised it to make it more comprehensible. All the intents handles are in the fulfillment.
I tried many solutions: [GET_OPTION] as followup, as in the first level, deleting and recreating all the contexts in fulfillment....and so on, and nothing.
An important detail: recipes that don't not have the training in [GET_RECIPES_BY_NAME] call correctly in the [GET_OPTION].
My question is this: If I set any followup intent and set it with the event actions_intent_OPTION, shouldn't this always be invoked when I tap the carousel item?
I am trying to build the dialog flow app with v1 API support and in my case, my test app gets crashed or stopped when non-utterance words spoken by the user even though I have a fall back function in my agent, it doesn't get triggered.
intentMap.set('Default Fallback Intent', fallback);
agent.handleRequest(intentMap);
function fallback(agent) {
var conv = agent.conv();
// conv.ask(`I didn't understand`);
conv.ask(`I'm sorry, can you try again?`);
agent.add(conv);
}
I didnot configured/added any intent on dialog flow intents for Fallback intent except my Welcome Intent.
[Update] Fallback intent configuration on dialogflow
Based on your screen shots, the issue is that you didn't actually create a Fallback Intent. You created an Intent with the "Highest" priority to handle phrases, but with no phrases to match. So it doesn't match anything.
Fallback Intents are a special Intent that match when nothing else matches for the contexts that are active. To create a Fallback intent, from the Intents listing, select the three dots in the upper right corner
Select "Create Fallback Intent"
You will notice the page is slightly, but just slightly, different. Set the name for this Fallback Intent (to whatever you want, but it will need to match what you use in your code exactly), turn on webhook fulfillment, and save.
You need to enabled fulfillment for the default fallback intent:
go to Dialogflow's console (https://console.dialogflow.com)
Go to the default fallback intent
select the fulfillment section
Click the switch indicating that the intent should be fulfilled
I'm trying to get feedback from the user on every answer given by the chatbot. Is there a way I can show a thumbs-up and a thumbs-down icon at the end of every conversation (as of now they are all FAQs) so that I can capture if the user is satisfied with the answer or not?
I've used the suggested actions feature:
var msg = new builder.Message(session)
.text(response)
.suggestedActions(builder.SuggestedActions.create(session, [
builder.CardAction.postBack(session, "thumbs-up", "๐"),
builder.CardAction.postBack(session, "thumbs-down", "๐"),
]));
session.send(msg);
I am facing a problem with listening to User Selection when we show a carousel. We are using askWithCarousel with dialogFlow and listening to click of a carousel item using actions_intent_option event. When a carousel is displayed to user, assistant starts listening to user input using mic, if mic gets a random input from user (which doesnโt match any of our synonyms for the carousel items) and then the user taps on any carousel item or says any of the synonyms, actions_intent_option event is not getting fired. It works fine if this interaction is immediately followed by showing of carousel. Else, it will take carousel title as user input and resolves to a different intent.
Not able to get the id of the carousel item because of this. Is there a way to disable mic or emit actions_intent_option even when the user clicks on carousel item later. Please help with this flow.
Selection events are only emitted, as you've discovered, right after the carousel or list has been sent to the user.
I'd recommend setting up a fallback intent to check for the titles of the list items or prompting the user with a carousel or list again.