Python + 钉钉 实现消息通知

整个过程分为三步:

  1. 建立自己的钉钉消息接受群;
  2. 申请机器人;
  3. 通过Python 进行消息推送。
1 建立消息群

不做过多赘述

2 申请机器人

不做过多赘述

机器人配置主要看两部分,一个是访问地址及 Token 的获取,另一个是 安全设置,前者保证你能将消息准确发送到刚才新建的群里面,后者保证只有在满足你设定的拦截条件后消息才能发送到群里面。

前者的样式如下:

# xxx 代表具体的 token,每个群不一样
https://oapi.dingtalk.com/robot/send?access_token=xxx

钉钉通过三种方式保证消息的安全发送,即下图所示的关键字、加签及 IP 白名单
Python + 钉钉 实现消息通知_第1张图片
我们这里选择用第二种方式——加签,需要将上图中的 Webhook 地址 和 加签 的内容进行复制,等下第三步要用到。

3. 通过Python 进行消息推送

在官网上我们能够找到 Python 的部分示例代码。

import urllib.parse
import json
import time
import hmac
import hashlib
import base64
import urllib.parse
import requests

def ding_notify(message):
    # 这里替换为复制的完整 webhook 地址
    token = 'd24e65492a5bdc11e6c6c6ca0cf9837d74a3dd85006b352632efc6f275ebf310'
    prefix = f'https://oapi.dingtalk.com/robot/send?access_token={token}'
    timestamp = str(round(time.time() * 1000))
    # 这里替换为自己复制过来的加签秘钥
    secret = 'SEC981bd209c9438xxxxxxxxxxxxxxxxxxxxd4053d968'
    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))

    url = f'{prefix}×tamp={timestamp}&sign={sign}'

    # 钉钉消息格式,其中 msg 就是我们要发送的具体内容
    data = {
        "at": {
            "isAtAll": False, #true
            "atMobiles" :['178xxxxxxxx',]  # 需要at的人,列表,每个元素为手机号
        },
        "text": {
            "content": message
        },
        "msgtype": "text"
    }
    data = json.dumps(data)  #json.dumps()用于将字典形式的数据转化为字符串
    headers = {'Content-Type': 'application/json', "Charset": "UTF-8"}

    return requests.post(url=url, data=data, headers=headers,).text

#自行添加定义
job_id = 1
hosts = []
message = (
        f"新建批量流程:\n"
        f"JOB_ID: {job_id}\n"
    )
ding_notify(message)

上述代码中,除了汉字备注的部分,其余可视为固定写法。

接下来,我们在 Python 环境中执行代代码,钉钉群里便可收到消息。
Python + 钉钉 实现消息通知_第2张图片

你可能感兴趣的:(python,python,钉钉)