python实现钉钉自动发送消息at某一个人

一、在某一个钉钉群里面创建机器人获取 Webhook、secret

 

 

二、实现代码(分两块)

#coding=utf-8

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


class DingDingWebHook(object):
    def __init__(self, secret=None, url=None):
       
        if secret is not None:
            secret = secret
       
        if url is not None:
            url = url
        
        timestamp = 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))  # 最终签名

        self.webhook_url = url + '&timestamp={}&sign={}'.format(timestamp, sign)  # 最终url,url+时间戳+签名

    def send_meassage(self, data):
        
        header = {
            "Content-Type": "application/json",
            "Charset": "UTF-8"
        }
        send_data = json.dumps(data)  # 将字典类型数据转化为json格式
        send_data = send_data.encode("utf-8")  # 编码为UTF-8格式
        request = urllib.request.Request(url=self.webhook_url, data=send_data, headers=header)  # 发送请求

        opener = urllib.request.urlopen(request)  # 将请求发回的数据构建成为文件格式
        

 

 

# -*- coding: utf-8 -*-

from datetime import datetime
from at_dingtalk import DingDingWebHook


if __name__ == '__main__':
    my_secret = 'SEC4479571c5c0c9d4363b2f4***'
    my_url = 'https://oapi.dingtalk.com/robot/***'
    my_data = {
        'msgtype':"text",
        "text":{
            'content':'test'
        }, 
        "at":{
       # 指定人的电话号码,可以写多个电话号码
       
"atMobiles":[18988265530],
       # 不at所有人
"isAtAll":False } } dingding = DingDingWebHook(secret=my_secret, url=my_url) dingding.send_meassage(my_data)
posted @ 2021-03-16 15:09  梅梅不想踩坑  阅读(2436)  评论(0编辑  收藏  举报