消息
提示
本篇文档有视频教程,请点击这里查看
danger
如果服务端返回403
,可能有两种情况
- 机器人跟用户还没有创建过会话,请先参见 上一章《创建单聊会话》
- 该用户可以禁止陌生人跟他联系了。这种情况只能让该用户
解除禁止陌生人联系
,或者让该用户添加机器人为好友
。
#
1. 发消息给单个用户#
1. 发送文字消息client.sendTextMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', 'hello');
- 第一个参数是要发送对象的
user_id
- 第二个参数是要发送的文字
返回值
{ "type": "message", "representative_id": "", "quote_message_id": "", "conversation_id": "dd219235-e83a-3b85-a13f-d0f20fa0e833", "user_id": "11efbb75-e7fe-44d7-a14f-698535289310", "session_id": "afad4c37-b90e-43c2-adc2-e6e1bd31ae94", "message_id": "c81e774b-a762-49f8-9114-35900be2c90e", "category": "PLAIN_TEXT", "data": "aGVsbG8=", "data_base64": "aGVsbG8", "status": "", "source": "CREATE_MESSAGE", "silent": false, "expire_in": 0, "created_at": "2022-08-19T03:06:17.363215481Z", "updated_at": "2022-08-19T03:06:17.363215481Z"}
消息的返回值差不多大同小异,以下就省略消息的返回值部分,只介绍调用部分。
#
2. 发送文章消息client.sendPostMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', '# 一级标题\n## 二级标题\n 正文..');
#
3. 上传文件const fs = require('fs');const file = fs.readFileSync('./somefile');client.uploadFile(file);
返回值
{ "view_url": "https://mixin-assets-cn.zeromesh.net/mixin/attachments/1660891914-33073792652464c197de2ce934719a2d1224050d48bee89e41129e3088db50e1", "attachment_id": "fbd7d403-3b39-4f8f-afcf-2b2aac42588f"}
注意这里返回的两个值,一个是文件的预览地址,一个是文件的唯一标识。后边所有关于文件发送都会用到这个
attachment_id
#
4. 发送图片消息client.sendImageMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', { attachment_id: '', // 文件的唯一标识 mime_type: '', // 图片的类型,如:image/jpeg width: 300, // 图片的宽度 height: 300, // 图片的高度 size: 300, // 图片的大小,单位是字节 thumbnail: '', // 可选,缩略图的 base64});
#
5. 发送文件消息client.sendDataMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', { attachment_id: '', // 文件的唯一标识 mime_type: '', // 图片的类型,如:image/jpeg size: 300, // 图片的大小,单位是字节 name: '', // 文件显示的名字});
#
6. 发送贴纸消息client.sendStickerMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', { sticker_id: '', // 贴纸的唯一标识 name: '', // 可选,贴纸的名字 album_id: '', // 可选,贴纸的所属相册});
#
7. 发送联系人消息client.sendContactMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', { user_id: '',});
#
8. 发送卡片消息client.sendAppCardMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', { app_id: '', // 一般直接使用自己机器人的 client_id icon_url: '', // 卡片的图标链接 title: '', // 卡片的标题 description: '', // 卡片的描述 action: '', // 卡片的跳转链接 shareable: false, // 可选,是否可分享});
#
9. 发送音频消息client.sendAudioMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', { attachment_id: '', // 文件的唯一标识 mime_type: '', // 音频的类型,目前只支持:audio/ogg size: 300, // 音频的大小,单位是字节 duration: 300, // 音频的时长,单位是毫秒 wave_form: '', // 可选,音频轨迹 base64});
#
10. 发送直播消息client.sendLiveMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', { width: 300, // 直播卡片的宽度 height: 300, // 直播卡片的高度 thumb_url: '', // 直播卡片的缩略图链接 url: '', // 直播卡片的视频地址 shareable: false, // 可选,是否可分享});
#
11. 发送视频消息client.sendVideoMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', { attachment_id: '', // 文件的唯一标识 mime_type: '', // 视频的类型,目前只支持:video/mp4 size: 300, // 视频的大小,单位是字节 duration: 300, // 视频的时长,单位是秒 width: 300, // 视频的宽度 height: 300, // 视频的高度 thumbnail: '', // 可选,视频的缩略图 base64});
#
12. 发送位置消息client.sendLocationMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', { latitude: '', // 纬度 longitude: '', // 经度 address: '', // 可选 name: '', // 可选});
#
13. 发送按钮消息client.sendAppButtonMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', [ { label: '', // 按钮的文本内容 color: '', // 16进制按钮的颜色,如: #FF0000 action: '', // 按钮的跳转链接 },]);
#
14. 发送撤回消息client.sendRecallMsg('e8e8cd79-cd40-4796-8c54-3a13cfe50115', { message_id: '', // 消息的唯一标识});
#
15. 自行构建消息client.sendMessage({ conversation_id: '', // 会话的唯一标识 message_id: '', // 消息的唯一标识 category: '', // 消息的类型,详细的类型请查看 SDK data: '', // base64 的消息内容 recipient_id: '', // 可选,消息的接收者,发给群聊时,不带这个参数就会发给群聊的每一个人。带上的话,就只会发给群聊的某一个人 representative_id: '', // 可选,消息的发送者, quote_message_id: '', // 可选,被引用的消息的唯一标识});
以上消息都封装了这个接口。
ack
消息#
16. 发送 client.sendAcknowledgement({ message_id: '', // 接收到的消息标识 status: '', // 消息的状态, 'READ' 表示已读, 'DELIVERED' 表示已送达});
tip
ack
消息是用来告诉服务器,消息已经被读取或者送达了,这样服务器才会把消息的状态改为已读或者已送达。DELIVERED
表示消息已经送达,在Mixin Messenger
上标识为灰色双勾。READ
表示消息已经读取,在Mixin Messenger
上标识为蓝色双勾。
ack
消息#
17. 批量发送 client.sendAcknowledgements([ { message_id: '', // 接收到的消息标识 status: '', // 消息的状态, 'READ' 表示已读, 'DELIVERED' 表示已送达 },]);
tip
- 数组长度最多为 100.
#
2. 文件操作#
1. 上传文件client.uploadFile(file);
返回值
{ "view_url": "xxx", "attachment_id": "xxx"}
tip
file
是一个File
对象,可以通过fs.readFileSync
来获取。- 返回值
view_url
是文件的下载地址。 - 返回值
attachment_id
可以用作发消息。
#
2. 获取文件解析出消息之后,会获得 attachment_id
,通过 attachment_id
可以获取文件。
client.showAttachment(attachment_id);
返回值
{ "view_url": "xxx", "attachment_id": "xxx"}
#
3. 发送多条消息client.sendMessages([ { conversation_id: '', // 会话的唯一标识 message_id: '', // 消息的唯一标识 category: '', // 消息的类型,详细的类型请查看 SDK data: '', // base64 的消息内容 recipient_id: '', // 可选,消息的接收者,发给群聊时,不带这个参数就会发给群聊的每一个人。带上的话,就只会发给群聊的某一个人 representative_id: '', // 可选,消息的发送者, quote_message_id: '', // 可选,被引用的消息的唯一标识 },]);
- 最大限制为 100 条。
- 整条消息最大限制为 1MB 。
- 超过上述限制,会发送失败。
- 如果调用此接口给同一个用户发送多条消息,那么消息送达顺序无法保证。如果需要保证消息发送顺序,请逐条发送。