美文网首页
用Python向钉钉发送消息

用Python向钉钉发送消息

作者: 简单点的笨演员 | 来源:发表于2023-04-26 15:28 被阅读0次

    一、新建群机器人

    首先手机版钉钉创建一个群,在电脑版钉钉打开群设置,点击机器人:


    下一步,选择“Webhook”的机器人:


    Webhook

    下一步,要选择“加签”,复制里面的密钥,保存好后面要用:


    加签

    下一步,复制里面的Webhook地址,保存好后面要用:


    Webhook地址

    二、代码

    使用上面的密钥修改SECRET ,使用上面的Webhook地址修改WEBHOOK_URL ,即可:

    import time
    import hmac
    import hashlib
    import base64
    import urllib.parse
    import json
    import urllib.request
    
    SECRET = 'xxxxxxxxxx'
    WEBHOOK_URL = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx'
    
    '''
    消息内容常用Markdown格式:
    
    标题
    # 一级标题
    ## 二级标题
    ### 三级标题
    #### 四级标题
    ##### 五级标题
    ###### 六级标题
    
    引用
    > A man who stands for nothing will fall for anything.
    
    文字加粗、斜体
    **bold**
    *italic*
    
    链接
    [this is a link](http://name.com)
    
    图片
    ![](http://name.com/pic.jpg)
    
    无序列表
    - item1
    - item2
    
    有序列表
    1. item1
    2. item2
    '''
    
    def send_message(title: str, text: str, isAtAll: bool):
        timestamp = str(round(time.time() * 1000))
        secret = f'{SECRET}'
        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'{WEBHOOK_URL}&timestamp={timestamp}&sign={sign}'
    
        header = {
            "Content-Type": "application/json",
            "Charset": "UTF-8"
        }
        data = {
            "msgtype": "markdown",
            "markdown": {"title": title,
                         "text": text
                         },
            "at": {
                "isAtAll": isAtAll      # isAtAll:是否@所有人
            }
        }
        sendData = json.dumps(data)
        sendDatas = sendData.encode("utf-8")
        request = urllib.request.Request(url=url, data=sendDatas, headers=header)
        opener = urllib.request.urlopen(request)
        ret = opener.read()
        # 输出响应结果
        print(ret)
    
    if __name__ == '__main__':
        send_message("this is title", 'this is message **bold**', True)
    

    三、参考

    办公利器:用Python向钉钉发送消息 --- blog.csdn.net/qq_43965708/article/details/125309826

    相关文章

      网友评论

          本文标题:用Python向钉钉发送消息

          本文链接:https://www.haomeiwen.com/subject/cupvjdtx.html