I am working on Dialogflow. Is there is any way to programmatically access invocation on Action on Google. I am trying to change the voice and display name of the google assistant from my code. Is this possible ?
Console Screen
When using Dialogflow, there is no way to programmatically change the invocation name and voice of the Action.
If, on the other hand, you were to use Actions Builder to build your action, you could change the Actions SDK LocalizedSettings for both the displayName and voice fields in a YAML file and upload that programmatically.
Related
My setup:
I'm using actions-on-google to create a custom action for google assistant, every intent is a fallback in dialogflow that is then redirected to my server where I check the intent with a custom nlp engine and then respond to it, using the actions-on-google package.
The issue:
But when an intent is suicidal, for example: "I want to kill myself", google stop the action and give a response instead of letting my custom action handle it. Is there a way to avoid this?, it also happens with certain words like "Save" in that case google stop the action and ask me if I want to save an event or whatnot.
Can I override this behavior?
You're running into a "feature" that Google calls "no-match yielding". In some cases, if you're using a Fallback Intent in Dialogflow, and the Google Assistant itself can handle the question - it will do so.
To avoid this you can use regular Intents that match the #sys.any System Entity.
However, if all you're doing for everything is sending it to your NLU, then you don't need to be using Dialogflow at all. You can just use the Actions on Google v2 to send all TEXT Intents to your NLU for processing.
I am trying to show welcome text when user initiates the chat i.e. without any action from user. How to achieve this?
I tried NPM dialog flow or #google-cloud/dialogflow to detect intent to trigger the intent using node.js. It is sending the query and showing the fullfillment text in console but not on updating the UI like when user interact with bot.
Thanks.
If you're using Actions on Google, then your welcome Intent will be called when your Action is first invoked. The user wouldn't say anything besides "talk to action name".
Using the Actions on Google test emulator, this is provided as a button.
If you're using the Dialogflow tester on the right side of Dialogflow, you need to enter one of the invocation phrases for the Welcome Intent, but these phrases aren't typically used as part of the Action itself.
I am completely new to the "Actions on Google" world, but following some tutorials (like this) i have already achieved good results.
My test
With Google Assistant and/or Google Home mini send my commands to a personal nodejs online server.
To do this:
i have created a new project on https://console.actions.google.com/
selected conversational option
selected create action / custom intent option
from Dialogflow i have personalized the Default Welcome Intent and created a new Intent with the Fulfillment option set to Enable webhook call for this intent
And obviously, from Dialogflow > Fulfillment, i have enabled the Webhook option (with the url of my nodejs app), and not the Inline editor.
This procedure works, when my app recognizes my custom intent, the answer is sent to my nodejs app online.
My problem
The procedure works, but i always have to do 2 steps before i can perform my action:
1) Hey Google, talk with "nameofmyapp"
2) Say the command
My goal
Execute my command directly without always having to do this 2 steps.
Absolutely! Google calls this "deep linking". With this, you'll be able to do something like
Hey Google, ask nameof myapp to command
See the documentation for details, but in short you'll
Make sure you have an Intent for the command in Dialogflow, with several possible phrases that can be used to trigger it.
These phrases should be what you'd say under "command" in the example above - you'd omit the "to" part.
Go to the Integrations section in Dialogflow, under the Google Assistant integration.
In the Implicit invocation section, select the Intent that you'd like to allow as a deep-linked Intent.
If the command takes action and then should quit, make sure either you have set this in Dialogflow or your fulfillment calls app.close();
So I was using Gmail Google Action on my Assistant device and One thing that I found particularly intriguing was that when a user has given its message and email, after that assistant gives options for change or adding the message. That means on selecting those options, assistant will change the value of message entity or edit it as per user command, without re-enabling the whole intent.
My question is how can I implement this functionality in my Google Action. Is there any particular function made by Google that I can use or do I have to create one from scratch ?
Gmail's integration is a bit different than the way a third-party developer would do it, but you can save user input from the current session and modify it later on in your conversation. In your Action, this wouldn't be just one intent, but a few that would handle the work of modifying some session data and finally using that data to complete the user's original action.
Twilio provides some documentation that explains how to create interactive voice experiences, for example, how to prompt for key-press from the caller and offer different menus or perform actions based on it.
However I cannot find any information on how I might be able to fetch data from a third-party service based on user input.
For example, suppose a user enters his zipcode into the keypad, I would like to fetch the weather from a weather API and return it to the user in speech form.
Is this possible? And if yes, how?
Very possible. You can take a look at the documentation below but the key widget is the HTTP Request Widget.
Studio Widget Library
https://www.twilio.com/docs/studio/widget-library#http-request
The relevant line is:
"JSON: If your HTTP Widget returns valid JSON, you should be able to access it via widgets.MY_WIDGET_NAME.parsed" variable.
Studio User Guide - Working with Variables
https://www.twilio.com/docs/studio/user-guide#working-with-variables