钉钉群机器人设置——python版本

钉钉群机器人设置------python版本

应用场景

由于工作需要,很多项目执行程序后出现报错信息无法第一时间收到,因此实时预警对于监控程序还是有必要。(仅个人观点
参考文档及博客
钉钉官方文档
个人博客

钉钉界面操作

1.钉钉群------群设置------机器人

  1. 添加机器人------自定义 类型------添加
  1. 定义机器人名称------勾选加签 ------完成

4.webhook是自动生成的,access_token是代码中access_token,也是自动生成

5.添加机器人成功

程序开发

程序中主要展示需要 @指定人推送内容
@指定人 : 官方文档给出两种方式,可能我操作不对,只能实现使用手机实现@指定人的。有机智的小伙伴可以尝试一下官方文档上的另一种方式
推送内容:推送的内容格式官方给出了几种,我只尝试使用文本和markdown。有机智的小伙伴可以尝试一下官方文档上的另外几种方式

python 复制代码
# -*- coding:utf-8 -*-
# @Time : 2025/1/21 11:51
# @Author: 水兵没月
# @File : Dingding_jqr.py
# @Software: PyCharm
import sys
import traceback
from urllib import parse

import requests
import time
import hashlib
import base64
import hmac
import json
from fake_useragent import UserAgent
# 钉钉Webhook地址
webhook = "https://oapi.dingtalk.com/robot/send"
access_token = "01010f5983cdc79d006eda01b4e**************379cd8ba0e42693"   # webhook 自动生成
secret = "SEC098e6793d38e0154a1f81a********************ebf02ae2ff74ca"  # 钉钉上可以生成
mobile_list = ["137*******"]   # @指定人的列表

# 加签函数
def get_sign(secret):
    timestamp = str(int(time.time() * 1000))  # 当前时间戳(毫秒)
    secret_byte = bytes(timestamp +'\n'+secret, encoding='utf-8')  # 创建签名数据
    hmac_key = bytes(secret, encoding='utf-8')  # 使用secret创建HMAC密钥
    sign = hmac.new(hmac_key, secret_byte, digestmod=hashlib.sha256).digest()  # 生成签名
    sign_base64 = parse.quote_plus(base64.b64encode(sign))
    return sign_base64, timestamp  # 返回签名和时间戳

# 发送消息函数
def send_message(content):
    sign, timestamp = get_sign(secret)  # 获取签名和时间戳
    url = f"{webhook}?access_token={access_token}&timestamp={timestamp}&sign={sign}"  # 拼接成最终请求地址
    stauts = content["stauts"]
    stauts = "成功" if stauts else "失败"
    msg_except = content["exception"]
    msg_time = str(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(time.time()))))
    # markdown 类型展示
    message = {
     "msgtype": "markdown",
     "markdown": {
         "title":"程序执行情况",
         "text": f"**执行情况: {stauts}**\n\n"
                 f"**服务器类型: {sys.platform}**\n\n"
                 f"**异常信息: {msg_except}**\n\n"
                 f"**时间: {msg_time}**\n\n @137*******"
     },
      "at": {
          "atMobiles": mobile_list,
          "isAtAll": False
      }
 }
 	# 文本类型展示
    # message = {
    #     "msgtype": "text",  # 消息类型
    #     "at": {
    #       "atMobiles": mobile_list,
    #       "atUserIds": [],
    #       "isAtAll": False
    #     },
    #     "text": {
    #     "content": f"{content}+"+"@137*******"
    #     },
    # }
    headers = {'Content-Type': 'application/json', "User-Agent":UserAgent().Chrome}  # 设置请求头
    response = requests.post(url, data=json.dumps(message), headers=headers)  # 发送请求

    # 打印响应结果
    if response.status_code == 200:
        return response.json()
    else:
        return response.text

效果展示

相关推荐
tjjucheng几秒前
小程序定制开发服务商推荐
python
囊中之锥.几秒前
《从零到实战:基于 PyTorch 的手写数字识别完整流程解析》
人工智能·pytorch·python
子云之风8 分钟前
LSPosed 项目编译问题解决方案
java·开发语言·python·学习·android studio
小北方城市网8 分钟前
SpringBoot 全局异常处理与接口规范实战:打造健壮可维护接口
java·spring boot·redis·后端·python·spring·缓存
SunnyRivers33 分钟前
打包 Python 项目
python·打包
万行34 分钟前
机器人系统SLAM讲解
开发语言·python·决策树·机器学习·机器人
我的xiaodoujiao34 分钟前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 40--完善优化 Allure 测试报告显示内容
python·学习·测试工具·pytest
WinstonJQ35 分钟前
AirSim无人机仿真入门(一):实现无人机的起飞与降落
python·机器人·游戏引擎·ue4·无人机
tjjucheng36 分钟前
专业做小程序定制开发的厂家
python
Hello.Reader42 分钟前
Flink DynamoDB Connector 用 Streams 做 CDC,用 BatchWriteItem 高吞吐写回
大数据·python·flink