You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的初始化配置,直接集成消息扩展处理逻辑:

  1. 修改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 }]
                    }
                  }))
                }
              };
            }
          }
        ]
      }
    });
    
  2. 简化/api/messages端点处理
    现在只需要让conversationBot单独处理所有请求即可,无需再嵌套调用另一个机器人:

    server.post("/api/messages", async (req, res) => {
      await conversationBot.requestHandler(req, res);
    });
    

这样ConversationBot就能同时处理命令、通知和消息扩展的请求,无需维护两个独立的机器人实例。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:02:58