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

如何通过Botmaster在未发消息前触发watson-conversation欢迎消息?

实现Watson Conversation欢迎消息主动推送的方案

当然可以实现啦!我之前做类似项目时也碰到过这个需求,下面就给你一步步拆解怎么用Botmaster配合socket.io触发Watson的欢迎消息:

  • 第一步:监听socket.io连接事件,主动发送启动消息
    默认情况下,Botmaster只会在收到用户主动发送的消息后才会调用Watson的API。我们可以在用户刚通过socket.io连接上服务端时,主动构造一条虚拟消息传给Botmaster,以此触发Watson的欢迎节点。

    示例代码如下:

    // 假设你已经完成了socket.io连接器的初始化
    const socketioConnector = new Botmaster.SocketioConnector({
      port: 3000,
    });
    
    botmaster.addConnector(socketioConnector);
    
    // 监听用户连接事件
    socketioConnector.on('connection', (socket) => {
      console.log('用户已建立连接');
      // 构造虚拟启动消息,senderId用socket的唯一ID标识用户
      const initMessage = {
        senderId: socket.id,
        text: '__START__', // 可以用自定义触发词,或者空文本(看Watson配置)
        type: 'text',
      };
      // 将消息传入Botmaster的处理流程
      botmaster.incoming(initMessage);
    });
    
  • 第二步:配置Watson Conversation工作区的欢迎节点
    确保你的Watson工作区里已经正确设置了欢迎触发逻辑:

    • 如果用了__START__这类触发词,需要在Watson里创建对应的意图(比如#welcome_init),或者在对话框节点的条件里直接匹配input.text == "__START__";
    • 如果用空文本触发,要设置节点的条件为conversation_start(Watson内置的会话开始条件),确保会话初始化时就返回欢迎消息。
  • 第三步:确保Botmaster中间件正常处理虚拟消息
    如果你使用了botmaster-watson中间件,要确认它不会过滤掉空文本或自定义触发词的消息。默认情况下中间件会正常传递这类消息,但如果有自定义过滤逻辑,需要调整允许这类初始化消息通过:

    const watsonMiddleware = require('botmaster-watson').middleware;
    
    botmaster.use(watsonMiddleware({
      username: '你的Watson用户名',
      password: '你的Watson密码',
      workspaceId: '你的工作区ID',
    }));
    
  • 第四步:测试验证
    当用户打开聊天界面连接socket.io时,服务端会自动发送初始化消息给Watson,Watson返回欢迎内容后,Botmaster会通过socket.io把消息推送给用户,这样用户一进入就能看到欢迎语,无需先发送任何消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:58:33