python如何发送企业微信群消息

news2024/11/18 17:53:53

一、创建机器人,并获取webhook

1.1 进入企业微信中,添加群机器人,添加完成后可以获取到一个webhook的地址
在这里插入图片描述
在这里插入图片描述

1.2 群机器人企业微信接口的调用可以参考这个文件
https://developer.work.weixin.qq.com/document/path/99110#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E7%BE%A4%E6%9C%BA%E5%99%A8%E4%BA%BA

二、python请求接口发送消息

我尝试了两种类型的消息发送,都可以成功,代码如下

第一种:markdown类型消息

2.1 封装一下企业微信调用webhook接口

# webhook是创建机器人时获取的链接
webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx"
def request_send_qiye_weixin_message(data_content, headers=None):
    """
    请求发送企业微信消息接口
    """
    if headers is None:
        headers = {"Content-Type": "application/json"}
    ret = requests.post(url=webhook, json=data_content, headers=headers)
    return ret.text

2.2 发送markdown类型的消息

# markdown类型,需要传的参数
data = {'msgtype': 'markdown', 'markdown': {
    'content': 
        '测试机器人发送消息\n>'
        '执行结果:<font color="#FF0000"> FAIL</font>\n'
        '用例总数:<font color="comment"> 313</font>\n'
        '通过数量:<font color="comment"> 312</font>\n'
        '失败数量:<font color="comment"> 1</font>\n'
        '错误数量:<font color="comment"> 0</font>\n'
        '跳过数量:<font color="comment"> 0</font>\n'
        '用例成功率:<font color="comment"> 99.68%</font>\n'
        '执行时间:<font color="comment"> 3时13分33秒</font>\n'
        }
    }
# 调用第一步封装的request_send_qiye_weixin_message函数
send_result = request_send_qiye_weixin_message(data)

执行的结果如下:
在这里插入图片描述

第二种:发送文件消息

需要先上传文件获取到文件的media_id,后再请求发送消息的接口

def send_file_message(file_path):
    """
    发送文件类型的消息
    """
    # 上传文件, key为第一大步获取的webhook中的key,type固定传file
    upload_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx&type=file"
    # 请求数据,是rb读取文件流,获取到media_id
    data = {"file": open(file_path, "rb")}
    res = requests.post(upload_url, files=data).json()
    media_id = res.get('media_id')

    # 发送文件类型报告消息
    send_file_message_data = {
        "msgtype": "file",
        "file": {
            "media_id": media_id
        }
    }
    # 请求第1步中封装的request_send_qiye_weixin_message文件
    send_result = request_send_qiye_weixin_message(send_file_message_data)
    return send_result

if __name__ == '__main__':
    # 调用发送文件函数
    send_file_message("test.html")

执行结果如下图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1313824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

问答区故意在结题前回答混赏金的狗

此贴专记录CSDN问答社区里面&#xff0c;一些回答者在临近结题时胡乱回答&#xff0c;只为分取结题赏金的人。 所有图片均为事实&#xff0c;绝无半点虚假。各位看官可以自行搜索问题题目或者通过查看此人回答求证 所有图片均为事实&#xff0c;绝无半点虚假。各位看官可以自行…

服务器数据恢复-EqualLogic PS存储硬盘坏道导致存储不可用的数据恢复案例

服务器数据恢复环境&#xff1a; 一台DELL EqualLogic PS系列存储&#xff0c;存储中有一组由16块SAS硬盘组成的RAID5。上层是VMFS文件系统&#xff0c;存放虚拟机文件。存储上层分了4个卷。 服务器故障&检测&#xff1a; 存储上有2个硬盘指示灯显示黄色&#xff0c;磁盘出…

学习Linux(3)-Linux软件安装之yum

什么是yum yum&#xff08; Yellow dog Updater, Modified&#xff09;是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 假设&#xff0c;在一台window系统的电脑上要用qq&#xff0c;那么我们回去下载qq的安装包&#xff0c;然后执行qq.exe文件在本机上进…

csrf和ssrf的区别,攻击如何防护

CSRF&#xff08;跨站请求伪造&#xff09;和SSRF&#xff08;服务器端请求伪造&#xff09;都是网络安全中的常见攻击类型&#xff0c;但它们的目标和攻击方式有所不同。理解这两种攻击的区别对于有效地防御它们至关重要。 CSRF和SSRF的主要区别在于攻击的发起者和目标。CSRF…

Linux-----3、物理机安装Linux

# 物理机安装Linux # 系统镜像获取 http://isoredirect.centos.org/centos/7/isos/ 例如&#xff1a; CentOS7.9.2009 arch (opens new window) 阿里云镜像 CentOS7.9.2009 x86 (opens new window) # 华为Atlas 500pro 表 2-1 系统版本及适配信息 名称内容操作系统型号CentO…

Ubuntu18.04.6下安装opencv库及OpenCV安装libjasper-dev依赖包错误

目录 01 解压安装包 02 安装cmake和依赖库 03 配置编译环境 01 解压安装包 创建一个名为Opencv的文件夹 mkdir opencv 将源码的压缩包复制到opencv目录下 将压缩包解压到opencv文件夹&#xff08;指定一个文件夹&#xff09; unzip opencv-3.4.11.zip -d opencv02 安装cm…

解决nuxt3子路由router-view中出现的document not defined错误

