一、实现效果

Java钉钉开机器人发送图片消息 钉钉机器人 图片_springboot钉钉机器人

二、交互流程

用户在群里@钉钉机器人,开发者服务器处理后,将@消息推送到群中的流程涉及到三个角色:钉钉客户端、钉钉服务器、开发者服务器

三者交互时序图如下:

Java钉钉开机器人发送图片消息 钉钉机器人 图片_钉钉_02

注意,当前机器人尚不支持应答机制 (该机制指的是群里成员在聊天@机器人的时候,钉钉回调指定的开发者服务地址,并不会将开发者服务地址响应的结果发送到群中),需要开发者服务单独将消息发送到钉钉服务器的webhook地址。

三、如何创建自定义机器人

创建流程:群设置——》智能群助手——》添加机器人——》自定义——》配置机器人(加签、post回调地址和token)——》保存access_token——》完成!

图示:

Java钉钉开机器人发送图片消息 钉钉机器人 图片_钉钉Outgoing机器人_03


Java钉钉开机器人发送图片消息 钉钉机器人 图片_钉钉_04


Java钉钉开机器人发送图片消息 钉钉机器人 图片_钉钉_05

这一步比较重要加签开启Outgoing机制填写POST回调地址和Token

  • 加签很重要,要记到小本本上!加签用于开发者服务器访问钉钉服务器时校验。另外还可以通过关键字IP地址(段)安全设置进行校验。
  • 开启Outgoing机制用于用户@钉钉客户端的机器人时,回调开发者服务器接口使用,回调时会携带token

本地测试时回调地址时,可以使用内网穿透等工具将内网服务接口暴露到外网。(我使用的是Ngrok

Java钉钉开机器人发送图片消息 钉钉机器人 图片_钉钉Outgoing机器人_06

这里access_token很重要,要记到小本本上。access_token用于开发者服务回调webhook(钉钉服务器)时,指定发送消息的机器人

Java钉钉开机器人发送图片消息 钉钉机器人 图片_Java钉钉开机器人发送图片消息_07

至此钉钉Outgoing机器人创建完成。

四、开发者服务器

1. 服务器端重点

如何接收用户@机器人的信息和启用Outgoing时的token?

用户@的信息在http body里面,token在http header里面

Java钉钉开机器人发送图片消息 钉钉机器人 图片_钉钉_08

如何发送@用户消息?

发送的消息中携带“@手机号”即可。手机号可以通过用户名称从钉钉接口获取,或者从你们公司内部的hr系统接口获取。

2. 源码

服务器端源码

参考