dialogflow large number of potential parameter values - actions-on-google

My Google Action delivers information to college students. For example: Who is the Title IX Coordinator?
To answer this question, we need to know the college the student attends. There are 2700+ colleges in the U.S. Many have the same name or similar sounding names.
So, #college-name is an entity in DialogFlow. Is there a way to import all 2700+ college names into DialogFlow as potential values for #college-name?
Also, is there a way to use a listbox with DialogFlow / Actions on Google with Google Assistant to ensure the correct college is identified?

Dialogflow has the ability to import entities from a file either in a CSV or JSON format.
There isn't a listbox visual widget, although you can use a List with similar names or Suggestion Chips to narrow down their search.

In addition to importing entity values from a file you can also push them to Dialogflow programmatically via the Dialogflow REST API. This API manages the agent itself and is thus different from the Dialogflow Webhook, which calls your fulfillment service.
The specific endpoint you would use to update entity values is projects.agent.entityTypes.entities. Dialogflow also offers SDKs for Python, Node.js and other languages. This is probably the best option if you have a large number of values, as it allows you to setup some kind of pipeline from your data source to Dialogflow and schedule it to update the entity on a regular basis (i.e. with an AWS Lambda function or a cron job that runs once a day).

Related

How can i create action using real-time data after Conversational Actions sunset

I am working on an Alexa Skill that provides real-time road information like road closures.
In order to make this work with Google Assistant, I was creating Actions using Conversational Actions. However, when I recently completed the Actions, I learned about the "Conversational Actions sunset overview".
I am currently searching ways to continue developing this feature after Sunset. My requirements are as follows
Users can obtain information by specifying the desired route among
multiple routes in a common operation.
The information provided needs
to be updated in real time, every 5 minutes.
As the method to provide the information, I assume HTTP request, JSON, HTML, etc.
Any help would be appreciated!
Thank you

Is there a workaround for launching Google Actions for countries where Transactions API is not available

Recently, one of our Actions was rejected because it allowed the user to book an appointment but did not use Transactions API. So we had a few questions regarding the review process and the policy guidelines for Actions that use Transactions API.
Is there a way (by modifying the codebase or contacting the support) using which you can launch your Action for countries where Transactions API is currently unsupported?
Can you launch different (with and without Transactions API) versions of a single Action for different countries?
If someone is offering services that require enablement of Transactions API, does it limit the location targeting to only include the countries where the API is currently supported?
Is there a way (by modifying the codebase or contacting the support)
using which you can launch your Action for countries where
Transactions API is currently unsupported?
If you are knowing where the Transactions API is supported you can select your target county while Giving it for Approval from your action console.
Can you launch different (with and without Transactions API)
versions of a single Action for different countries?
As the invocation name will be chaos You can not upload your action with different critearea with different location.
Action store is same like Play store or App store where you can upgrade your action or app but can't duplicate in same manner.
One-word names are not allowed, unless the name is unique to your brand or trademark within the target country. Instructions to request an exception for individual countries are below. Compound words broken into multiple words will
not circumvent this requirement, for example key board counts as one word.
Two-word names are not allowed if one of the words is a definite article (the), indefinite article (a or an), pronoun (like my), or preposition (for, to, or of). For example, your name should not be a bicycle, an espresso, to amuse or for fun.
If someone is offering services that require enablement of
Transactions API, does it limit the location targeting to only
include the countries where the API is currently supported?
For an alternative solution you can use web payments where you can do some payment and give callback to your server. (i think thats allowed in most countries if you have global payment options available)
Actions that enable Transactions aren't currently available on Android (Go edition) devices.

Using "speechBiasingHints" with Dialogflow Webhook

