如何基于intent.address的Webhook响应触发intent.conversation意图?
嘿,我来帮你搞定这个需求的实现思路和具体步骤哈!
核心需求回顾
你已经有一个intent.address意图(动作address_action,训练句"My address"),触发后Webhook通过app.ask()返回地址信息;现在需要在这个响应后,自动触发绑定了actions_intent_CONFIRMATION事件的intent.conversation意图,让该意图的Webhook发起确认询问。
具体实现步骤
1. 理解触发逻辑
因为你用了app.ask(),会话处于活跃状态不会直接结束。要主动触发下一个意图,不能等用户输入,而是要在intent.address的Webhook响应中主动指定触发目标事件,让系统自动唤起绑定该事件的intent.conversation。
2. 修改intent.address的Webhook代码
在返回地址提示的同时,添加触发actions_intent_CONFIRMATION事件的逻辑。以Actions on Google的Node.js SDK为例,代码示例如下:
function addressAction(agent) { // 先返回地址告知的响应文本 agent.add('Alright! your address is USER_ADDRESS'); // 主动触发CONFIRMATION系统事件,引导到intent.conversation agent.setFollowupEvent({ name: 'actions_intent_CONFIRMATION', parameters: {} // 如果需要给下一个意图传递参数,可以在这里添加键值对 }); // 保持会话活跃,这里可以留空或者补充过渡文本(不过事件触发后会被下一个意图的响应覆盖) agent.ask(''); }
3. 确认intent.conversation的配置
- 确保这个意图已经正确绑定了
actions_intent_CONFIRMATION系统事件(在意图的"Events"选项卡中添加该事件)。 - 确认该意图已启用Webhook,并且Webhook中编写了询问确认的逻辑,比如返回:
"Would you like to continue with this address?",同样用app.ask()保持会话,等待用户的Yes/No回复。
4. 关键注意事项
- 一定要用主动触发事件的方法(比如
setFollowupEvent(),不同SDK可能命名略有差异),而不是依赖用户输入来唤起下一个意图,这样才能实现地址回复后自动触发确认询问。 - 确保两个意图的Webhook都部署正常、能正常响应,避免会话中途中断。
内容的提问来源于stack exchange,提问作者akash verma
相关产品推荐
相关产品推荐

