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

如何获取对话起始位置的GUID用于数据库写入及中间件咨询

如何获取对话起始位置对应的GUID以写入用户信息到数据库?

我需要将用户信息写入数据库,因此需获取对话起始位置对应的GUID,但目前仍不清楚如何找到对话的起始位置。我的中间件代码如下:

bot.use({ 
  // 用户发送消息至机器人
  receive: (event, next) => { 
    if (event.type == 'message' || event.type == 'conversationupdate') { 
      api.post.receive(event) 
    } 
    next() 
  }, 
  // 机器人发送消息至用户
  send: (event, next) => { 
    if (event.type == 'message') { 
      api.post.send(event) 
    } 
    next() 
  } 
})

看起来你已经在使用Bot Framework的中间件处理消息流转了,要获取对话起始的GUID来写入数据库,其实可以从对话正式创建的触发事件入手——也就是conversationUpdate事件,我给你梳理下具体的实现思路和代码修改方案:

1. 精准识别对话起始的触发时机

对话的起始通常对应两种场景:用户第一次主动发起私聊,或者用户被添加到包含机器人的群聊中。这两种场景都会触发conversationUpdate事件,并且事件里的membersAdded数组会记录新增的成员。我们需要过滤掉机器人自身,只关注用户加入的时刻——这就是对话的起始点。

2. 提取对话GUID并执行数据库写入

在这个触发点里,event.conversation.id就是你需要的对话唯一GUID,直接提取它并结合用户信息写入数据库即可。

修改后的中间件代码示例:

bot.use({ 
  receive: (event, next) => { 
    if (event.type === 'message' || event.type === 'conversationupdate') { 
      api.post.receive(event);

      // 处理对话起始的核心逻辑
      if (event.type === 'conversationupdate' && event.membersAdded) {
        // 过滤掉机器人自己,只保留新增的用户
        const newlyAddedUsers = event.membersAdded.filter(member => member.id !== event.recipient.id);
        
        if (newlyAddedUsers.length > 0) {
          // 获取对话起始的GUID
          const conversationGuid = event.conversation.id;
          // 这里替换成你的数据库写入逻辑,比如保存用户ID和对话GUID的关联
          // 示例:db.saveUserConversationMapping(newlyAddedUsers[0].id, conversationGuid);
          console.log(`新对话已启动,对话GUID: ${conversationGuid}`);
        }
      }
    } 
    next();
  }, 
  send: (event, next) => { 
    if (event.type === 'message') { 
      api.post.send(event);
    } 
    next();
  } 
});

额外补充点

  • 为什么用event.conversation.id?这个字段是Bot Framework为每个对话分配的唯一标识符,无论是一对一私聊还是群聊,它都能精准代表对话的GUID,完全满足你的需求。
  • 若用户是主动发消息开启对话:如果担心conversationUpdate事件未被触发(比如部分渠道的特性差异),你也可以在首次message事件里判断——结合数据库记录,若该用户还没有关联的对话GUID,就用当前event.conversation.id作为起始GUID写入。不过conversationUpdate的方式更贴合“对话起始”的定义,因为它是对话正式创建的触发信号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:27:05