So after scavenging the web, I am unable to find an answer to my problem.
Basically, I want to produce the following result in Alexa, and I want to know if its possible and the direction I should be looking in on how to achieve.
Skill / Intent Init
"Hey Alexa.. ask to find a restaurant near me"
Prompt
"What's your favorite cuisine?"
Response
"Italian"
Prompt
"Are you looking to spend a lot of money?"
Response
"No"
The intent logic goes somewhere in the middle of this
"Okay I found a restaurant near you called
This looks like a fairly standard Alexa custom skill. Most of the Alexa examples and tutorials would show you how to do this. I suggest looking at the Amazon developer site for their Alexa custom skill examples and tutorials, or just searching on "Alexa tutorial".
You will collecting 3 bits of information:
The user's location
The type of food
Expensive
These will need to be persisted between questions, so look at examples that either use a database to store the info (DynamoDB is about the easiest to use) or that persist information in the session object (this would be my recommendation).
You can either ask the user for their location using the built in city slot type, or obtain the address of the alexa device using the device address API.
Good luck. I hope this helps give you some pointers on how/where to start.
Related
I have a smart home dialogflow webhook working from the google actions test console, but when I speak to a google home device, there is no sign that my intents are being recognized. E.g., I enter “Home temperature?” in the console, I can see it calling my webhook, executing my script, and responding with “The temperature is 72 degrees.”
But when I say: “Hey Google, Home temperature” to my google home device, it says my nest device is not registered, or something like that. I.e., it is what it would say if I did not have smart home action intents registered with google actions.
I am unable to find anything in the docs or by web searches which says what I am supposed to do to get my google assistant devices to recognize my custom intent phrases.
Does anyone have this working? The Smart Home integration is not supposed to require a lead in, like “Hey Google, Ask whoever, Home temperature”, Right? That is only for “conversation mode” integrations, correct? My understanding is that “Smart Home” mode does not require a lead-in. Please correct me if that is incorrect…
Either way, my voice requests through my Google Home are not recognized.
Please, any advice for what I am missing or how I can troubleshoot this?
Thanks!
P.S. I'm new to Stack Overflow, and I didn't find this "dialogflow" group until posting in another group. So I am reposting here. Sorry if this is redundant. I could not find how to delete the original post...
It sounds like I was wrong about the "Hey Google, talk to ..." requirement for Dialogflow.
The "Smart Home" mode does not preclude this. You cannot just say, "Hey Google, home temperature?", you have to say, "Hey Google, ask [my dialogflow app], home temperature?"
Furthermore, unless you Publish your app, the response will always say, "Alright, here's the test version of [my dialogflow app]...
Between the two, it pretty much ruins it for me... Off to the drawing board.
I have been working with Google Dialogflow to create a Google Assistant experience.
My GA Action is to Raise Support tickets and those tickets are raised in our system via API.
We ask the user to describe the Issue they are facing, We have used a fallback Intent to capture the Issue/Ticket Description(Since the reply can be any free text, is this the best way to capture free text?).
Once the user gives a description, A webhook is called and the results are sent to our backend to capture.
We have noticed that when the user uses the words "not working" as a part of the issue description, it always calls the welcome intent, instead of going to the follow up Intent. If the user describes the Issue without using those words, it works fine. Below are 2 different responses.
I personally feel that this is a bug in GA, is there any way to solve it?
I think you're doing some things wrong. I don't have enough information to understand 100% what you are doing, but I will try to give you some general advice:
A fallback intent is used to 'fall back' to this intent when a user asks something that is nowhere provided in one of your other intents. That's why your fallback intent has the 'input.unknown' set as action. It will be triggered when the user gives some input that is unknown for your application. F.e. I don't think your '(Pazo) Support Action' will provide an answer if the user asks to book a plane to Iceland, so that's when your fallback intent comes in to give an answer such as 'Sorry, I can't answer that question. Pazo is here to give you support in... What can I do for you?'
Your user can either register a complaint or raise a support ticket if I'm getting this right? I recommend you to make two seperate intents. One to handle the complaints and one to handle the support tickets.
Before developing advanced actions with a seperate webhook and a lot of logic with calling an API etc., I recommend to go through the documentation of Actions on Google:
https://developers.google.com/actions/extending-the-assistant
Say I want to respond with "Okay xxx" or something of the sort without account linking.
You could try asking the users's name in the first session, and then record it as a session attribute to access later. I recommend going through the Alexa tutorials found here: https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs
Saving session attributes is covered under "Persisting Skill Attributes through DynamoDB."
Hope that helps somewhat.
During our testing, we were unable to complete at least one of the behaviors or actions advertised by your app. Please make sure that a user can complete all core conversational flows listed in your registration information or recommended by your app.
Thank you for submitting your assistant app for review!
During testing, your app was unable to complete a function detailed in the app’s description. The reviewer interacted with the app by saying: “how many iphones were sold in the UK?” and app replied “I didn't get that. Can you try with other question?" and left conversation.
How can I resolve the above point to approve my Google Assistant action skills?
Without seeing the code in question or the intent you think should be handling this in Dialogflow, it is pretty difficult - but we can generalize.
It sounds like you have two issues:
Your fallback intent that generated the "I didn't get that" message is closing the conversation. This means that either the "close conversation" checkbox is checked in Dialogflow, you're using the app.tell() method when you should be using app.ask() instead, or the JSON you're sending back has close conversation set to true.
You don't have an intent to handle the question about how many iPhones were sold in the UK. This could be because you just don't list anything like that as a sample phrase, or the two parameters (the one for object type and the one for location) aren't using entity types that would match.
It means that somewhere, either in your app description or in a Dialogflow intent(they have full access to see what's in your intents) you hinted that “how many iphones were sold in the UK?” would be a valid question. Try changing the description/intents to properly match the restrictions of your app.
I'm trying to figure out the best way to create a skill that allows a user to answer questions within a skill. Here's the flow...
Alexa open 'skill'
Alexa: How many planets are in the solar system?
User:
Code: collect response and store to a db
Alex: ask Question 2
User:
Code: collect response and store to a db.
I'm stuck on how to collect the answer (the voice response) from the user and then move to the next question in the queue? I do know how to save records to a db.
Does anyone know of any good examples i can follow?
For each of the pieces of data that you want the user to supply, you should set those up as a "slot". Use the new skill builder tool to set up the intent, the slots that go with it, and the prompts for those slots.
You can then "delegate" the dialog to Alexa who will prompt the user for each slot value in turn, and you'll get a request to your skill code with all the slots populated once she is done. There's detailed documentation here which I hope will help https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/dialog-interface-reference but for me, once I understood that I needed a slot per answer, I was able to follow the documentation and get my skill working.