Well, after some frustration, I have a chat bot working on Google Actions. But now that the frustration is over, the flood gate is open!
The first challenge; using my existing code. Safety Moments, my first skill, uses json files. I needed to upload them to a Google bucket. And then, for whatever reason, the promise loading these files tool > 5s to execute (a download of a file <1K), so my conversation was over before my content loaded. There was no synchronous hack I found. Then, I figured I'd load them on invocation of the cloud function. It worked for a while, and then it just stopped working. No idea why. I received connection resets downloading the files. So second solution? Embed all the json in the webhook itself. (What is a webhook? It is the node code that fulfills the request to do something after LU digestion.)
The second challenge; competing SDKs. It looks like Dialogflow and Actions on Google were inseparable. But they are. And if you follow the code examples for Dialogflow (that I did, because it looked like a really cool tool compared to LUIS), you will discover mismatches between how Actions On Google (for assistants) implements bot behavior. So... I couldn''t immediately figure out what was Dialogflow SDK (agent.add) and what was Actions SDK (conversation.ask). It manifested itself in my data not persisting and me scratching my head.
The third challenge; moving targets. The Google tech is migrating from V1 to V2, and Dialogflow seems not to have caught up to Actions. Part of my confusion was out-of-the-box webhooks were V1. Dialogflow examples integrating with Actions was V1. But V2 is pretty much were all Actions documentation and examples sit. Ugh. Now I know what to look for.
What I Like
- International availability.
- Excellent TTS for female and male voice.
- Dialogflow (the tool) and how it builds intents (utterances) and actions (entities).
- You can build dev without charge.
What I Dislike
- You can't have a Card before a SimpleResponse. I use cards as banners.
- Cards can have one button, though the JSON supports multiple buttons. Why?
- You can't segment long conversations naturally. You have to make them turn based and granular. Not so good for my experiments.That will, in my opinion, seriously cripple enterprise capability.
- Your action will not pass certification if it does not end the dialog on a question. This forces dialogs to be very transactional.
Actions on Google and Dialogflow.