基于Rasa开发可主动打断会话的聊天机器人相关问题咨询
问题1:页面空白原因排查
- 未指定credentials配置启动:执行
rasa run时需要加上--credentials credentials.yml参数,否则socketio通道不会正常加载,webchat无法连接后端服务 - 版本兼容性问题:rasa-webchat 1.0.0和部分高版本Rasa(3.x以上)存在兼容问题,可以尝试降级webchat到0.11.x版本,或者升级到适配你Rasa版本的webchat版本
- 本地file协议跨域限制:直接双击打开index.html用的是file协议,部分浏览器会限制跨域请求,可以把html放在本地静态服务(比如nginx、python -m http.server)下通过http://localhost:端口访问
- 服务连接失败:检查5005端口是否被占用,启动日志里有没有socketio相关的报错,打开浏览器控制台看有没有js加载失败、连接socket被拒绝的报错
- initPayload对应的意图不存在:检查你的nlu训练数据和规则里有没有
/greet对应的意图定义,缺失的话会导致webchat初始化失败
问题2:主动发消息实现与测试方法
你的认知是对的,主动发消息需要调用Rasa开放的API实现,步骤如下:
- 启动Rasa服务时必须加上
--enable-api参数,你已经加了这部分没问题 - 主动发消息调用的接口是
POST /conversations/{用户sender_id}/messages,请求体示例:
{ "text": "现在已经开始下雨了", "sender": "bot" }
- 测试方法:rasa shell本身是交互式命令行,不支持直接测试主动推送,可以用curl命令测试,示例:
curl -XPOST http://localhost:5005/conversations/test_user/messages -d '{"text":"现在已经开始下雨了","sender":"bot"}' -H "Content-Type: application/json"
调用成功后,对应用户的会话窗口就会收到这条主动推送的消息,后续用户发消息也可以正常承接对话流程。
问题3:多类型触发消息支持
完全可以实现,你只需要额外开发一个独立的触发服务即可:
- 你可以根据业务需求写对应的监听逻辑,比如对接天气API定时查询天气状态,当检测到下雨、雪停等符合触发条件的事件时,就调用上面说的Rasa主动发消息接口,把对应的提示内容推给指定的用户
- 推送的内容可以完全自定义,也可以携带自定义参数,结合Rasa的自定义动作实现更复杂的后续交互逻辑
内容的提问来源于stack exchange,提问作者Hellip
相关产品推荐
相关产品推荐

