消息已读事件
概述
Webhooks 说明文档可参考:Webhooks 概述
需要申请权限
- ◦通过小程序试运营期后自动开通权限
- ◦订阅消息已读事件须先申请 im.direct_message 权限
- ◦在开发者后台-设置-关联设置-抖音号管理为小程序经营者申请小程序消息已读能力
接收私信消息撤回事件包括事件如下:
事件名 | 事件介绍 |
im_message_read | 消息已读,用户读取消息触达 |
事件参数
参数 | | 类型 | 含义 |
event | | string | 事件名,唯一标识 消息已读:im_message_read |
from_user_id | | string | 发送方 open_id(私聊用户:经营者 / C 端用户) |
to_user_id | | string | 接收方 open_id(授权开发者应用的B端经营者) |
client_key | | string | 开发者唯一标识 |
log_id | | string | 事件推送 log_id,用于抖音内部排查问题使用 |
content | | struct | 具体内容,类型:结构体 |
| conversation_short_id | string | 会话 ID |
| conversation_type | int | 会话类型(1:私聊) |
| read_open_id | string | 读取消息用户 open_id |
| index | int | 会话内消息 index 索引,在会话内逐条消息索引递增 |
事件参数示例
{ "event": "im_message_read", "client_key": "ttddf8ab4542c7d76601", "from_user_id": "_000f9pF8lTroNtA9pfLjPohf1qIUzLdiWRs", "to_user_id": "_000bfeGRgbkwDMMksxyg4auRqXAPGIZk1pl", "content": { "conversation_short_id": "@4F8A0vXKXctkaiPzY485F6f81WSGOvmFOJB3rwivKFMQaPT00HDnemIujgn96zUFraoX3c4RU8SOd4uRCKWmdg==", "index": "1672502407220000", "conversation_type": 1, "read_open_id": "_000bfeGRgbkwDMMksxyg4auRqXAPGIZk1pl" } }
注意事项
- 1.经营者 / C 端用户一次性读取多条消息,只能收到最新消息已读事件回调;
- 2.
index在同一会话内顺序递增,消息已读事件在具体内容字段返回index,需要开发者自行将其与先前接收私信消息事件(im_receive_msg、im_send_msg)中的index进行匹配,即可判断具体哪些消息处于已读状态。例如,开发者上一次收到的已读事件中index为1672502407220000,当B端经营者发送三条新私信,开发者收到三条im_send_msg的回调,其中最新的事件回调中index字段标识最新的消息索引位置1672502407250000,这其中的均为未读消息,当C端用户读取消息时,开发者收到im_message_read的回调,其中的index为1672502407250000,标识此index消息均已读;- 3.当出现消息自见(由于风控等原因导致消息仅发送方可见)的情况,不会触发该事件;
- 4.授权开发者私信能力的用户读取消息时,均会触发事件。开发者需要根据 Webhook 事件中的
from_user_id和to_user_id字段进行区分,to_user_id为授权开发者应用的B端经营者,from_user_id为私聊用户;私聊 | 是否授权 | 推送 Webhook |
A - B | A 授权 B 未授权 | 只向 A 推送事件通知 |
A 未授权 B 授权 | 只向 B 推送事件通知 | |
A 授权 B 授权 | A 和 B 都推送事件通知 | |
A 未授权 B 未授权 | A 和 B 都不推送事件通知 |
