如何通过DialogFlow或Actions Google的webhook在Google Assistant中打开URL
问题解答
需求可实现,但你当前使用的API不匹配需求
你找到的示例代码中使用的HtmlResponse是Interactive Canvas的专用接口,仅能在带显示屏的Google Assistant设备(如智能屏、车载终端)上内嵌加载网页,无法实现跳转打开外部deeplink、拉起第三方应用的效果,这是你代码无法运行的核心原因。
两种可行实现方案
方案1:通过App Actions绑定自定义意图(推荐)
- 自定义意图无法像内置意图一样触发的核心原因是你没有在Actions on Google控制台完成应用关联配置
- 操作步骤:
- 在Google Actions控制台开启App Actions功能
- 项目内新增
actions.xml配置文件,将你的自定义意图和应用对应的deeplink地址做映射 - 完成应用的Google Play关联验证,测试通过后匹配到自定义意图即可直接拉起应用指定功能,无需额外webhook处理
- 适用场景:应用已经上架Google Play商店,需要稳定的意图-应用功能映射
方案2:在webhook中返回OPEN_URL系统意图
如果不需要复杂的意图绑定,可以直接在fulfillment中调用内置的OPEN_URL系统意图实现deeplink拉起,正确示例代码如下:
// 注意需要使用@assistant/conversation依赖,而非旧版dialogflow包 const { conversation, OpenUrl } = require('@assistant/conversation'); const app = conversation({debug: true}); app.intent('你创建的自定义意图名称', conv => { conv.add('正在为你打开应用对应功能'); conv.add(new OpenUrl({ url: '你的应用deeplink地址,支持http/https链接或者自定义schema,如myapp://xxx/feature' })); });
- 注意事项:需要在Google Actions控制台的「部署」页面开启对应测试区域的访问权限,否则测试时会出现意图无响应的问题
内容的提问来源于stack exchange,提问作者Zubair Akber
相关产品推荐
相关产品推荐