之前讲过几种解决document not defined错误的方法&#xff0c;但是今天碰到一种新情况&#xff1a; 就是访问根路由/ , 然后再跳转到子路由没有问题: 但是如果直接访问子路由时router-view会报这个错误。 我怀疑原因是&#xff1a; 直接访问子路由时&#xff0c;有可能dom树还…

Tableau快速入门-下载安装加载数据与仪表盘构建

官网介绍 官网连接如下&#xff1a; https://www.tableau.com/zh-cn tableau的产品包括如下&#xff1a; 参考:https://zhuanlan.zhihu.com/p/341882097 Tableau是功能强大、灵活且安全些很高的端到端的数据分析平台&#xff0c;它提供了从数据准备、连接、分析、协作到查阅…

【Matlab】三角函数的周期性图像可视化(附完整MATLAB代码)

三角函数的周期性图像可视化 前言三角函数:MATLAB对三角函数的理解和帮助: 正文思考步骤 代码实现结果 前言 三角函数: 三角函数是数学中一类描述角度和周期性变化的特殊函数。常见的三角函数包括正弦函数 ( sin ⁡ ) (\sin ) (sin) &#xff0c;余弦函数 ( cos ⁡ ) (\cos…

力扣22. 括号生成(java 回溯法)

Problem: 22. 括号生成 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 我们首先要知道&#xff0c;若想生成正确的括号我们需要让右括号去适配左括号&#xff0c;在此基础上我们利用回溯去解决此题目 1.题目给定n个括号&#xff0c;即当回溯决策路径长度等于 2 n 2n…

【自动化测试】web3py 连接 goerli

web3py 连接 goerli 直接使用库里方法 if __name__ __main__:from web3.auto.infura.goerli import w3w3.eth.get_balance(get_address_by_private_key(os.getenv("AAA_KEY")))error info: websockets.exceptions.InvalidStatusCode: server rejected WebSocket …

计算机网络:物理层(三种数据交换方式)

今天又学到一个知识&#xff0c;加油&#xff01; 目录 前言 一、电路交换 二、报文交换 三、分组交换 1、数据报方式 2、虚电路方式 3、比较 总结 前言 为什么要进行数据交换&#xff1f; 一、电路交换 电路交换原理&#xff1a;在数据传输期间&#xff0c;源结点与…

在Sqlite中通过Replace来实现插入和更新

你可能在批量处理一个事务的时候&#xff0c;想要批量插入一系列的数据&#xff0c;但是这些数据当添加完一次之后&#xff0c;重新添加的时候&#xff0c;你不想要重新添加&#xff0c;只是想将原有的数据进行更新&#xff0c;例如&#xff1a;我想要通过Excel将一系列的图书导…

群晖上搭建短链接服务Yourls

什么 Yourls ? YOURLS是一组 PHP 脚本&#xff0c;允许您在服务器上运行您自己的 URL 缩短器。您将完全控制您的数据、详细统计数据、分析、插件等。它是免费且开源的。 安装 建数据库 老苏用了群晖自带的 MariaDB 10 数据库 在 phpMyAdmin 中创建名为 yourls 的空数据库 为…

Vue 子传父 组件传参 defineEmits

defineEmits 属性&#xff1a;用于创建自定义事件&#xff0c;接收子组件传递过来的数据。 注意&#xff1a;如果自定义事件的名称&#xff0c;和原生事件的名称一样&#xff0c;那么只会触发自定义事件。 defineEmits 仅适用于 setup 语法糖&#xff0c;其它写法请见&#x…

Qt容器QMdiArea 小部件提供一个显示 MDI 窗口的区域

## QMdiArea ## 控件简介 QMdiArea 继承 QAbstractScrollArea。QMdiArea 小部件提供一个显示 MDI 窗口的区域。QMdiArea的功能本质上类似于MDI窗口的窗口管理器。大多数复杂的程序,都使用MDI框架,在 Qt designer 中可以直接将控件 MDI Area 拖入使用。 ## 用法示例 例 qm…

注意std::shared_ptr的循环引用

指针智能是RAII的思想的具体体现。利用对象生命周期来管理资源。 在C11中&#xff0c;引入shared_ptr、weak_ptr和unique_ptr。 share_ptr是一个能有效解决赋值和拷贝构造的引用技术。 std::shared_ptr通过引用计数的方式来管理对象的生命周期&#xff0c;但是如果两个对象互…

『番外篇三』Swift “乱弹”之带索引遍历异步序列(AsyncSequence)

概览 在 Swift 开发中,我们往往在遍历集合元素的同时希望获得元素对应的索引。在本课中,我们将向小伙伴们展示除 enumerated() 方法之外的几种实现思路。在玩转普通集合之后,我们将用“魔法棒”进一步搞定异步序列带索引遍历的实现。 在本篇博主中,您将学到以下内容: 概…

同时获取el-select的label和value

ui如下&#xff1a; 需求如下&#xff1a; 在点击确认的时候&#xff0c;将id和name都传给一个接口&#xff0c;但是ui只用展示name&#xff0c;name用v-model绑定给input框&#xff0c;但是id不知道怎么传给后端。 解决方法如下&#xff1a; vue中elementUi的el-select同时…

jmeter,csv文件参数化+断言 实现一个接口的case

1、case 及其 测试数据 注意保存文件的编码格式 id,name,limit,status,address,start_time,assert_status,assert_message 100,小米100,1000,1,某某会展中心101,2023-8-20 14:20,200,add event success ,,,,,,10021,parameter error 100,小米102,1002,1,某某会展中心103,2023-…