獲取自定義機器人webhook
步驟一,在機器人管理頁面選擇“自定義”機器人,輸入機器人名字並選擇要發送消息的群。如果需要的話,可以為機器人設置一個頭像。點擊“完成添加”,完成后會生成Hook地址,如下圖:
步驟二,點擊“復制”按鈕,即可獲得這個機器人對應的Webhook地址,其格式如下:
https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx
使用自定義機器人
(1)獲取到Webhook地址后,用戶可以向這個地址發起HTTP POST 請求,即可實現給該釘釘群發送消息。注意,發起POST請求時,必須將字符集編碼設置成UTF-8。
(2)當前自定義機器人支持文本 (text)、鏈接 (link)、markdown(markdown)、ActionCard、FeedCard消息類型,大家可以根據自己的使用場景選擇合適的消息類型,達到最好的展示樣式。
(3)自定義機器人發送消息時,可以通過手機號碼指定“被@人列表”。在“被@人列表”里面的人員收到該消息時,會有@消息提醒(免打擾會話仍然通知提醒,首屏出現“有人@你”)。
(4)當前機器人尚不支持應答機制 (該機制指的是群里成員在聊天@機器人的時候,釘釘回調指定的服務地址,即Outgoing機器人)。
SDK :
可以下載SDK,簡化調用方式。
消息發送頻率限制:
每個機器人每分鍾最多發送20條。消息發送太頻繁會嚴重影響群成員的使用體驗,大量發消息的場景 (譬如系統監控報警) 可以將這些信息進行整合,通過markdown消息以摘要的形式發送到群里。
測試自定義機器人
通過下面方法,可以快速驗證自定義機器人是否可以正常工作:
使用命令行工具curl(最新版本:7.29.0
)。
為避免出錯,請將以下命令直接復制到命令行,再將xxxxxxxx替換為真實access_token;若測試出錯,請檢查復制的命令是否和測試命令一致,多特殊字符會報錯
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \ -H 'Content-Type: application/json' \ -d '{"msgtype": "text", "text": { "content": "我就是我, 是不一樣的煙火" } }'
python示例:
#!/usr/bin/env python # -*- coding: utf-8 -*- #author tom import requests import json def dingTalk(): headers={ "Content-Type": "application/json" } data={"msgtype": "text", "text": { "content": "我就是我, 是不一樣的煙火" } } json_data=json.dumps(data) requests.post(url='https://oapi.dingtalk.com/robot/send?access_token=35fd4b08dea143f19921121f0a6282dcb014ebb11dae72114ed569c9effe8e5e',data=json_data,headers=headers)
消息類型及數據格式
text類型
{
"msgtype": "text", "text": { "content": "我就是我, 是不一樣的煙火@156xxxx8827" }, "at": { "atMobiles": [ "156xxxx8827", "189xxxx8325" ], "isAtAll": false } }
參數 |
參數類型 |
必須 |
說明 |
msgtype |
String |
是 |
消息類型,此時固定為:text |
content |
String |
是 |
消息內容 |
atMobiles |
Array |
否 |
被@人的手機號(在content里添加@人的手機號) |
isAtAll |
bool |
否 |
@所有人時:true,否則為:false |
link類型
{
"msgtype": "link", "link": { "text": "這個即將發布的新版本,創始人陳航(花名“無招”)稱它為“紅樹林”。 而在此之前,每當面臨重大升級,產品經理們都會取一個應景的代號,這一次,為什么是“紅樹林”?", "title": "時代的火車向前開", "picUrl": "", "messageUrl": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI" } }
參數 |
參數類型 |
必須 |
說明 |
msgtype |
String |
是 |
消息類型,此時固定為:link |
title |
String |
是 |
消息標題 |
text |
String |
是 |
消息內容。如果太長只會部分展示 |
messageUrl |
String |
是 |
點擊消息跳轉的URL |
picUrl |
String |
否 |
圖片URL |
markdown類型
{
"msgtype": "markdown", "markdown": { "title":"杭州天氣", "text": "#### 杭州天氣 @156xxxx8827\n" + "> 9度,西北風1級,空氣良89,相對溫度73%\n\n" + "> \n" + "> ###### 10點20分發布 [天氣](http://www.thinkpage.cn/) \n" }, "at": { "atMobiles": [ "156xxxx8827", "189xxxx8325" ], "isAtAll": false } }
參數 |
類型 |
必選 |
說明 |
msgtype |
String |
是 |
此消息類型為固定markdown |
title |
String |
是 |
首屏會話透出的展示內容 |
text |
String |
是 |
markdown格式的消息 |
atMobiles |
Array |
否 |
被@人的手機號(在text內容里要有@手機號) |
isAtAll |
bool |
否 |
@所有人時:true,否則為:false |
說明:目前只支持md語法的子集,具體支持的元素如下:
標題
# 一級標題 ## 二級標題 ### 三級標題 #### 四級標題 ##### 五級標題 ###### 六級標題 引用 > A man who stands for nothing will fall for anything. 文字加粗、斜體 **bold** *italic* 鏈接 [this is a link](http://name.com) 圖片  無序列表 - item1 - item2 有序列表 1. item1 2. item2
整體跳轉ActionCard類型
{
"actionCard": { "title": "喬布斯 20 年前想打造一間蘋果咖啡廳,而它正是 Apple Store 的前身", "text": " ### 喬布斯 20 年前想打造的蘋果咖啡廳 Apple Store 的設計正從原來滿滿的科技感走向生活化,而其生活化的走向其實可以追溯到 20 年前蘋果一個建立咖啡館的計划", "hideAvatar": "0", "btnOrientation": "0", "singleTitle" : "閱讀全文", "singleURL" : "https://www.dingtalk.com/" }, "msgtype": "actionCard" }
參數 |
類型 |
必選 |
說明 |
msgtype |
string |
true |
此消息類型為固定actionCard |
title |
string |
true |
首屏會話透出的展示內容 |
text |
string |
true |
markdown格式的消息 |
singleTitle |
string |
true |
單個按鈕的方案。(設置此項和singleURL后btns無效) |
singleURL |
string |
true |
點擊singleTitle按鈕觸發的URL |
btnOrientation |
string |
false |
0-按鈕豎直排列,1-按鈕橫向排列 |
hideAvatar |
string |
false |
0-正常發消息者頭像,1-隱藏發消息者頭像 |
通過整體跳轉ActionCard類型消息發出的消息樣式如下:
獨立跳轉ActionCard類型
{
"actionCard": { "title": "喬布斯 20 年前想打造一間蘋果咖啡廳,而它正是 Apple Store 的前身", "text": " ### 喬布斯 20 年前想打造的蘋果咖啡廳 Apple Store 的設計正從原來滿滿的科技感走向生活化,而其生活化的走向其實可以追溯到 20 年前蘋果一個建立咖啡館的計划", "hideAvatar": "0", "btnOrientation": "0", "btns": [ { "title": "內容不錯", "actionURL": "https://www.dingtalk.com/" }, { "title": "不感興趣", "actionURL": "https://www.dingtalk.com/" } ] }, "msgtype": "actionCard" }
參數 |
類型 |
必選 |
說明 |
msgtype |
string |
true |
此消息類型為固定actionCard |
title |
string |
true |
首屏會話透出的展示內容 |
text |
string |
true |
markdown格式的消息 |
btns |
array |
true |
按鈕的信息:title-按鈕方案,actionURL-點擊按鈕觸發的URL |
btnOrientation |
string |
false |
0-按鈕豎直排列,1-按鈕橫向排列 |
hideAvatar |
string |
false |
0-正常發消息者頭像,1-隱藏發消息者頭像 |
通過獨立跳轉ActionCard類型消息發出的消息樣式如下:
FeedCard類型
{
"feedCard": { "links": [ { "title": "時代的火車向前開", "messageURL": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI", "picURL": "https://www.dingtalk.com/" }, { "title": "時代的火車向前開2", "messageURL": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI", "picURL": "https://www.dingtalk.com/" } ] }, "msgtype": "feedCard" }
參數 |
類型 |
必選 |
說明 |
msgtype |
string |
true |
此消息類型為固定feedCard |
title |
string |
true |
單條信息文本 |
messageURL |
string |
true |
點擊單條信息到跳轉鏈接 |
picURL |
string |
true |
單條信息后面圖片的URL |
通過FeedCard類型消息發出的消息樣式如下: