BotBuilderCloudAdapter.ConversationBot能否处理消息扩展?
在Microsoft Teams中为ConversationBot添加消息扩展能力
我按照Microsoft Teams官方示例,使用BotBuilderCloudAdapter中的ConversationBot处理命令与通知,现在需要为其添加消息扩展能力,但找不到直接实现的方法。参考示例项目后,我在/api/messages端点中同时运行两个机器人,代码如下:
server.post("/api/messages", async (req, res) => { await conversationBot.requestHandler(req, res, async (context) => { await messageExtensionBot.run(context); }); });
这种方式可以正常运行,但同时运行两个机器人并不合理,我原本以为ConversationBot可以直接处理消息扩展请求?
解决方案:让ConversationBot直接处理消息扩展
不需要单独创建messageExtensionBot,可以通过扩展ConversationBot的初始化配置,直接集成消息扩展处理逻辑:
修改ConversationBot的配置
在初始化ConversationBot时,添加messageExtensions字段,配置消息扩展的命令和处理函数:const conversationBot = new ConversationBot({ adapterConfig: process.env, // 保留原有的命令配置 command: { enabled: true, commands: [/* 已注册的命令处理 */] }, // 保留原有的通知配置 notification: { enabled: true }, // 添加消息扩展配置 messageExtensions: { enabled: true, commands: [ { id: "yourSearchCommandId", type: "query", // 支持query、action等类型 handler: async (context, query) => { // 编写消息扩展的业务逻辑,比如搜索数据 const searchResults = await yourSearchFunction(query.parameters); // 返回符合Teams要求的消息扩展结果 return { composeExtension: { type: "result", attachmentLayout: "list", attachments: searchResults.map(item => ({ contentType: "application/vnd.microsoft.card.thumbnail", content: { title: item.title, text: item.description, images: [{ url: item.imageUrl }] } })) } }; } } ] } });简化/api/messages端点处理
现在只需要让conversationBot单独处理所有请求即可,无需再嵌套调用另一个机器人:server.post("/api/messages", async (req, res) => { await conversationBot.requestHandler(req, res); });
这样ConversationBot就能同时处理命令、通知和消息扩展的请求,无需维护两个独立的机器人实例。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

