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

Node.js中Microsoft Bot Framework自适应卡片提交文本值为空的解决方法

解决方案

不推荐使用外部文件存储

直接读写外部文件会引发多会话并发冲突,且无法实现会话隔离,极易取错数据,生产环境绝对禁用。

推荐的三种赋值方法

1. 自适应卡片隐藏字段嵌入

这是最直接的方案,将捕获到的聊天文本嵌入卡片的隐藏输入字段,提交时随表单数据一起返回:

// 捕获用户聊天文本
const userMessage = turnContext.activity.text;

// 构造带隐藏字段的自适应卡片
const adaptiveCard = {
  type: "AdaptiveCard",
  version: "1.0",
  body: [
    // 你的卡片展示内容
    {
      type: "Input.Text",
      id: "hiddenQues",
      value: userMessage,
      isVisible: false
    }
  ],
  actions: [{ type: "Action.Submit", title: "提交" }]
};

// 发送卡片
await turnContext.sendActivity({
  attachments: [CardFactory.adaptiveCard(adaptiveCard)]
});

// 处理卡片提交
if (turnContext.activity.type === ActivityTypes.Message && turnContext.activity.value) {
  const ques = turnContext.activity.value.hiddenQues;
  // 此处ques即为用户之前的聊天文本
}

2. 会话状态存储(推荐生产环境)

利用Bot Framework内置的会话状态(Conversation State)存储文本,实现会话隔离,跨轮对话也能读取:

// 提前配置会话状态与数据访问器
const conversationState = new ConversationState(new MemoryStorage());
const userQuesAccessor = conversationState.createProperty('userQuestion');

// 捕获用户消息时存入状态
async function onMessage(turnContext) {
  const userMessage = turnContext.activity.text;
  await userQuesAccessor.set(turnContext, userMessage);
  // 发送自适应卡片
  await turnContext.sendActivity({
    attachments: [CardFactory.adaptiveCard(yourAdaptiveCard)]
  });
  await conversationState.saveChanges(turnContext);
}

// 处理卡片提交时读取状态
async function onMessage(turnContext) {
  if (turnContext.activity.value) {
    const ques = await userQuesAccessor.get(turnContext);
    // 使用ques数据
  }
}

3. 内存缓存(仅开发测试用)

单实例开发阶段可临时用全局Map存储,但生产环境因多实例数据不共享禁用:

// 全局缓存,仅开发测试
const messageCache = new Map();

// 捕获消息时存储,用会话ID做键
const convId = turnContext.activity.conversation.id;
messageCache.set(convId, turnContext.activity.text);

// 提交卡片时读取
const convId = turnContext.activity.conversation.id;
const ques = messageCache.get(convId);
// 用完可删除避免内存泄漏
messageCache.delete(convId);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:55:12