使用Bot Composer搭建的Azure Bot向Webhook推送响应的最优方案咨询
Bot主动推送消息到自定义Webhook最优解决方案
首选方案:使用Direct Line原生出站Webhook配置
这是成本最低的实现方式,无需自行实现适配器或管理会话逻辑,完全兼容Bot Composer搭建的Bot:
- 进入Azure Bot资源的「通道」配置页,打开已启用的Direct Line通道编辑页
- 找到出站Webhook配置项,填入你的REST API端点地址,同时可自定义签名密钥用于请求来源校验
- 配置完成后,所有Bot的出站响应消息会自动以POST请求推送到你指定的端点,请求体包含完整的会话ID、用户ID、消息内容等上下文信息,所有会话路由逻辑由Bot Framework原生处理,不需要额外开发
Bot Composer适配说明
你无需修改任何在Composer中配置的业务逻辑:
- 所有Composer中配置的触发回复、多轮对话消息都会自动走Webhook推送,无需改代码
- 若需要过滤部分不需要推送的消息,可直接在你的REST API侧按消息类型过滤,也可以在Composer生成的项目中添加轻量中间件做筛选
主动消息推送适配
如果你需要Bot不依赖用户输入主动发消息:
- 调用Direct Line官方接口
POST /v3/directline/conversations/{conversationId}/activities发送主动消息,发送的内容同样会自动同步到你配置的出站Webhook - 接口调用需要的鉴权头格式为
Bearer {你的Direct Line密钥}
轻量替代方案:自定义出站中间件
如果因特殊场景无法使用Direct Line原生Webhook,不用开发完整适配器,只需要添加少量代码即可:
在Composer生成的Bot项目中添加出站消息中间件,拦截所有出站Activity,在中间件中调用你的Webhook接口即可,全量会话逻辑依然由Bot Framework维护,开发量不超过20行。
注意:所有推送至你端点的请求都会携带和你配置的签名密钥对应的Authorization头,建议先校验请求合法性再处理业务逻辑,避免恶意请求。
内容的提问来源于stack exchange,提问作者Filip
相关产品推荐
相关产品推荐

