What's implicit Invocation?
By launching the Blockchain Activity bot by saying
"Ok Google, talk to blockchain activity for a recent report" we are explicitly invoking the bot directly - we know the bot and the intent we want to trigger.
Implicit invocation on the other hand is where you ask Google an open ended query like
"How many transactions do the top 10 blockchains process per 24 hours?" and Google looks to see which of its currently published agents can respond & selects the best match, which would be Blockchain Activity in this example.
How can implicit invocation be dishonest?
To match these open queries, you have to provide 'Training phrases' in each Dialogflow intent:
Training phrases like "back to the main menu" or "show me the list" are appropriate entries for navigating between intents when you've already discovered the bot and are in an active dialog session, however they are entirely inappropriate for implicit invocation.
Users have already accidentally launched the Blockchain Activity agent by saying 'back to the list', potentially disrupting their google assistant experience since they were wanting something like their shopping list but the BA agent jumped in offering cryptocurrency statistics (lol).
So how can we keep implicit invocation honest?
We want to keep the navigation terms, because they drastically improve the flow of conversation between intent states, however we don't want to include them in implicit invocation.
Currently Google doesn't allow you to disable implicit invocation on an individual training phrase basis (not within dialogflow nor within the 'actions on google' console page.
You need to split the intent in two - one which contains the implicit invocation phrases and the other which contains the suggestion chip text and important navigation phrases.
The implicit intent once triggered should attempt to perform a followup which would immediately send the user to the second intent (note that the follow up ignores all other conv elements, so redirect messages wouldn't show - the user will just teleport to the second intent).
Any questions or suggestions for alternative solutions? Post below! 👍