https://github.com/zhuifengshen/DingtalkChatbot
一、釘釘自定義機器人介紹
釘釘機器人是釘釘群的一個高級擴展功能,但使用起來卻非常簡單,只需要注冊一個釘釘賬號,就可以將第三方服務信息聚合到釘釘群中,實現信息的自動同步。
常見的使用場景:
1、聚合Github、Gitlab等源碼管理服務,實現源碼更新同步;
2、聚合Trello、JIRA等項目協調服務,實現項目信息同步;
3、機器人支持Webhook自定義接入,就可以實現更多可能性,例如:將運維報警、自動化測試結果報告、工作&生活日程安排(上班打卡、下班吃飯、健身、讀書、生日、紀念日...)的提醒;
目前自定義機器人支持文本(text)、鏈接(link)、markdown三種消息格式,五種消息類型,詳細信息請參考自定義機器人官方文檔
二、安裝使用
這么好用的功能,只要在釘釘群中添加機器人,得到Webhoo地址即可。接下來,我們先在命令行終端一睹為快吧:
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "我就是我, 是不一樣的煙火"
}
}'
由於各種消息調用,官方只提供Java語言的封裝,平時使用Python比較多,為了更方便平時自動化項目的使用,周末花了點時間用Python語言對各種消息類型進行了一一封裝,代碼已開源在GitHub上,同時也上傳了PyPI。
1、項目源碼地址如下:
DingtalkChatbot
2、安裝和更新命令如下:
pip install DingtalkChatbot pip install -U DingtalkChatbot
3、支持功能如下:
- 支持Text消息;
- 支持Link消息;
- 支持image表情消息;
- 支持Markdown消息;
- 支持ActionCard消息;
- 支持消息發送失敗時自動通知(默認fail_notice=False不通知,開發者可根據返回的消息發送結果自行判斷處理)
- 支持設置消息鏈接打開方式(默認pc_slide=False,跳轉至瀏覽器打開,pc_slide=True,則在PC端側邊欄打開)
- 支持釘釘官方消息發送頻率限制限制:每個機器人每分鍾最多發送20條;
- 支持Python2、Python3;
- 支持釘釘企業內部機器人自定義outgoing機器人消息發送;
- 支持最新版釘釘機器人加密設置密鑰驗證;
三、各消息類型使用示例
from dingtalkchatbot.chatbot import DingtalkChatbot, ActionCard, CardItem # WebHook地址 webhook = 'https://oapi.dingtalk.com/robot/send?access_token=這里填寫自己釘釘群自定義機器人的token' secret = 'SEC11b9...這里填寫自己的加密設置密鑰' # 可選:創建機器人勾選“加簽”選項時使用 # 初始化機器人小丁 xiaoding = DingtalkChatbot(webhook) # 方式一:通常初始化方式 xiaoding = DingtalkChatbot(webhook, secret=secret) # 方式二:勾選“加簽”選項時使用(v1.5以上新功能) xiaoding = DingtalkChatbot(webhook, pc_slide=True) # 方式三:設置消息鏈接在PC端側邊欄打開(v1.5以上新功能) # Text消息@所有人 xiaoding.send_text(msg='我就是小丁,小丁就是我!', is_at_all=True)
# Text消息之@指定用戶
at_mobiles = ['這里填寫需要提醒的用戶的手機號碼,字符串或數字都可以'] xiaoding.send_text(msg='我就是小丁,小丁就是我!', at_mobiles=at_mobiles)
# image表情消息
xiaoding.send_image(pic_url='http://uc-test-manage-00.umlife.net/jenkins/pic/flake8.png')
# Link消息
xiaoding.send_link(title='萬萬沒想到,李小璐竟然...', text='故事是這樣子的...', message_url='http://www.kwongwah.com.my/?p=454748", pic_url="https://pbs.twimg.com/media/CEwj7EDWgAE5eIF.jpg')
# Markdown消息@所有人
xiaoding.send_markdown(title='氧氣文字', text='#### 廣州天氣\n' '> 9度,西北風1級,空氣良89,相對溫度73%\n\n' '> \n' '> ###### 10點20分發布 [天氣](http://www.thinkpage.cn/) \n', is_at_all=True)
# Markdown消息@指定用戶
xiaoding.send_markdown(title='氧氣文字', text='#### 廣州天氣 @1882516xxxx\n' '> 9度,西北風1級,空氣良89,相對溫度73%\n\n' '> \n' '> ###### 10點20分發布 [天氣](http://www.thinkpage.cn/) \n', at_mobiles=at_mobiles)
# FeedCard消息類型(注意:當發送FeedCard時,pic_url需要傳入參數值,必選)
card1 = CardItem(title="氧氣美女", url="https://www.dingtalk.com/", pic_url="https://unzippedtv.com/wp-content/uploads/sites/28/2016/02/asian.jpg") card2 = CardItem(title="氧眼美女", url="https://www.dingtalk.com/", pic_url="https://unzippedtv.com/wp-content/uploads/sites/28/2016/02/asian.jpg") card3 = CardItem(title="氧神美女", url="https://www.dingtalk.com/", pic_url="https://unzippedtv.com/wp-content/uploads/sites/28/2016/02/asian.jpg") cards = [card1, card2, card3] xiaoding.send_feed_card(cards)
# ActionCard整體跳轉消息類型
btns1 = [CardItem(title="查看詳情", url="https://www.dingtalk.com/")] actioncard1 = ActionCard(title='萬萬沒想到,竟然...', text=' \n### 故事是這樣子的...', btns=btns1, btn_orientation=1, hide_avatar=1) xiaoding.send_action_card(actioncard1)
# ActionCard獨立跳轉消息類型(雙選項)
btns2 = [CardItem(title="支持", url="https://www.dingtalk.com/"), CardItem(title="反對", url="https://www.dingtalk.com/")] actioncard2 = ActionCard(title='萬萬沒想到,竟然...', text=' \n### 故事是這樣子的...', btns=btns2, btn_orientation=1, hide_avatar=1) xiaoding.send_action_card(actioncard2)
# ActionCard獨立跳轉消息類型(列表選項)
btns3 = [CardItem(title="支持", url="https://www.dingtalk.com/"), CardItem(title="中立", url="https://www.dingtalk.com/"), CardItem(title="反對", url="https://www.dingtalk.com/")] actioncard3 = ActionCard(title='萬萬沒想到,竟然...', text=' \n### 故事是這樣子的...', btns=btns3, btn_orientation=1, hide_avatar=1) xiaoding.send_action_card(actioncard3)
四、常見注意事項
- 1、at_mobiles列表上的手機號默認自動添加到消息文本末尾,可將參數改為is_auto_at=False取消自動化添加,在消息文本自定義@的位置,支持同時@多個手機號,以便突出對應的人去關注對應的內容;
- 2、圖片鏈接是Http,在網頁版釘釘無法正常顯示,在客戶端則可以,需要更改為使用Https;
- 3、消息鏈接打開方式可以在初始化機器人時設置(默認pc_slide=False,跳轉至瀏覽器打開,pc_slide=True,則在PC端側邊欄打開);
五、添加機器人之后,如果不想要機器人了,怎么從釘釘群移除掉?
1、

2、

3、

4、

5、











