1. 程式人生 > 其它 >釘釘自定義機器人介紹

釘釘自定義機器人介紹

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'
                           '> ![美景](http://www.sinaimg.cn/dy/slidenews/5_img/2013_28/453_28488_469248.jpg)\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'
                       '> ![美景](http://www.sinaimg.cn/dy/slidenews/5_img/2013_28/453_28488_469248.jpg)\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='![選擇](http://www.songshan.es/wp-content/uploads/2016/01/Yin-Yang.png) \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='![選擇](http://www.songshan.es/wp-content/uploads/2016/01/Yin-Yang.png) \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='![選擇](http://www.songshan.es/wp-content/uploads/2016/01/Yin-Yang.png) \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端側邊欄開啟);