Python實現釘釘傳送報警訊息的方法

2022-10-03 08:51:12 字數 3714 閱讀 3534

釘釘開放平台傳送門:

我司使用釘釘作為內部通訊工具,基本上大家在電腦和手機上都開著,訊息可以第一時間檢視,報警訊息的即時性要求比較高,所以適合用釘釘通知。

下面介紹如何用python實現釘釘傳送報警訊息。

獲取access token

要使用釘釘傳送訊息,首先需要獲取access token,**如下:

def get_access_token():

url = '' % (corp_id, corp_secret)

request = urllib2.request(url)

response = urllib2.urlopen(request)

response_str = response.read()

response_dict = json.loads(response_str)

error_code_key = "errcode"

access_token_key = "access_token"

if response_dict.has_key(error_code_key) and response_dict[error_code_key] == 0 and response_dict.has_key(access_token_key):

return response_dict[access_token_key]

else:

return ''

access token在2小時內有效,有效期內重複獲取返回相同結果,有效期會自動延長。corp_id和corp_secret是企業的id和secret,在釘釘的管理後台可以找到。另外,上面用到了urllib2和json,需要import:

import urllib2

import json

訊息型別

釘釘的訊息型別分為:text,image,voice,file,link和oa,具體訊息格式參見: 。

下面以傳送文字,鏈結和檔案訊息為例進行說明。

給使用者傳送訊息

傳送文字

def send_text_to_users(access_token, users, text):

msg_type, msg = _gen_text_msg(text)

return _send_msg_to_users(access_token, users, msg_type, msg)

def _gen_text_msg(text):

msg_type = 'text'

msg =

return msg_type, msg

def _send_msg_to_users(access_token, users, msg_type, msg):

to_users = '|'.join(users)

body_dict =

body_dict[msg_type] = msg

body = json.dumps(body_dict)

return _send_msg("", access_token, body)

其中agent_id是乙個釘釘應用的id,以釘釘應用的名義給使用者傳送訊息。users是使用者id列表,每個使用者id是乙個字串。

傳送鏈結

def send_link_to_users(access_token, users, url, title, text):

msg_type, msg = _gen_link_msg(url, title, text)

return _send_msg_to_users(access_token, users, msg_type, msg)

def _gen_link_msg(url, title, text):

msg_type = 'link'

msg =

return msg_type, msg

其中_send_msg_to_users方法參見前面的**,picurl欄位設定的是釘釘官方的,這裡用於測試。

傳送檔案

def send_file_to_users(access_token, users, file_name):

media_id = upload_file(access_token, file_name)

if media_id == '':

return

msg_type, msg = _gen_file_msg(media_id)

return _send_msg_to_users(access_token, users, msg_type, msg)

def upload_file(access_tokwww.cppcns.comwww.cppcns.comen, file_name):

register_openers()

datagen, headers = multipart_encode()

requst_url = '' + access_token + '&type=file'

request = urllib2.request(requst_url, datagen, headers)

response = urllib2.urlopen(request)

response_str = response.read()

response_dict = json.load

media_id_key = 'media_id'

error_code_key = 'errcode'

if response_dict.has_key(error_code_key) and response_dict[error_code_key] == 0 and response_dict.has_key(media_id_key):

return response_dict[media_id_key]

else:

return ''

需要先上傳檔案獲得media_id,然後使用media_id將檔案傳送給使用者。另外,這裡用到了poster,可使用pip安裝:

pip install poster

之後引入multipart_encode和register_openers函式:

給群會話傳送訊息

與給使用者傳送資訊類似,區別是需要群會話id,而不是使用者列表,以傳送文字訊息為例,**如下:

def send_textwww.cppcns.com_to_chat(access_token, chat_id, text):

msg_type, msg = _gen_text_msg(text)

return _send_msg_to_chat(access_token, chat_id, msg_type, msg)

def _send_msg_to_chat(access_token, chat_id, msg_type, msg):

body_dict =

body_dict[msg_type] = msg

body = json.dumps(body_dict)

return _send_msg("", access_token, body)

其中_gen_text_msg方法參見前面的**。

群會話可以自行建立,參見 。

本文標題: python實現釘釘傳送報警訊息的方法

本文位址:

Python實現釘釘傳送報警訊息

給群會話傳送訊息 釘釘開放平台傳送門 我司使用釘釘作為內部通訊工具,基本上大家在電腦和手機上都開著,訊息可以第一時間檢視,報警訊息的即時性要求比較高,所以適合用釘釘通知。下面介紹如何用python實現釘釘傳送報警訊息。要使用釘釘傳送訊息,首先需要獲取access token,如下 def get a...

php釘釘機械人,php實現釘釘業務報警機械人

使用場景,伺服器報異常錯誤,想要及時收到報警資訊並處理 環境介紹,本博使用yaf框架 php,僅僅提供思路,參考,具體根據自己實際情況進行編寫 1,每十分鐘執行一次任務指令碼 每10分鐘執行一次的任務 if 0 eq minute 10 then php f public index.php req...

Python實現釘釘群訊息推送

對於某些自動化任務執行結果反饋,使用釘釘機械人訊息替換繁瑣的郵件傳送方式使用釘釘機械人api,可以將任何你需要的服務訊息推送到釘釘 參考文件 釘釘機械人api介面文件 python import requests import json defsend dingding access token,u...