使用Azure Composer/AWS Lex/Dialogflow搭建聊天机器人如何集成地图位置选择器
实现方案
这类功能已经有大量落地实践,核心思路是绕过平台原生组件限制,通过自定义扩展实现,不需要等待平台官方更新对应能力:
- 先开发一个独立的轻量H5页面,接入对应地图服务的JS SDK,完成位置选点、坐标与地址解析的核心逻辑
- 聊天机器人侧仅需要发送带跳转按钮的富卡片,唤起这个H5页面即可,不需要适配平台的原生组件规则
- 用户选点完成后,页面通过对应平台的消息回调接口,把坐标、详细地址等信息回传给当前会话,机器人即可获取到选中的位置数据
如果你的机器人是嵌入在Web/APP原生页面内,还可以用更简单的方案:前端监听机器人发送的特定触发标识,直接唤起页面内置的地图选择组件,选点完成后把位置数据作为用户消息发送给机器人,不需要做跨页面的回调适配
各平台适配要点
Azure Bot Framework Composer
- 使用
Adaptive Cards的Action.OpenUrl按钮指向你开发的地图H5页面即可完成触发 - 位置数据回传可通过 Bot Framework 提供的
Direct Line API推回当前会话,不需要修改Composer的原有配置
AWS Lex
- 在Lex控制台配置自定义响应卡片,添加URL跳转按钮指向地图H5页面
- 选点完成后调用Lex的
PostContent/PostText接口,把位置参数作为用户输入写入对应会话槽位即可
Google Dialogflow
- 通过自定义有效载荷(Custom Payload)生成带跳转按钮的富消息,唤起地图H5
- 位置回传调用Dialogflow的
detectIntent接口传递位置参数即可完成数据同步
示例触发卡片代码(适用于Azure Bot Framework)
{ "type": "AdaptiveCard", "version": "1.0", "body": [ { "type": "TextBlock", "text": "请选择您需要的精确位置", "size": "medium" } ], "actions": [ { "type": "Action.OpenUrl", "title": "点击打开地图选点", "url": "替换为你的地图H5页面地址" } ] }
内容的提问来源于stack exchange,提问作者vhmoura
相关产品推荐
相关产品推荐

