什麼是釘釘機器人?npm
羣機器人是釘釘羣的高級擴展功能。羣機器人能夠將第三方服務的信息聚合到羣聊中,實現自動化的信息同步。目前,大部分機器人在添加後,還須要進行Webhook配置,纔可正常使用(配置說明詳見操做流程中的幫助連接)。json
例如:c#
經過聚合GitHub,GitLab等源碼管理服務,實現源碼更新同步。api
經過聚合Trello,JIRA等項目協調服務,實現項目信息同步。bash
另外,羣機器人支持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
來主動發送消息。
本文同步發表於做者博客: 從零開始打造專屬釘釘機器人