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

如何实现以机器人为中介的双人消息中转通信功能?

实现机器人中介的双人通信流程

一、补全配对逻辑

你之前的思路是对的,用户点“找好友”就把状态设为等待配对,但得加关键一步:用户状态设为等待的瞬间,立刻查数据库里有没有其他同样处于“等待配对”状态且未绑定的用户。

  • 要是找到另一个,直接给俩用户分配同一个会话ID(比如用UUID生成唯一值),同时把双方状态改成“已配对”,再把彼此的用户ID互相绑定(存成配对用户ID字段)
  • 要是没找到,就让用户保持“等待配对”状态,等其他人发起请求

二、数据库表结构优化

别只存用户ID和状态,加几个字段更方便后续逻辑:

  • user_id:用户唯一标识
  • status:状态值(可选:空闲、等待配对、已配对)
  • pair_user_id:配对成功后,存储对方的用户ID
  • session_id:配对会话的唯一ID,用来关联两个用户

三、消息转发核心逻辑

用户发消息时,按这个流程处理:

  1. 先从数据库取当前用户的状态和配对用户ID
  2. 如果状态不是“已配对”,直接回复“先点找好友完成配对再发消息”
  3. 如果是已配对状态,直接把消息(可以加个“对方说:”前缀)发给配对用户对应的账号

给你写段伪代码参考:

def process_user_message(user_id, msg_content):
    # 从数据库获取用户会话数据
    user_info = db.fetch_one("SELECT status, pair_user_id FROM user_sessions WHERE user_id = ?", (user_id,))
    if not user_info or user_info['status'] != '已配对':
        send_msg_to_user(user_id, "先完成配对再发消息哦")
        return
    # 转发消息给配对用户
    send_msg_to_user(user_info['pair_user_id'], f"对方:{msg_content}")

四、配对解除与异常处理

  • 主动解除:用户点“结束会话”时,把双方的状态改回“空闲”,清空pair_user_id和session_id
  • 被动解除:定期扫描“已配对”状态的用户,发现离线超过10分钟的,自动解除配对并重置状态
  • 重复配对拦截:如果用户已经处于“等待配对”或“已配对”状态,再点“找好友”直接提示“你当前正在配对/会话中,不用重复操作”

五、超时机制

给“等待配对”状态加个超时时间,比如5分钟。超过时间还没找到配对用户,自动把状态改回“空闲”,同时给用户发消息:“配对超时啦,重新点找好友试试?”

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:51:31