First time posting, so feel free to give me feedback if I could improve something about this post... Now on to my question.
I am currently developing a Google Action, the Action will allow the user to define important events, such as Bob's Birthday or Fred's Graduation, and save data about said events. Later, the user will be able to ask for info about the event and get it returned back to them.
I am using the Dialogflow API with "Inline Editor" fulfillment to keep it as simple as possible for right now. The problem I am running into is this, the event has an entity type of #sys.any, so anything the user says is excepted as valid input. I would like some way to bias towards events I already have stored for the user however, so that they are more likely to find the event they are looking for.
I found another answer on here discussing speech biasing (What is meant by speech bias and how to use speechBiasHints in google-actions appResponse) which defined speech biasing as the ability to"influence the speech to text recognition," which is exactly what I believe I want. While that answer provided sample code, it was for the Actions SDK, not the Dialogflow SDK, which I am using.
Can anyone provide an example of how to fill the "speechBiasingHints" section of the ExpectedInput response of the Conversation Webhook using the DialogFlow Webkook?
Note: This is for a student project, and I'm new to developing Google Actions and still very much learning about everything that is capable with Google Actions. Any feedback or suggestions are very welcome.
The question you link to does quite a few things differently than the approach you're taking. The Action SDK provides more low-level control, but doesn't have much Natural Language Processing (NLP) capabilities, which Dialogflow provides.
Dialogflow handles biasing a little differently through the use of Entities, so you don't need to control the speech biasing directly, Dialogflow can handle that for you, to some extent.
Since each user may have a different event name, you'll probably want to use a User Entity, which is an entity you define and then populate on a user-by-user basis through Dialogflow's API. In your sample phrases, you can then use this entity name instead of #sys:any, or create another set of phrases that use this entity in addition.

How to deploy and maintain multiple chatbots agents

This post follow this one where I explain one of my problems. Currently, I have to found a way to publish and maintain a high number of agents. I am not limited to Dialogflow.
I need some integrations like the google assistant (text and vocal), facebook messenger, telegram and if possible others like Slack, Twitter, Twillio, Alexa...
Okay, so I have already produced some agents with Dialogflow to understand the technology. I also read some pages of the actions-on-google documentation and I did'nt found anything on this subject. So basically I have to implement this:
Deploy around X agents through differents integrations instanciations. I mean I really need X facebook contacts, X google assistant apps, etc.
Maintain one code-base but have the ability to add localized-features like the name of the chatbot, currency or just block some intents (for Dialogflow example but in a more generic way, dialogs triggers).
It is just possible ? I am thinking about a web UI that can handle some facilities like the deployment, the monitoring and the maintenance. I am wondering if it's not overkill and if a more easier solution than mine exists already.
It isn't currently possible to create agents automatically, although Dialogflow's V2 API provides a mechanism to update agents via JSON once they have been created; see the restore and import endpoints.

Create a chatbot for stock market using IBM Watson

I would like to create stock bot which can have basic conversation and give me stock price in conversation.
To get stock price i am using yahoo finance api.
For basic conversation i am using
IBM watson conversation api
I have also used
IBM NLU (natural language understanding) Api
to verify different company names asked in different manner but i am not getting expected result.
For example if i search
"What is price of INFY?"
then it should give me correct answer and should filtered out as my action should be to pass INFY in yahoo finance api. This should also work if i change format of question asked.
Below is the flow chart setup which i made on node-red panel of bluemix (IBM).
Could you help me to find out exact api's and flow which could help me achieve my goal.
This is a pretty big one, but at least some first impression comments...
Watson Conversation Service is already integrated with NLU component - the intents and entities TAB. The company names could be extracted from the input text with the use of entities and entities synonyms. Drawback here is that the user needs to list all the possible variants of how the company name can look like, but on the other hand, the entities specification can be imported in the Conversation through a csv file.
In general the integration of Watson Conversation service and some 3rd party services needs to be done outside the Conversation service - as it as of now - does not explicitly support calling of 3rd party APIs, so the node.js solution here seems a sound one. What you need to specify is how the integration of WCS and 3rd party services will look like. The general pipeline could look like:
user inputs text to the system
text goes to Watson Conversation Service
the intent and company name is extracted in WCS
WCS sends text output + sets a special variable in the node output field such as "stocks" : "Google" that will tell the node.js component that sits after the conversation service to find out and include stocks market value of Google inside the output text
Now - back to your solution - it might make sense to have also a dedicated NLC service that will be used only to extract the companies name in the system. However I would use this only if it would turn out that e.g. entities in WCS service are not robust enough to capture the companies properly (my feeling here is that for this particular use case the entities with synonyms might work ok).