如何在Google Action Console内置云函数Webhook中向用户发起提问
问题解决办法
你遇到的conv.ask is not a function报错是因为该方法属于Dialogflow专属的SDK接口,和Action Builder使用的「Assistant Conversation SDK」语法不兼容,无需迁移到Dialogflow,用Action Builder原生方案即可实现需求:
1. 主动提问实现逻辑
Action Builder的对话状态由场景配置控制,不需要在webhook中调用特殊的提问方法:
- 你正常用
conv.add()输出提问内容即可 - 进入调用该webhook的对应场景编辑页,确认「场景结束后」没有勾选「结束对话」,平台就会自动保持会话激活状态,等待用户回复。
示例代码如下:
// 注意顶部先导入所需组件,Action Console云函数环境已预装依赖无需额外安装 const {Suggestion} = require('@assistant/conversation'); app.handle('myhandler', (conv) => { conv.add('请问你平时更偏好哪种出行方式?'); // 添加建议回复选项 conv.add(new Suggestion({title: '公共交通'})); conv.add(new Suggestion({title: '自驾'})); conv.add(new Suggestion({title: '骑行'})); });
2. 动态对话流向控制
如果你需要根据业务逻辑动态控制后续对话流程,可以在webhook中指定跳转的目标场景:
app.handle('myhandler', (conv) => { conv.add('请问你的收货地址是哪里?'); // 跳转到专门收集地址的场景,该场景提前配置为等待用户输入即可 conv.scene.next = {name: 'collect_address_scene'}; });
3. 之前报错的原因
你之前收到的5xx错误是因为调用了不存在的conv.ask方法导致代码运行抛出异常,替换为上述语法即可修复。
关于是否需要迁移到Dialogflow
不需要。Action Builder原生已支持多轮对话、主动提问、建议回复、参数收集等所有你需要的功能,迁移Dialogflow反而会额外增加开发成本。
内容的提问来源于stack exchange,提问作者XCarb
相关产品推荐
相关产品推荐

