为何Google Assistant的NO_MATCH系统事件未触发?
Let's break down what's going on here and fix that annoying generic error message so your custom NO_MATCH prompt shows up as intended.
First, Let's Align on Your Setup
You've configured your Google Action with these key pieces:
- Game Mode Types:
survival,creative - Intent:
CMD_SET_GAMEMODEwith training phrases like "change game mode to creative" and "apply creative game mode" - Scenes:
COMMANDSroutes theCMD_SET_GAMEMODEintent to theCMD_SET_GAMEMODE_SlotFillingsceneCMD_SET_GAMEMODE_SlotFillingis set to call a webhook whenscene.slots.status == "FINAL", and has a NO_MATCH prompt configured for thegamemodeslot
The Core Problem
Valid queries like "change game mode to survival" work perfectly and trigger the webhook. But when you omit the game mode (e.g., "change game mode") or use an invalid value (e.g., "change game mode to something"), you get this generic error instead of your custom prompt:
Sorry, My Action isn't responding right now. Please try again soon.
Logs point to an error in the endConversation event of the slot filling scene—so your NO_MATCH logic isn't kicking in before the conversation tries to end prematurely.
Likely Fixes to Try
1. Your Slot's NO_MATCH Handling Is Misconfigured
Google Actions slot filling only moves to FINAL status when all required slots are successfully filled. If a slot hits a NO_MATCH, the scene should stay active to re-prompt the user—unless you've accidentally set it to end the conversation instead.
Double-check your gamemode slot settings in the CMD_SET_GAMEMODE_SlotFilling scene:
- Make sure the "Required" toggle is turned on (this is mandatory for slot filling to work as intended)
- Under the slot's NO_MATCH configuration:
- Select "Ask again" (not "End conversation" or "Skip")
- Confirm your custom prompt text is correctly entered (e.g., "Sorry, I don't recognize that game mode. Please pick either survival or creative.")
2. Webhook Is Firing Before Slot Filling Is Complete
If your scene's webhook trigger condition is misconfigured, it might try to run before slots are fully resolved—causing an error when the webhook receives missing/invalid data.
Verify:
- The webhook trigger condition is strictly
scene.slots.status == "FINAL"—no extra conditions that might evaluate to true while slots are still inREQUIREDorNO_MATCHstate - In your webhook code, add validation for the
gamemodeslot value. If it's missing or invalid, return a response that tells the Action to re-prompt the user, not end the conversation abruptly.
3. Scene's End Conversation Settings Are Overriding Slot Filling
If your slot filling scene has an endConversation event that triggers when slots aren't fully filled, that's almost certainly causing the generic error.
Head to your scene's Events tab:
- Look for any
endConversationtriggers that fire whenscene.slots.statusisn'tFINAL - Remove any automatic end-conversation rules that bypass the slot filling flow. The scene should only end after successful slot filling and webhook processing, or if the user explicitly cancels.
4. Intent Fulfillment Is Routing Directly to Webhook (Not Slot Filling)
Make sure your CMD_SET_GAMEMODE intent isn't set to call the webhook directly—its only job should be routing to the slot filling scene. The webhook should only run from the slot filling scene once all slots are valid.
Check the intent's Fulfillment settings:
- Confirm there's no webhook trigger enabled here—only the scene transition to
CMD_SET_GAMEMODE_SlotFilling
Quick Validation Tests
After making changes, test these scenarios to confirm the fix:
- "change game mode": You should see your custom NO_MATCH prompt asking for a valid game mode
- "change game mode to something": Your custom prompt should appear instead of the generic error
- "change game mode to survival": Webhook should fire as expected
内容的提问来源于stack exchange,提问作者LA_

