如何在DialogFlow中通过actions_intent_NO_INPUT自定义Google Home无输入响应
解决Google Home无输入场景自定义回应的问题
我完全懂你的痛点——明明想让fulfillment接管用户无输入的场景,结果Google Home总先蹦出默认的“Sorry, I didn't hear that”,两次后就结束交互,你的fulfillment还得在后面补响应,完全达不到想要的效果。其实核心是你没绕开系统默认的无输入处理逻辑,得从对话配置层面直接接管这个事件。
下面是具体的解决步骤,分不同工具场景说明:
1. 针对Dialogflow ES/CX的配置
不管是ES还是CX版本,关键是要直接绑定无输入系统事件,而不是依赖系统默认处理:
- 打开你的Dialogflow项目,找到意图列表里的系统自带
no-input意图(如果没有,就新建一个自定义意图)。 - 在意图的「Events」标签下,添加对应的系统事件:ES版本是
google_assistant_no_input,CX版本可以直接选择No Input事件类型。 - 跳过fulfillment调用(除非你需要动态生成回应),直接在「Responses」里设置你的自定义话术,比如:
- 第一次无输入:
"不好意思,我没听清你的需求,麻烦再说一遍可以吗?" - 第二次无输入:
"还是没收到你的回应呢,要不要换个方式告诉我呀?"
- 第一次无输入:
- 调整意图的优先级,确保它比系统默认的无输入处理优先级更高。
2. 针对Actions Builder的配置
如果用的是Actions Builder,要在场景里直接监听无输入事件:
- 进入你的场景编辑页面,在「Events」模块添加
actions_intent_NO_INPUT事件。 - 在这个事件的处理流程里,直接添加「Send Response」节点,填入你的自定义话术,不需要触发fulfillment(如果要动态生成,就在这里调用fulfillment并返回回应)。
- 在项目的「Settings」→「Interaction」里,设置无输入的重试次数,和每次重试对应的自定义提示。
3. 关键注意事项
- 不要依赖fulfillment后置处理:系统默认的无输入提示是在调用fulfillment之前触发的,所以必须在对话层直接处理这个事件,才能覆盖默认话术。
- 测试前清缓存:部署后,记得重启你的Google Home设备,或者在测试模拟器里清除会话缓存,避免旧的配置生效。
- 符合政策要求:自定义话术要友好、清晰,不能违反Google Assistant的内容政策,否则可能会被系统拦截。
举个简单的Dialogflow配置例子:
1. 新建意图,命名为「无输入处理」 2. 事件栏添加「google_assistant_no_input」 3. 响应栏添加: - 文本:"抱歉,我没听到你的声音,麻烦再说一次哦~" 4. 保存并部署到Google Assistant
这样配置后,用户无输入时,Google Home会直接播放你设置的自定义内容,完全替代默认的提示语,两次重试后再结束交互,完美符合你的需求。
内容的提问来源于stack exchange,提问作者Matthew Knight




