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

Botpress对接MS Teams后,如何读取Adaptive Card用户输入?

解决Botpress对接Teams时无法解析自适应卡片用户输入的问题

1. 检查自适应卡片的提交结构配置

  • 确保所有输入控件都设置了唯一的id属性,比如<Input.Text id="username" placeholder="输入用户名" />,这是识别输入字段的基础
  • 提交按钮必须使用Action.Submit类型,并且在data字段里定义结构化的提交标识,示例:
    {
      "type": "Action.Submit",
      "title": "提交",
      "data": {
        "action": "cardSubmit",
        "inputType": "userForm"
      }
    }
    
    这样能让Botpress区分常规消息和卡片提交消息。

2. 在Botpress中添加自定义中间件解析提交数据

Teams发送的自适应卡片提交数据不会放在常规的text字段里,而是在event.raw.activity.value中。可以通过Botpress的incoming middleware手动解析:

bp.events.registerMiddleware({
  name: 'parseTeamsCardSubmission',
  type: 'incoming',
  handler: async (event, next) => {
    // 仅处理Teams平台的卡片提交事件
    if (event.platform === 'teams' && event.raw.activity?.value) {
      // 将提交的结构化数据转为Botpress可识别的payload
      // 可以直接转成文本,或者提取特定字段赋值给event.payload.text
      event.payload.text = JSON.stringify(event.raw.activity.value);
      // 示例:提取单个字段
      // event.payload.text = event.raw.activity.value.username;
    }
    next();
  }
});

添加后,在Botpress的流程节点里就能获取到解析后的用户输入。

3. 验证Azure Bot Service的消息转发

  • 登录Azure门户,进入你的Bot Service,在「测试在Web Chat」中发送自适应卡片并提交输入,查看「日志」里的消息详情,确认提交数据是否完整转发到Botpress的webhook地址
  • 检查Teams通道的配置,确保没有开启不必要的消息过滤规则,比如拦截非文本消息

4. 调整Botpress流程的输入监听逻辑

  • 在Botpress的可视化流程中,将「等待用户输入」节点的触发条件改为监听卡片提交事件,比如设置条件为:event.raw.activity?.type === 'message' && event.raw.activity?.value
  • 后续节点可以直接使用event.raw.activity.value来获取用户在卡片中填写的各个字段值,比如{{event.raw.activity.value.username}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:27:13