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

一、创建机器人,并获取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固定传fileupload_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx&type=file"# 请求数据,是rb读取文件流,获取到media_iddata = {"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_resultif __name__ == '__main__':# 调用发送文件函数send_file_message("test.html")

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

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

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

相关文章

【图神经网络 · 科研思考4】动态图数据集相关 wikipedia.csv;跨域节点表示学习;跨域自监督;动态时空图跨域;无监督领域适应方法?

这是2023年11月份的部分科研思考(四),主体内容围绕【图神经网络】展开,科研疑问解答 & 科研基础概念了解 & 科研方向,仅学习使用。 🎯作者主页: 追光者♂🔥 🌸个人简介: 📝[1] CSDN 博客专家📝 🏆[2] 人工智能领域优质创作者🏆 �…

Vue3知识点总结

目录 一.创建Vue2工程 1.使用 vue-cli 创建 2.使用 vite 创建 二.常用 Composition API setup ref函数 reactive函数 计算属性与监视 1.computed函数 2.watch函数 3.watchEffect函数 一.创建Vue2工程 1.使用 vue-cli 创建 查看vue/cli版本&#xff0c;确保vue/cli版本…

QT自带打包问题:无法定位程序输入点?metaobject@qsound

文章目录 无法定位程序输入点?metaobjectqsound……检查系统环境变量的配置&#xff1a;打包无须安装qt的文件 无法定位程序输入点?metaobjectqsound…… 在执行release打包程序后&#xff0c;相应的release文件夹下的exe文件&#xff0c;无法打开 如有错误欢迎指出 检查系…

合并 K 个排序链表——Java解答

题目&#xff1a;合并 K 个排序链表 题目描述&#xff1a; 给你一个链表数组&#xff0c;每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例&#xff1a; 假设有以下三个链表&#xff1a; 1->4->5, 1->3->4,…

AIGC实战——条件生成对抗网络(Conditional Generative Adversarial Net, CGAN)

AIGC实战——条件生成对抗网络 0. 前言1. CGAN架构2. 模型训练3. CGAN 分析小结系列链接 0. 前言 我们已经学习了如何构建生成对抗网络 (Generative Adversarial Net, GAN) 以从给定的训练集中生成逼真图像。但是&#xff0c;我们无法控制想要生成的图像类型&#xff0c;例如控…

如何使用JavaScript 将数据网格绑定到 GraphQL 服务

前言 作为一名前端开发人员&#xff0c;GraphQL对于我们来说是令人难以置信的好用。它可以用来简化数据访问&#xff0c;这让我们的工作变得更加容易。 什么是 GraphQL&#xff1f;它是一个抽象层&#xff0c;位于任意数量的数据源之上&#xff0c;并为您提供一个简单的 API …

日期计算 C语言xdoj68

问题描述 给定一个年份y和一个整数d&#xff0c;问这一年的第d天是几月几日&#xff1f; 注意闰年的2月有29天&#xff0c;且满足下面条件之一的是闰年&#xff1a; 1&#xff09; 年份是4的整数倍&#xff0c;而且不是100的整数倍&#xff1b; 2&#xff09; 年份是…

激光雷达LIDAR

1. 历史 公元前440年&#xff0c;古希腊哲学家、预言家、科学家、江湖术士恩培多克勒提出月亮是由反射发光&#xff1b;提出光有速度。1638年&#xff0c;伽利略提着一盏灯站在山头上&#xff0c;默默的把灯盖了起来… 远处的另一个山头上&#xff0c;他的助手在看到灯灭的一瞬…

传统FC存储向NoF发展进化

全闪存时代背景下&#xff0c;传统的FC&#xff08;Fibre Channel&#xff0c;网状通道&#xff09;存储网络已经无法满足全闪存数据中心的要求&#xff0c;NVMe&#xff08;Non-Volatile Memory express&#xff0c;非易失性内存主机控制器接口规范&#xff09;存储协议的出现…

12.18拓扑排序,DAG,模板,课程安排

