I'm new to dialogflow and using version 2. Configured a project and integrated into Facebook Messenger.
One of my intent has a response, "Where does this event happening?", and there is a followup intent which expects an address or location.
So I configured the followup intent with a parameter of entity #sys.location.
But this not working always.
For example, if the user gives "Thiruvananthapuram" (A city in Kerala, India), it is recognised as a geolocation. But if someone gives "Trivandrum" (a second name to the same city, recognized by Google), it's not recognised as a geolocation.
All I need in my webhook server is the latitude/longitude of the location, which is entered by user. So what are alternatives, or am I doing it wrong?
Note-1 : Used #sys.address, but there is same issue.
Note-2 : I'm thinking, there is a better way by giving #sys.any , collecting that info in webhook and accessing Google's Geocode API for lat/long. What do you think?
Check the history and see what Speech to text is giving for "Thiruvananthapuram". It may be an issue of recognising the speech correctly. #sys.location which will be similar to issue with recognising Non-English names using #sys.given-name.
Related
I am writing an app in dialogflow CX which suggests locations to a user based on position and other data about the user.
The flow for the user requesting a location works by sending dummy coordinates to my python flask using a webhook. The flask sends a location back which gets presented to the user. So far so good.
My current objective is not sending dummy coordinates but using the clients real location.
This is my first time working with dialogflow CX and I've also never used any other Google service like actions on Google or dialogflow ES.
After some research I only found old documentation on how to extract client information using dialogflow ES. Some other documentations claim it is now only possible with actions on Google.
So I tried using dialogflow ES documentations and got rich content working.
Sadly the "old" solution for getting user data using dialogflow ES helpers did not work for me or I simply used them wrong. Any help, solution or clarification on how to solve this problem or if it is even possible to do this in dialogflow CX is greatly appreciated for I am getting more confused by the documentation than actual help!
And what device is your user in to get that info?
I asume you could ask the customer for his location as well.
I recommend you to check the ES connector of Voximplant, that would allow to have that flow very easily over chat or voicecall as well.
You can pass any metadata to the webhook and provide the flutter response in the chat.
I mean, instead of using the DF fulfillment, you use Voximplant that is easier to work with.
Here a tutorial to connect DF CX to Telephony and
How to have a custom channel to be responded by DF bot.
Let me know if you have questions about this.
I have made a query flow in dialogflow and it has four intent and in the last intent it uses a webhook to get data from server side and displays the result. It is trained automatically and works perfectly in dialogflow console returning response and query answer. The issue is it does not work when I use embedded url. It fails to recognize the name intent and asks (Can you repeat again or fallback intent). I've removed all intents and made query again, there is no similar name intents. Yet it works well in console and not in embedded url.
For the webhook part I've used node.js service.
Please help in this issue.
By 'embedded url' if you mean Dialogflow Web Demo (DWD), you should keep in mind that DWD can be used only for simple text messages. It does not support messages from webhook or even rich responses. However, if you steel need a web widget to embed your bot to your webpage you either create your own or you should use third party solutions (like Kommunicate). Here's the link regarding the limitations of DWD.
I am trying to wrap my head around using Dialogflow for developing and integrating an SMS chatbot with our custom CRM. The creation of an Intent is pretty powerful and straight forward. However, I am trying to understand best practices for something. If I have an intent used to return the price of a service at a certain location, I can model that very easily within dialog flow. However, when an SMS message comes in, it will be from a new customer or a known existing customer for a certain location. For existing customers, we already know the location and therefore don't want them to have to specify the location value in the intent. Prior to sending the inbound SMS message to the client API to match the intent, how can I pre-set the "location" parameter value in the intent so it does exists even if that inbound SMS message did not include it? For example a known customer in Dallas would just have to say "how much is a xxx" instead of "how much is a xxx in Dallas".
Can you use the API to set a parameter value prior to calling the API to try and match the intent? If so, how do you get do that without a session ID? The reason the "location" is needed is because when we get to the fulfillment, the prices for the same service are different based on the location so I will need to be known but we don't want to make existing customers say the location.
Maybe another option is to have a Location intent with an event that we can trigger through the API. this would have an output context on it called location and fulfillment that sets the parameter value. But even then I struggle with understanding how to pass in values like location, phone number, etc into dialogflow from the calling application so dialogflow has those parameter values to use in fulfillment.
Reading documentation, watching videos and starting to test client API v2
This is certainly possible. What you would want to do is use the Dialogflow API for this. Here you can find the languages for which Google has created client libraries: https://cloud.google.com/dialogflow/docs/reference/libraries/overview
As soon as you have any 'if' in your code you should use the fulfillment: https://dialogflow.com/docs/fulfillment
How I would handle this:
Client sends SMS
You check in your back-end if this user is known. If known -> don't ask location, else you ask the location
Match the user query against the Dialogflow client library
Dialogflow will return the intent if (any) is matched
You should define and implement any logic before calling the Dialogflow library.
I have on Dialogflow agent and I want to sync it with google assistant.
For user says section, I want to use Template mode. It works fine in api.ai, but when I click on option 'See how it works in Google Assistant', it throws error like 'Request contains an invalid argument.
Query pattern contains invalid characters in custom intent '999154f0-830a-480b-bdc9-2e9e89f45cdd': $SchemaOrg_Color:color $SchemaOrg_Text:query $quantifier:quantifier #sys.unit-currency:unit-currency $Filters:Filters'
After checking each and every annotations, I came to know that #sys.unit-currency:unit-currency is creating issue. Its working with api.ai agent but not with google assistant.
I've attached screenshot of intent. What's need to be corrected? I went through many blogs, but not able to find any help regarding this.
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.