官方定義以下: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" + "> ![screenshot](http://image.jpg)\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
來主動發送消息。
本文同步發表於做者博客: 從零開始打造專屬釘釘機器人