python---發送釘釘消息


釘釘:
1、自定義機器人
#釘釘智能群助手,機器人管理 添加機器人-自定義機器人-添加-安全設置-加簽(生成秘鑰)
#自定義關鍵詞-生成一個接口-復制一下
#群提供接口-調用接口-發消息-返回-查看文檔-服務端API-消息通知-普通消息(發送給某個人的)
#群機器人-自定義機器人介入-

# 安全設置-關鍵字類型
加簽-字符串
# 接口發送
# 調用看下是否通

# https://oapi.dingtalk.com/robot/send?access_token=78d41c3d83bb06a4ff3cb25b0bdf1fe67e8dc7f04d2a5c1a058406e3109249fd
# #token是群信息,換個群就換后邊
# https://developers.dingtalk.com/document/robots/custom-robot-access


2、發送消息
{
"at": {
"atMobiles": [
"18513112593",
"15503122090"
],

"isAtAll": true #@所有
},
"text": {
"content": "我是機器人,thz"
},
"msgtype": "text"
}

3、群發送消息
import requests
url = "https://oapi.dingtalk.com/robot/send"

token = {"access_token":"78d41c3d83bb06a4ff3cb25b0bdf1fe67e8dc7f04d2a5c1a058406e3109249fd"} #定義成字典去改他

data = {
"at": {
"atMobiles":[
"18513112593",
"15503122090"
],

"isAtAll": True
},
"text": {
"content":"我是王帥,thz,這是寫代碼發送的"
},
"msgtype":"text"
}


r = requests.post(url,params=token,json=data) #請求參數穿到URL里面用 paramsjson類型接口

print(r.json())


4、加簽類型的
import time
import hmac
import hashlib
import base64
import urllib.parse
timestamp = str(round(time.time() * 1000)) #時間戳
secret_enc = secret.encode('utf-8') #需要復制下加簽的
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))#簽名

token = {"access_token":"78d41c3d83bb06a4ff3cb25b0bdf1fe67e8dc7f04d2a5c1a058406e3109249fd","timestamp":timestamp,"sign":sign}


5、封裝 只需要改下新的:token secret
import requests
import time
import hmac
import hashlib
import base64
import urllib.parse

from loguru import logger #打印日志

def get_dding_sign(secret):#不同的機器人要變把這個secret傳進來
timestamp = str(round(time.time() * 1000)) #
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
return timestamp, sign

def send_dd_msg(msg, token="78d41c3d83bb06a4ff3cb25b0bdf1fe67e8dc7f04d2a5c1a058406e3109249fd",secret="SEC69aaceefa47d21845255b7daed7cbd1a4d2a9930981c21d0ee11ae41a6ca06be", at=None, at_all=False):
url = "https://oapi.dingtalk.com/robot/send"
timestamp, sign = get_dding_sign(secret)
url_params = {"access_token": token, "timestamp": timestamp, "sign": sign}
data = {
"at": {
"atMobiles": at,

"isAtAll": at_all
},
"text": {
"content": msg
},
"msgtype": "text"
}
r = requests.post(url, params=url_params, json=data)
ret = r.json()
if ret.get("errcode") != 0:
logger.warning("釘釘消息發送失敗!返回報文是:{}",ret)
return False
logger.info("釘釘消息發送成功")
return True

if __name__ == '__main__':
send_dd_msg("外面風好大,不要外出",at=["18513112593","15503122090"])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM