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

如何通过Socket.IO实现Rasa聊天机器人对接人工实时对话

Rasa 基于Socket.IO实现人工实时对话触发配置方案

你已经做好触发人工的payload按钮的前提下,按下面三个模块配置就能跑通流程:

1. Rasa服务端开启Socket.IO通道

找到项目根目录下的credentials.yml文件,添加SocketIO通道配置项:

socketio:
  user_message_evt: user_uttered
  bot_message_evt: bot_uttered
  session_persistence: true
  jwt_secret: your_custom_secret # 生产环境建议加,用来做连接合法性校验
  cors_allowed_origins: ["*"] # 开发阶段可设为通配,生产环境替换成你的前端实际域名

配置修改完成后重启Rasa服务,启动日志里出现Sockets connected to /socket.io提示就说明通道开启成功,默认Socket.IO服务挂载在Rasa的5005端口下,访问路径为/socket.io。

2. 前端侧Socket.IO连接与事件监听

首先安装和Rasa内置版本匹配的socket.io-client依赖(Rasa 3.x系列对应Socket.IO v4版本,大版本不匹配会直接连不上),核心连接和消息监听代码如下:

import { io } from "socket.io-client";

// 建立和Rasa服务的Socket连接
const rasaSocket = io("http://你的Rasa服务IP:5005", {
  path: "/socket.io",
  transports: ["websocket", "polling"]
});

// 连接建立后初始化会话
rasaSocket.on("connect", () => {
  rasaSocket.emit("session_request", {
    session_id: 当前登录用户的唯一标识ID,
    sender_id: 当前登录用户的唯一标识ID // 和session_id保持一致即可
  });
});

// 监听Rasa返回的消息
rasaSocket.on("bot_uttered", (res) => {
  // 识别到你之前配置的人工触发payload,直接切换人工模式
  if (res.custom?.trigger_human_service) {
    // 这里写你自己的切人工逻辑:比如弹出接入提示、把当前会话ID推送给人工坐席调度服务
    switchToHumanMode(res.sender_id)
  } else {
    // 非人工触发场景,正常渲染机器人回复
    renderBotReply(res)
  }
});

// 机器人对话阶段的用户消息发送方法
const sendMsgToBot = (msgContent) => {
  rasaSocket.emit("user_uttered", {
    message: msgContent,
    sender_id: 当前登录用户的唯一标识ID
  })
}

这里注意你之前做的触发人工payload按钮,对应的Rasa响应里要加固定的自定义标识字段,比如上面代码里判断的custom: {trigger_human_service: true},前端靠这个字段识别切换时机,不需要额外解析复杂的对话状态。

3. 人工对话阶段的消息流转逻辑

切换到人工模式后,直接停掉用户消息到Rasa的转发,把用户新发的消息直接推送给你自己的人工坐席服务端即可;人工坐席的回复也不需要经过Rasa,直接推送到当前用户的前端会话页渲染就行。
等人工服务结束需要切回机器人时,给Rasa发一条重置会话的指令,清空之前的对话状态即可:

// 人工服务结束,切回机器人对话
const switchBackToBot = () => {
  rasaSocket.emit("user_uttered", {
    message: "/restart",
    sender_id: 当前登录用户的唯一标识ID
  })
}

常见踩坑点:

  • 出现跨域报错优先检查credentials.yml里的cors_allowed_origins配置,确认前端域名在允许列表里
  • 连接失败先排查Rasa服务5005端口的防火墙规则,确认端口对外开放
  • 连接成功但收不到消息,先核对socket.io-client的版本和Rasa内置的Socket.IO版本是否一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:33:22