钉钉群聊机器人python发送消息

本文介绍如何使用Python通过HMAC和Base64对secret和access_token进行签名,以实现向钉钉机器人发送文本消息的过程,包括时间戳生成、字符串签名、HTTP请求和错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

import requests


def send_rebot(secret: str, access_token: str, content: str):
    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))
    url = 'https://oapi.dingtalk.com/robot/send?access_token=' + access_token + '&timestamp=' + timestamp + '&sign=' + sign
    headers = {'content-type': 'application/json',
               'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
    data = {
        "at": {},
        "text": {
            "content": content
        },
        "msgtype": "text"
    }

    r = requests.post(url, data=json.dumps(data), headers=headers)
    text = json.loads(r.text)

    return text["errmsg"] == 'ok'

**注意:**用json.dumps不是json.dump

### 使用Python实现钉钉群机器人消息发送 为了利用Python编写能够与钉钉集成并能向特定群组发送消息的应用程序,开发者需先完成必要的前期准备。这包括但不限于获取Webhook URL以及确保已启用相应的权限设置[^1]。 #### 创建自定义群机器人 在钉钉平台中创建一个新的自定义群机器人是必需的第一步操作。当选择“自定义”作为机器人类别时,用户会被引导至一个界面,在这里可以选择安全验证方式如设定关键词等措施来保障通信的安全性[^2]。 #### 获取Webhook地址 成功添加之后,系统会给出一段唯一的URL链接即所谓的Webhook地址;该地址对于后续构建HTTP请求至关重要,因为它指明了数据提交的目标位置[^3]。 #### Python代码实例 下面展示了一段简单的Python脚本用于演示如何调用POST方法并通过上述提到的Webhook接口发送一条文本形式的通知给定目标天室: ```python import requests import json def send_dingtalk_message(webhook, message): headers = {'Content-Type': 'application/json'} data = { "msgtype": "text", "text": {"content": f"{message}"} } response = requests.post(url=webhook, headers=headers, data=json.dumps(data)) if response.status_code == 200 and json.loads(response.text).get('errcode') == 0: print("Message sent successfully.") else: print(f"Failed to send message: {response.content}") if __name__ == "__main__": webhook_url = "your_webhook_here" msg_content = "Hello from DingTalk Bot!" send_dingtalk_message(webhook_url, msg_content) ``` 这段代码实现了基本的功能需求:它接受两个参数分别是之前保存下来的Webhook路径还有想要传达的信息主体内容,并尝试将其封装成JSON格式的数据包再经由`requests`库发起网络请求最终达到分享资讯的目的[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值