2

There have been triggering problems with my action since a few days ago. The queries that should have been handled by my action were routed to Google Assistant main flow. This happens on both Android Phone, and Google Home.

Steps to repro:

  • Speak: OK Google, talk to Tinker Doodle.
  • Assistant: Welcome to Tinker Doodle, what can I do for you?
  • Speak: Available commands.
  • Assistant: (Abruptly end Tinker Doodle conversation, list general commands on Assistant.)

I'd expect Assistant to stay in Tinker Doodle conversation, and feed the input to my action.

This makes Tinker Doodle almost unusable. Can you help with this?

I configured the NO_MATCH system intent to call my webhook, since I use my own NLP.

This worked well on Android Phone and Google Home, until a few days ago. There is no problem running in simulator on Action Builder.

Here are the screenshots of the main scene and NO_MATCH intent from Action Builder.

enter image description here enter image description here

Prisoner
  • 49,922
  • 7
  • 53
  • 105

2 Answers2

0

Rather than using no_match, you can employ the design that the custom-nlu sample uses:

Have a 'Main' scene that tries to match on a user_utterance intent:

enter image description here

Then the user_utterance matches on everything using the any data type:

enter image description here

When you go to the Simulator, any query should match your intent explicitly and then, as part of the sample, it will echo your response:

enter image description here

Nick Felker
  • 11,536
  • 1
  • 21
  • 35
0

It isn't clear, but this sounds like it may be related to recent announcements that, in some cases, phrases that don't match a specific Intent may cause your Action to close so the Assistant can handle the phrase instead.

Even besides this, handling things with NO_MATCH is generally undesirable, since that will only happen three times in a row before the Action is forcibly closed.

Instead, you should create an Intent that can handle "any" input and route that input to your handler using this method. That involves:

  1. Creating a new Type (I usually call it "Any") that accepts Free form text

Creating an Any type

  1. Creating an Intent (which I have named "matchAny") that accepts values of this type through its training phrases (or even just one phrase that accepts a value of this type)

matchAny Intent

  1. In your Scene, add this as an Intent that can be matched, and then set the handler for your webhook when it does.
Prisoner
  • 49,922
  • 7
  • 53
  • 105
  • matchAny intent solved my problem, thanks. Actually NO_MATCH intent can be configured to trigger more than 3 times. But given that the non-matched query is not guaranteed to be handled by the action, it is not helpful anymore to depend on NO_MATCH. – Junfeng Zhou Oct 31 '20 at 05:52
  • @JunfengZhou - Glad this works! I'm curious, how do you configure NO_MATCH to trigger more than 3 times? The image you show has prompt 3 transitioning to "End conversation" – Prisoner Oct 31 '20 at 23:05
  • In the Start scene, in the error and status handling, you can configure the final NO_MATCH to transit back to Start. – Junfeng Zhou Nov 02 '20 at 01:48