如何在Composer Bot中使用Direct Line Extension?
Composer Bot对接Direct Line Extension的实现方案
已有大量开发者完成该场景的落地对接,Composer Bot本质是对Bot Framework SDK的可视化封装,所有SDK侧的适配逻辑都可以复用,不需要修改Composer内的可视化对话逻辑,仅需调整项目的服务入口代码即可。
前置要求
- 必须使用Composer v2.1.2及以上版本,对应Bot Framework SDK版本为v4.15+,更低版本存在中间件兼容缺陷
- 你的Azure Bot资源已开通Direct Line App Service Extension通道,且已在对应App Service中完成扩展的安装与启用
具体操作步骤
1. 导出Composer项目源码
从Composer中导出你开发的Bot项目源码到本地,用代码编辑器打开项目根目录,Composer生成的项目结构和原生SDK开发的Bot项目结构完全一致。
2. 替换服务适配器
根据你使用的开发语言选择对应配置:
Node.js项目
- 首先安装依赖包,在项目根目录执行命令:
npm install @microsoft/botframework-directlinejs @microsoft/streaming-extensions - 打开项目根目录的
index.js入口文件,找到原有适配器注册的代码段,替换为以下逻辑:
const { StreamingBotAdapter } = require('@microsoft/streaming-extensions'); const adapter = new StreamingBotAdapter({ appId: process.env.MicrosoftAppId, appPassword: process.env.MicrosoftAppPassword }); // 替换原有默认适配器的路由注册逻辑 server.post('/api/messages', (req, res) => { adapter.processActivity(req, res, async (context) => { await myBot.run(context); }); });
C#项目
- 首先安装NuGet依赖包:
Install-Package Microsoft.Bot.Builder.StreamingExtensions - 打开项目根目录的
Program.cs文件,修改适配器服务注册逻辑:
builder.Services.AddSingleton<IBotFrameworkHttpAdapter, StreamingBotHttpAdapter>();
3. 重新发布项目
修改完成后,直接将源码重新发布到你的Azure App Service即可,Composer内原有所有对话逻辑、触发条件、自定义动作都可以正常运行,不需要额外调整。
常见问题排查
- 若出现握手失败报错,检查App Service的环境变量中
DIRECTLINE_EXTENSION_VERSION是否设置为latest - 若消息无法正常收发,检查Bot配置的Microsoft App ID、密码与Direct Line Extension通道的配置是否完全一致
- 不要直接复用原生SDK示例中独立监听WebSocket的代码,Composer的服务路由已由框架托管,仅需替换适配器即可完成适配
内容的提问来源于stack exchange,提问作者user666
相关产品推荐
相关产品推荐

