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

基于Node.js与botbuilder的Teams聊天机器人如何展示实时处理日志?

在Microsoft Teams机器人中实现实时处理状态更新(Node.js + Bot Builder)

要在用户等待后端任务处理期间发送实时日志式更新,核心是利用Bot Framework的主动消息发送能力,替代仅适用于模拟器的sendTraceActivity。具体步骤如下:

1. 保存对话上下文引用

当用户发起请求时,先提取并保存当前对话的引用信息,确保后端任务能找到对应的对话通道发送消息:

// 在处理用户输入的TurnHandler中
const conversationReference = TurnContext.getConversationReference(context.activity);
// 将对话引用与当前任务ID关联,存入缓存(如Redis、内存Map)
// 示例:用内存Map存储,生产环境建议用持久化缓存
global.taskConversations = global.taskConversations || new Map();
global.taskConversations.set('当前任务唯一ID', conversationReference);

2. 后端任务中发送实时更新

在后端处理复杂任务的关键节点,通过Bot Adapter调用continueConversation方法,基于保存的对话引用主动发送日志消息:

// 假设adapter是你的BotAdapter实例(如CloudAdapter)
const taskId = '当前任务唯一ID';
const conversationReference = global.taskConversations.get(taskId);

if (conversationReference) {
  await adapter.continueConversation(conversationReference, async (turnContext) => {
    // 发送日志式消息,可自定义格式(如时间戳+状态)
    await turnContext.sendActivity(`[${new Date().toLocaleTimeString()}] 正在执行:数据预处理完成`);
  });
}

3. 优化消息展示与发送策略

  • 日志格式统一:用固定格式(时间戳、步骤描述)让用户清晰感知进度,比如[14:35:22] 正在生成报告...
  • 控制发送频率:避免频繁发送消息,只在关键节点(如任务启动、子步骤完成、进度里程碑)发送更新
  • 可选:用自适应卡片增强展示:如果需要更美观的日志样式,可使用Teams自适应卡片,将每条日志作为卡片项展示:
// 自适应卡片示例
const logCard = CardFactory.adaptiveCard({
  type: 'AdaptiveCard',
  version: '1.0',
  body: [
    {
      type: 'TextBlock',
      text: `[${new Date().toLocaleTimeString()}] 正在处理:完成数据校验`,
      wrap: true
    }
  ]
});
await turnContext.sendActivity({ attachments: [logCard] });

4. 清理与异常处理

  • 任务完成后,及时从缓存中删除对应的对话引用,避免内存泄漏
  • 捕获continueConversation的异常(如用户已退出对话、Teams通道不可用),防止后端任务中断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:50:10