官方定义以下:npm
群机器人是钉钉群的高级扩展功能。群机器人能够将第三方服务的信息聚合到群聊中,实现自动化的信息同步。目前,大部分机器人在添加后,还须要进行Webhook配置,才可正常使用(配置说明详见操做流程中的帮助连接)。例如:json
经过聚合GitHub,GitLab等源码管理服务,实现源码更新同步。c#
经过聚合Trello,JIRA等项目协调服务,实现项目信息同步。api
另外,群机器人支持Webhook协议的自定义接入,支持更多可能性,例如:你可将运维 报警经过自定义机器人聚合到钉钉群实现提醒功能。服务器
实际上,经过机器人咱们能够对接各种服务,好比源码提交通知,服务器告警通知,甚至是能够主动查询天气、加班点餐等服务。markdown
目前钉钉机器人支持incoming
方式,outgoing
仍属于内侧阶段。官方文档能够点此查看。session
incoming
是指被动接受通知,钉钉群中添加的群机器人默认都是该模式。app
咱们添加的时候能够看到已经自带一些常见的机器人,比较推荐的是GitHub
、GitLab
、JIRA
、Travis
、Trello
,固然咱们此次须要选择最后的"自定义"机器人。 运维
在机器人信息栏填写"机器人姓名"便可,须要的话也能够设置一个头像。图中"是否开启Outgoing机制"在没有开通的状况下是不可见。工具
点击完成就会生成hook
地址,以下图:
咱们会用到"Hook地址",后面咱们发送消息都须要请求到该地址。
只要想Webhook
地址发起POST
请求,带上特定格式消息便可。
具体的接口文档能够看官方,这里不作扩展。
在一些简单的通知场景,咱们可使用npm
上面的轮子来快速实现。
outgoing
机器人的配置和前面基本同样,只须要额外配置POST 地址
以及Token
。
须要注意的是Token
保存后没法再次修改,POST 地址
就是钉钉机器人接受消息后调用的地址。
coprId
私发给他。目前每周四提交开通,预计周五会生效。
当群里有人@机器人时,钉钉会经过POST
方式回调咱们前面设置的地址,该地址实质是接口,能够在Body
中获取到消息内容。
截止撰写文章时,钉钉的outgoing
机器人文档不可访问,因此会在下面介绍下。
"Content-Type": "application/json; charset=utf-8" "token": "6a71a455ffcfba92a66"
{ // 会话id "conversationId": "8Yu7H8H8890kkl7h==", "atUsers": [ { "dingtalkId": "$:DFDS51:$R7E8dffdufdfjsdf2/oUCO/" } ], "chatbotUserId": "$:df3234:$sdfsdfsdfsdfd234234/oUCO/", "msgId": "msg4sdf35jh8jc9b51ss6/noYdzw==", "senderNick": "Neo", "isAdmin": false, "sessionWebhookExpiredTime": 1561711409165, // 消息发送的时间 "createAt": 1561710209132, // 群聊消息类型仍是单聊 "conversationType": "2", "senderId": "$:ASDD_v1:$df8sdfj&JS*J#FF==", // 当类型是群聊时,这个参数有效 "conversationTitle": "avalon", "isInAtList": true, // sessionWebhook是临时的发送消息接口 "sessionWebhook": "https://oapi.dingtalk.com/robot/sendBySession?session=qwe", // 消息内容 "text": { "content": "我就是我, 是不同的烟火" }, // 消息类型 "msgtype": "text", }
支持返回文本、图片和markdown
,actionCard
,feedCard
消息类型。
下面仅列出markdown
格式的消息,详细的文件能够参考网友提供的PDF,提取码: 4qht 。
{ "msgtype": "markdown", // 消息类型 "markdown": { "title":"杭州天气", // 消息主题 "text": "#### 杭州天气 @ptt6gbq @17681800905 \n" + "> 9度,西北风1级,空气良89,相对温度73%\n\n" + "> \n" + "> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n" // 消息体 }, "at": { // @的人员 "atMobiles": [ "17681800905" ], "atDingtalkIds": [ "ptt6gbq" ], "isAtAll": false } }
若是咱们回复的消息须要@某人,就会配置at
字段,里面atDingtalkIds
须要的dingtaklId
能够是咱们从请求中拿到的senderId
,即$:ASDD_v1:$k8DFJ837349On my way!==
的形式也能够传入正常@。
另外若是出于某些缘由,没法响应请求时返回消息,咱们还能够经过sessionWebhook
来主动发送消息。
本文同步发表于做者博客: 从零开始打造专属钉钉机器人