💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # Rboot 消息 rboot 的消息类似于邮件消息,它包含了`接收者` `消息来源` `发送者` `消息头信息` `消息主体`。 ## 消息 Message ```go // Message 表示一个消息的结构 type Message struct { To string // 消息接收者 From string // 消息来源 Sender string // 发送者 Header Header // 头信息 Body io.Reader // 消息主体 } ``` > 其中 `消息接收者` `消息来源`和`发送者`传递的一般都是用户ID,如果需要用户其他信息可以在 `消息头信息` 中传递。 ### 创建一条文本消息 框架提供了两种方法创建文本消息: - `NewMessages`:创建一组消息,参数为消息内容和消息接收者,它返回的是 `[]*Message` ,当在脚本中返回一条文本消息时非常有用。 - `NewMessage`:创建一条消息,参数为消息内容和消息接收者,它返回的是 `*Message`,你可以使用返回的msg为消息添加需要的信息。 ### 获取消息主体文本信息 假设消息体为 `msg` - `String` 方法:读取消息内容方法,返回的是 `string`类型,使用:msg.String() - `Bytes` 方法:读取消息内容方法,返回的是 `[]byte`类型,使用:msg.Bytes() ### 为消息设置抄送 当我们需要将消息发送给多个人的时候,我们可以为消息设置抄送。 设置抄送的方式有两种: 1. 使用框架提供的 `SetCc` 方法: msg.SetCc("uid1", "uid2" ...) 2. 使用 `Header` 的 `Set` 方法:msg.Header.Add("Cc", "uid1,uid2"),用户ID中间以`英文“,”`隔开 > 抄送人应该为用户ID 当脚本返回消息中带有抄送信息时,机器人会自动将消息发给抄送人。 ### 头信息Header `Header` 头信息是表示消息标头中的键-值对。 你可以使用它为消息附带关键信息和附加信息。比如可以附带消息验证信息或消息类型,方便脚本或消息转接器使用。 `Header` 提供了 `Add` `Set` `Get` `Del` 方法,具体方法见 [godoc](https://godoc.org/github.com/ghaoo/rboot#Header) > Header 可能会用到的键: > - `cc` 抄送人 > - `msgtype` 消息类型 > - `file` 发送的文件 ## HTTP 消息监听 rboot 提供了一个监听入站消息的ResultFul API `incoming`,开发者可以使用此api给机器人推送消息。api接收一个json格式的请求,字段与消息`Message`相同。 ### 配置 - `ROBOT_INCOMING_SECRET`:入站消息加密秘钥 ### 入站消息认证 在此模式下推送消息需要签名认证,签名计算方法如下: 1. 获取系统当前时间,格式为`2006-01-02 15:04:05` 2. 将参数`系统时间` `入站消息加密秘钥` `消息内容` 按照 `时间\n加密秘钥\n消息内容` 排列,获取需要加密的字符串 3. 使用 sha256 将上面的字符串加密获取加密后的字符串 4. 将 sha256 加密后的字符串使用 base64 编码获取最终的签名值 ### 发送消息 **请求表头**: 名称 | 必须 | 含义 - | :-: | :-: sign|是|认证签名 datetime|是|系统时间 to|是|接收者ID from|否|消息来源 sender|否|发送者 ... ...|| 机器人会自动将请求表头中的 `to` `from` `sender` 解析到消息体中,并将请求标头加入消息的标头中。 **请求内容** 请求内容只支持文本消息用于识别命令。