接收消息的消息协议
更新于 2024-02-26当用户@群机器人或与机器人发送单聊消息时,钉钉会把机器人接收到的消息发送到开发者设置的机器人回调服务。
消息体
本示例以 text 文本类型为例。
参数 | 类型 | 说明 |
senderPlatform | String | 消息发送平台。 |
conversationId | String | 会话ID。 |
atUsers | Array of Object | 被@人的信息:
|
chatbotCorpId | String | 加密的机器人所在的企业corpId。 |
chatbotUserId | String | 加密的机器人ID。 |
msgId | String | 加密的消息ID。 |
senderNick | String | 发送者昵称。 |
isAdmin | Boolean | 是否为管理员:
机器人发布上线后生效,否则不返回。 |
senderStaffId | String | 企业内部群中@该机器人的成员 userId。 机器人发布上线后生效。否则不会返回。 |
sessionWebhookExpiredTime | Long | 当前会话的Webhook地址过期时间。 |
createAt | String | 消息的时间戳,单位毫秒。 |
senderCorpId | String | 企业内部群的发送者当前群的企业corpId。 |
conversationType | String | 会话类型:
|
senderId | String | 加密的发送者ID。 |
conversationTitle | String | 群聊时才有的会话标题。 |
isInAtList | Boolean | 是否在@列表中。 |
sessionWebhook | String | 当前会话的Webhook地址。 |
text | Object | 消息文本:
该字段仅在消息类型为 text 存在。 |
msgtype | String | 消息类型:
消息类型的具体格式参看下方消息类型。 |
robotCode | String | 机器人编码。 自定义机器人无 robotCode。 |
消息类型
机器人目前支持接收文本、语音、图片、文件、视频、富文本类型消息,下方为机器人接收各种消息类型的字段解释。除消息类型和消息体字段不同之外,其余参数字段与上面表格相同。
文本消息
Loading...参数
类型
说明
msgtype
String
消息类型:
text:文本消息
text
Object
消息文本:
content:机器人接收的消息内容。
富文本消息
Loading...名称
类型
描述
msgtype
String
消息类型:
richText:富文本
content
Object
消息内容。
richText
Array of Object
富文本列表。
说明消息列表中可以包含:
text:文本消息
picture:图片消息
图片文件的下载码downloadCode,可通过调用服务端API-下载机器人接收消息的文件内容接口获取临时下载链接。
图片消息
Loading...参数
类型
说明
msgtype
String
消息类型:
picture:图片消息
downloadCode
String
图片文件的下载码,用于换取下载图片的二进制文件,可通过调用服务端API-下载机器人接收消息的文件内容接口获取临时下载链接。
语音消息
说明群聊会话中,群成员 @机器人时,机器人不支持接收语音消息。
Loading...参数
类型
说明
msgtype
String
消息类型:
audio:语音消息
downloadCode
String
语音文件的下载码,用于换取下载语音的二进制文件,可通过调用服务端API-下载机器人接收消息的文件内容接口获取临时下载链接。
recognition
String
语音识别后的文本。
duration
Long
语音的时长,单位是毫秒。
视频消息
说明群聊会话中,群成员 @机器人时,机器人不支持接收视频消息。
Loading...参数
类型
说明
msgtype
String
消息类型:
video:视频消息
downloadCode
String
视频文件的下载码,用于换取下载视频的二进制文件,可通过调用服务端API-下载机器人接收消息的文件内容接口获取临时下载链接。
videoType
String
视频文件类型。
duration
Long
视频的时长,单位是毫秒。
文件消息
说明群聊会话中,群成员 @机器人时,机器人不支持接收文件消息。
Loading...参数
类型
说明
msgtype
String
消息类型:
video:文件消息
downloadCode
String
文件的下载码,用于换取下载文件的二进制文件,可通过调用服务端API-下载机器人接收消息的文件内容接口获取临时下载链接。
fileName
String
文件名。
相关内容
如果创建企业内部应用机器人时,消息接收模式选择了 HTTP模式,在机器人使用过程中,当机器人收到消息时,此时除了上述的消息体,此时还存在 HTTP header参数,格式如下:
参数 | 说明 |
timestamp | 消息发送的时间戳,单位是毫秒。 |
sign | 签名值。 |
你需要对 header 中的 timestamp 和 sign 进行验证,用来判断是否是来自钉钉的合法请求,避免其他仿冒钉钉调用开发者的HTTPS服务传送数据,具体验证逻辑如下:
timestamp 与系统当前时间戳如果相差1小时以上,则认为是非法的请求。
sign 与开发者自己计算的结果不一致,则认为是非法的请求。
当timestamp和sign同时验证通过,才能认为是来自钉钉的合法请求。
使用HmacSHA256算法计算签名,然后进行Base64 encode,得到最终的签名值,示例如下:
配置项 | 说明 |
timestamp | 当前时间的时间戳,单位毫秒 |
appSecret | 应用的 Client Secret,详情参考Client Secret。 |