Google Assistant ends conversation - actions-on-google

We're currently testing our chatbot project for Google Assistant/Google Home.
In the middle of the conversation, when our bot still has "things to say" (our chatbot flows are based on several steps and not just one question and one short answer), Google Assistant throws you out of the chatbot and goes back to the generic Google Assistant. Does anyone know if this is a feature of the testing version or if this is caused by the way Google Assistant works?

there is a 5 second timeout on Dialogflow fulfillment responses so if it takes your chatbot more than 5 seconds to respond, it will show the response that is defined in Dialogflow

There are 3 things that are most probably causing your app to exit in the middle of the conversation.
You webhook/fulfillment is encountering an error that is not handled.
The response that you are returning is exceeding the max limit of characters that Google supports.
A timeout is happening for your webhook because DialogFlow will wait for 10 seconds for your fulfillment to return a response or else it will end the conversation on its own.
Hope this helps.

Related

Amazon Lex - Enabling responses from Slack mentions

I am creating an Amazon Lex bot as a POC to see what it can do. I have a version of the bot working where I can direct message it and receive responses back. The logging for both Lex and Lambda shows the conversations that are occurring.
I decided to move forward and attempt the same conversation by inviting my bot to a public channel I created. In doing so, I added app_mentions:read, channels:history, chat:write, and chat:write.customize permission to my bot via the OAuth scopes in the app configurations.
When trying to mention my app, the amazon lex logs do not show a conversation is occurring nor is the lambda function executing. It appears that slack is either not receiving the request or the request never calls lex, to begin with.
Does anyone know what is required for slack configurations to at minimum have it call Lex? I don't know if it is reading the mentions though I would think so because it has permissions.

Dialogflow follow-up intents not working? "Action" in training agent says "Not available."

I'm trying to create a Facebook chatbot that only responds initially to each unique inquiry. I have about 25 intents with unique responses triggered by unique training phases. These are working fine.
However, I ran into the issue where the customer would continue chatting and the chatbot would continue responding. Basically, every time the customer sent something, the chatbot would respond, resulting in an infinite loop which frustrated the customer.
I saw a video that said creating a "follow-up intent" under the intent and setting the lifespan of the output context to 2 would solve the problem. I tested it with my default welcome message and it worked. For example, if the customer said "Hi," chatbot would respond "Hello." If again, the customer said hi in that same conversation, the chatbot would not respond.
HOWEVER. When I applied the follow-up intents to the other 24 intents, they did not work. Only the default welcome intent was working correctly. I set all the lifespans to 2, made sure to save, and even refreshed the page. In the training agent, I noticed the action for the working welcome message was "Fallback.Fallback-fallback" while the action for the non-working 24 other intents was "Not available."
Does anyone have a solution to this? Or an alternative solution to the issue of looping conversations?
Thank you.

What could be the reason for a Google Action with external endpoint (API) to work on the Actions Console Simulator, but not as deployed?

I am new to the whole creation-process of Google Actions.
I created an Action with the new Action Console.
It has an fulfillment endpoint to my server (as example: www.mypage.com/api).
For testing purposes it has no authentification, so it generates a public API response.
Said API generates a simple JSON response based on a send event handler.
In short: Action onEnter sends handler to API, API queries SQL database and sends the response back to my Google Action that then "speaks" the SQL result.
The result with the Actions Console Simulator is:
Testing with "Smart Display device: everything works.
Testing with "Speaker (e.g. Google Home): everything works.
Testing with "Phone": main intent is invoked and text is shown but does not get spoken.
So i tested the command "Hey Google, talk to the unicorn app" directly on my smartphone.
Here **everything works fine ** as said smartphone has the same e-mail like the one on my Action Console account: it recognizes the main invocation command and when i ask by voice to get the data, the data is received from my server and spoken.
So something is wrong with the "Phone" device in the simulator. This has been confirmed by me from other users saying that they often have trouble with the simulator function correctly.
I then deployed my Action.
It was reviewed and approved.
A few seconds later i received an auto-email saying that there were too many errors with my app, asking me to check its health status. I did so and in the Health tab, i can see that it has an error but it does not show me what the error is.
THEN I CONTACTED A ACTIONS-ON-GOOGLE EXPERT
They helped me a lot into the right direction but could not go deeper into the problem as my connection (the endpoint API) is outside of their servers.
So i ended with their tip on checking the Google Cloud Logging Console.
As said Logging Console is also new for me, i learned on how to query my results but:
How can i query for the so called "is_health_check" flag?
I am asking this because the Google Expert recommended me to search for said flag but i do not know on how to query it.
Sorry for this ultra-long entry but i am trying to be as transparent to you as possible, as i have been trying this out for several days now.
Thanks in advance for your time, ppl!
So the error is simple once that you know how Google handles the external webhooks. Thanks to the help of 2 Actions-On-Google Experts i was informed that Google pings your external Webhook from time to time.
As soon as they get an error as result from said ping, the Action will be deactivated from the Assistant until a new ping response sends that everything is fine again.
My problem was that after deploying the action and while it was under reviews, i continued to work on the code on my server. While coding, the Google server pinged and received an error code.
My fault, but at least i learned the thing about pinging your action!

Google Assistant and Dialogflow requests Quotas

According to this documentation Google Assistant requests to the Dialogflow (Standard Edition) have the following limits: 180 requests per minute.
I'm developing a Google Assistant action which is a quite interactive. For a single user it may take calling up to 10 Intents (requests) / per minute. Are we really saying that based on that limits my Assistant action won't be able to handle more than 18 users' sessions per minute? Really?
What if you have more than 10 000 daily active users? How about 100 000 or even more DAU?
The Google Assistant Conversational Actions documentation is silent about it. It would be great if somebody from Google Assistant team could clarify it.
Thank you
I posted similar question about request quotas for Action Builder on reddit.
According to the reply, there is no such thing as quota for Assistant Actions built with Actions Builder and the only limitation is your backend capacity e.g. Firebase or another implementation.
Also, I found a comment about 400k users by month in this thread.
It would be great if someone from Google Assistant representatives can confirm this or add a section to the official documentation. Because this would help to invest in developing new google actions on enterprise level without a fear to bump into request limitations.

How to make the agent say something before leaving the mic open?

Google rejected my app and give the following feedback:
During testing we noticed that when the Action is not able to get data
it opens the mic and leaves it open without prompting. Make sure that
your agent always says something before leaving the mic open for the
user, so that the user knows what they can say. This is particularly
important when your agent is first triggered.
I've built my app using API AI tool and webhooks (connects to a web service running on Heroku). Heroku sleeps after 30 minutes of inactivity. I think this error occurs when Heroku takes a long time to respond. Any idea how can I make the agent say something before leaving the mic open?
I am not sure why I got this feedback because in case the web service request times out, Google Home speaks the following response.
It might answer the text response you added on API.ai but at the bottom of the page of your intent (under the text response) click on "Actions on Google" then check "End conversation" Check this screenshot
When you use assistant.ask in your fulfillment logic, you should be asking the user a question. It should be clear to the user what they are expected to answer.
If your fulfillment instance goes to sleep or doesn't respond quickly, then typically the assistant will play a message that indicates your action isn't responding.