拓扑排序 有向无环图一定是拓扑序列,有向有环图一定不是拓扑序列。 无向图没有拓扑序列。 首先我们先来解释一下什么是有向无环图&#xff1a; 有向就是我们两个结点之间的边是有方向的&#xff0c;无环的意思就是整个序列中没有几个结点通过边形成一个圆环。 下图就是一个…

【web安全】万能密码总结

前言 菜某的总结&#xff0c;欢迎提意见补充~ 万能密码的原理 万能密码实际上也算是sql注入的一种。 登录界面是一个与数据库交互的位置&#xff0c;很容易产生sql注入的位置。 我们登录时输入的数据会带入数据库查询进行比对&#xff0c;当用户名与用户的密码对的上的话&…

基于Vue的汽车服务商城系统设计与实现论文

摘 要 本课题是根据用户的需要以及网络的优势建立的一个基于Vue的汽车服务商城系统&#xff0c;来更好的为用户提供服务。 本基于Vue的汽车服务商城系统应用Java技术&#xff0c;MYSQL数据库存储数据&#xff0c;基于SSMVue框架开发。在网站的整个开发过程中&#xff0c;首先对…

linux网络管理_网络接口名称规则

11.1 网络接口名称规则 11.1.1 简介 目标&#xff1a;认识网卡》》找到网卡文件》》学会修改文件》》多台服务器互通 网络接口名称 ​ 传统上&#xff0c;Linux中的网络接口被枚举为eth0 (ethernet0)、eth1、eth2等,然而使用这些网络设备名可能遇到不确定性&#xff0c;且不…

面试算法56:二叉搜索树中两个节点的值之和

题目 给定一棵二叉搜索树和一个值k&#xff0c;请判断该二叉搜索树中是否存在值之和等于k的两个节点。假设二叉搜索树中节点的值均唯一。例如&#xff0c;在如图8.12所示的二叉搜索树中&#xff0c;存在值之和等于12的两个节点&#xff08;节点5和节点7&#xff09;&#xff0…

WebSocket网络协议

一、简介 WebSocket 是一种在客户端和服务器之间建立双向通信信道的网络协议。它在客户端和服务器之间建立一个持久的、全双工的连接&#xff0c;允许数据在两个方向上实时传输&#xff0c;而不需要像HTTP一样进行多次请求和响应。 WebSocket 的主要优势是减少了服务器和客户…

Redis发布与订阅

什么是发布与订阅 答: redis发布订阅是一种消息通信通信模式&#xff0c;由发送者(pub)发送消息,订阅者(sub)接收消息。 如下图client2、4、5就是订阅着&#xff0c;订阅了channel1的消息。 当channel1要发送消息时&#xff0c;这几个订阅者都会实时收到消息。 发布订阅的方式…

用uniapp写一个点击左侧可以滑动的menu

完成后的图片&#xff08;点击左侧右边或滑动&#xff0c;滑动右边左侧的选中也会变化&#xff09;&#xff1a; 数据js &#xff08;classifyData&#xff09;&#xff1a; export default[{"name": "女装","foods": [{"name": &q…

命名之美:探索Java的标识符与命名规范

目录 ​编辑 前言 一、Java关键字&#xff1a; class&#xff1a; public、private、protected&#xff1a; static&#xff1a; final&#xff1a; void&#xff1a; int、double、char、boolean&#xff1a; if、else、switch&#xff1a; for、while、do&#xf…

思码逸关钦杰:聊聊研效管理中的数据操纵

3月25日&#xff0c;思码逸咨询总监、研发过程提效专家关钦杰在 QECon 质效城市论坛【深圳站】分享了主题为《聊聊研效管理中的数据操纵》的演讲。 以下内容根据关钦杰老师分享内容整理&#xff1a; 在生活中&#xff0c;当我们去描述客观事实的时候&#xff0c;我们经常要用…

【Source Insight4.0】解决注释中文乱码

本来用的好好的&#xff0c;结果今天创建一个新的项目就出现注释中文乱码&#xff01;&#xff01;&#xff01; 然后上网查找说要修改为【Default encoding” &#xff1a;改成System Default(Windows ANSI) 或者Chinese Simplified(GB2312)】但是我的并没有效果。 最后是选…