Skip to main content

消息服务

简介#

  1. Blaze Client 使 bot 具有了 Websocket 的能力,可以直接与 Mixin Messenger 的消息服务连接, 使之可以与 Mixin Messenger 上的用户进行实时的消息交互。
  2. 同时也会接收 ackconversationtransfer 的消息,这些消息将在后文中逐步提到。
  3. Blaze Client 继承自 Client 类,因此也具有了 Client 类的所有功能。
提示

普通用户给机器人发的消息,超过一个周没有接收的消息,则会被 Mixin Messenger 服务端丢弃。

1. 创建 websocket 连接#

const { BlazeClient } = require('mixin-node-sdk');
let client = new BlazeClient(  {    client_id: '',    session_id: '',    pin_token: '',    private_key: '',    pin: '',  },  { parse: true });
tip
  1. 第一个参数为 keystore
  2. 第二个参数可选,介绍如下
参数类型介绍
parseboolean是否将 data 解析为明文
syncAckboolean是否在接收到用户的消息,处理完后自动 ack

TIPS:

  1. data 默认为 base64 编码,如果需要解析为明文,需要将 parse 设置为 true
  2. 默认是需要手动调用 ack 方法,将消息标记为已读,如果设置了 syncAcktrue,则会在接收到用户的消息,处理完后自动 ack. 具体方法参见

2. 使用 client.loopBlaze 来接收消息#

client.loopBlaze({  async onMessage(msg) {    console.log(msg);  },  async onAckReceipt(msg) {    console.log(msg);  },  async onTransfer(msg) {    console.log(msg);  },  async onConversatioin(msg) {    console.log(msg);  },});
参数必选介绍
onMessage接受到的所有消息
onAckReceipt可选,接收到的 ack 消息
onTransfer可选,接收到的 转账 消息
onConversatioin可选,接收到的 群聊相关 消息

当不指定 onAckReceiptonTransferonConversatioin 时,所有相关的消息都会走 onMessage