官方文档地址:https://developer.work.weixin.qq.com/document/path/91770#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E7%BE%A4%E6%9C%BA%E5%99%A8%E4%BA%BA

一、获取自定义机器人webhook

可以通过如下步骤设置企业微信机器人:

  1. 首先建立或者进入某个群聊
  2. 进入群聊设置页面, 点击“群机器人>添加”可添加一个机器人成功
  3. 添加成功后,复制并保留其webhook地址。

二、python封装脚本

# -*- coding: utf-8 -*-
# @Time    : 2023/5/11 15:01
# @Author  : chenyinhua
# @File    : webchat_handle.py
# @Software: PyCharm
# @Desc: 企业微信机器人
import osfrom requests import request
from loguru import logger
import base64
import hashlib
import reclass WechatBot:"""企业微信机器人当前自定义机器人支持文本(text)、markdown(markdown)、图片(image)、图文(news), 文件(file)五种消息类型。机器人的text/markdown类型消息支持在content中使用<@userid>扩展语法来@群成员"""def __init__(self, webhook_url):""":param webhook_url: 机器人的WebHook_url"""self.webhook_url = webhook_urlself.headers = {"Content-Type": "application/json","Charset": "UTF-8"}def send_text(self, content, mentioned_list=[], mentioned_mobile_list=[]):"""发送文本消息:param content: 文本内容,最长不超过2048个字节,必须是utf8编码:param mentioned_list: userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list:param mentioned_mobile_list: 手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人"""payload = {"msgtype": "text","text": {"content": content,"mentioned_list": mentioned_list,"mentioned_mobile_list": mentioned_mobile_list}}response = request(url=self.webhook_url, method="POST", json=payload, headers=self.headers)if response.json().get("errcode") == 0:logger.debug(f"通过企业微信发送文本消息成功:{response.json()}")return Trueelse:logger.error(f"通过企业微信发送文本消息失败:{response.text}")return Falsedef send_markdown(self, content):"""发送markdown消息目前支持的markdown语法是如下的子集:1. 标题 (支持1至6级标题,注意#与文字中间要有空格)2. 加粗3. 链接4. 行内代码段(暂不支持跨行)5. 引用6. 字体颜色(只支持3种内置颜色), 绿色(color="info"),灰色(color="comment"),橙红色(color="warning"):param content: markdown内容,最长不超过4096个字节,必须是utf8编码"""payload = {"msgtype": "markdown","markdown": {"content": content}}response = request(url=self.webhook_url, method="POST", json=payload, headers=self.headers)if response.json().get("errcode") == 0:logger.debug(f"通过企业微信发送md消息成功:{response.json()}")return Trueelse:logger.error(f"通过企业微信发送md消息失败:{response.text}")return Falsedef send_picture(self, image_path):"""发送图片消息:param image_path: 图片的绝对路径"""with open(image_path, "rb") as f:image_data = f.read()payload = {"msgtype": "image","image": {"base64": base64.b64encode(image_data).decode("utf-8"),  # # 将图片数据转换成Base64编码格式"md5": hashlib.md5(image_data).hexdigest()  # # 计算图片的MD5值}}response = request(url=self.webhook_url, method="POST", json=payload, headers=self.headers)if response.json().get("errcode") == 0:logger.debug(f"通过企业微信发送图片消息成功:{response.json()}")return Trueelse:logger.error(f"通过企业微信发送图片失败:{response.text}")return Falsedef send_text_picture(self, articles: list):"""发送图文消息:param articles: 图文消息,一个图文消息支持1到8条图文, 包括如下字段1. title: 标题,不超过128个字节,超过会自动截断2. description: 非必填,描述,不超过512个字节,超过会自动截断3. url: 点击后跳转的链接。4. picurl: 非必填,图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图 1068*455,小图150*150。"""payload = {"msgtype": "news","news": {"articles": []}}for article in articles:payload["news"]["articles"].append({"title": article.get("title"),"description": article.get("description", ""),"url": article.get("url"),"picurl": article.get("picurl", "")})response = request(url=self.webhook_url, method="POST", json=payload, headers=self.headers)if response.json().get("errcode") == 0:logger.debug(f"通过企业微信发送图文消息成功:{response.json()}")return Trueelse:logger.error(f"通过企业微信发送图文失败:{response.text}")return Falsedef upload_file(self, file_path):"""上传文件到企业微信服务器(要求文件大小在5B~20M之间)注意:素材上传得到media_id,该media_id仅三天内有效;media_id只能是对应上传文件的机器人可以使用:param file_path: 文件绝对路径"""token_regex = r"key=([\w-]+)"match = re.search(token_regex, self.webhook_url)token = match.group(1)url = f"https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key={token}&type=file"headers = {"Content-Type": "multipart/form-data;"}with open(file_path, "rb") as f:files = {"media": (os.path.basename(file_path), f.read())}response = request(url=url, method="POST", files=files, headers=headers)if response.json().get("errcode") == 0:media_id = response.json().get("media_id")logger.debug(f"上传文件成功,media_id= {media_id}")return media_idelse:logger.error(f"上传文件失败:{response.text}")return Falsedef send_file(self, media_id):"""发送文件:param media_id: 文件id,通过下文的文件上传接口获取"""payload = {"msgtype": "file","file": {"media_id": media_id,}}response = request(url=self.webhook_url, method="POST", json=payload, headers=self.headers)if response.json().get("errcode") == 0:logger.debug(f"通过企业微信发送文件消息成功:{response.json()}")return Trueelse:logger.error(f"通过企业微信发送文件消息失败:{response.text}")return Falseif __name__ == '__main__':webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=***********"bot = WechatBot(webhook_url)bot.send_text(content="hello1", mentioned_list=["@all"])bot.send_text(content="hello2", mentioned_list=["@all"], mentioned_mobile_list=["18774970063"])md = "实时新增用户反馈<font color=\"warning\">132例</font>,请相关同事注意。\n>类型:<font color=\"comment\">用户反馈</font>>普通用户反馈:<font color=\"comment\">117例</font>>VIP用户反馈:<font color=\"comment\">15例</font>"bot.send_markdown(content=md)bot.send_picture(image_path=r"xxxxxx.png")articles = [{"title": "中秋节礼品领取","description": "今年中秋节公司有豪礼相送","url": "www.qq.com","picurl": "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"}]bot.send_text_picture(articles=articles)filepath = r"xxxxxxx\apiautotest-report-2023-05-11 14_57_18.html"bot.send_file(media_id=bot.upload_file(filepath))

封装Python脚本:使用企业微信机器人发送消息至企业微信相关推荐

  1. Python使用飞书群机器人发送消息

    原创文|Space9 机器人简单介绍 飞书群中的自定义机器人是通过webhook的形式将你要发送的消息即时发送到群聊中 在群聊中添加机器人 进入群聊,打开群设置,找到群机器人,并点击添加机器人.选择C ...

  2. 企业微信机器人发送消息

    背景:之前用钉钉机器人可以发送消息,可以将线上的告警通知发送到消息群中,后来企业微信也支持在群组中增加机器人了,钉钉和企业微信机器人的使用很相似,都是使用webhook的方式来进行实现的,话不多说,咱 ...

  3. java对接企业微信机器人发送消息

    [Java]企业微信机器人自动发送群消息 先在群里添加机器人,然后获取机器人的webhook地址: 假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/web ...

  4. python微信接口发送消息_调用微信API发送微信消息python脚本

    前阵子部署zabbix监控系统,做了个微信报警,下面分享下微信调API发消息的脚本.要用微信发消息,自己首先要有微信企业号,如果没有申请也容易 准备工作: 1.申请微信企业号 2.在企业号后台创建应用 ...

  5. python程序向企业微信机器人发送消息

    一.创建企业群聊 二.创建机器人 点击完成,复制webhook地址,如下: 三.执行代码 import requestsweb_hook_url = "https://qyapi.weixi ...

  6. python企业微信机器人发送文件

    python企业微信机器人发送文件 import requests#传入文件 def post_file(id_url,wx_url,file):data = {'file': open(file,' ...

  7. 企业微信机器人脚本python_python提取数据库数据并实现企业微信机器人定时消息推送...

    之前发过一个企业微信群机器人接口调用发提醒的文章,是用最简单的VBS脚本+Windows任务计划来实现的,仅实现了定时发送固定内容的提醒.其实企业微信机器人就是一个webhook接口,用户以post ...

  8. 企业微信机器人发送文件 php demo

    企业微信机器人发送文件 php demo php实现企业微信机器人发送文件 php实现企业微信机器人发送文件 下载链接:企业微信机器人发送文件 php demo 如下图所示: 代码如下:

  9. 从零搭建微信机器人(一):注册企业微信创建应用

    从零搭建微信机器人(一):注册企业微信创建应用 从零搭建微信机器人(二):发送文本消息 从零搭建微信机器人(三):定时触发任务 从零搭建微信机器人(四):封装消息发送接口 文章目录 1. 简介 2. ...

最新文章

  1. 直观地理解车辆的运动控制
  2. 两栏布局,三栏布局,等高布局,流式布局
  3. iOS摄像头和相册-UIImagePickerController-浅析(转)
  4. python中in的底层实现_python中print和input的底层实现
  5. Swift封装 滑出式导航栏
  6. 谈谈嵌入式设备用户界面的未来
  7. 2021华为软挑初探——代码实现
  8. 数据库创建常用SQL语句
  9. wacom影拓系列数位板驱动
  10. 【工具】Alfred2.5.1使用全攻略!神一样的Mac app!(神一样的搜索)(推荐)
  11. 协调世界时转换为GPS周秒(转载)
  12. golang 实用的 打印错误堆栈 的方法
  13. 情侣博客源码php,分享SEO WordPress的标题Title
  14. Possible solution: - Disable offline mode and rerun the build
  15. Python装逼神器,5 行 Python 代码 实现一键批量扣图!
  16. oppo reno4se和vivos7 哪个好
  17. MySql数据库——登录和常用命令
  18. 自媒体如何快速涨粉?除了互粉还有这3个方法,能轻松上手
  19. 卷积网络中的通道(channel)和特征图(feature map)
  20. MT【193】三面角的正余弦定理

热门文章

  1. CST学习笔记1--------CST基础建模
  2. 咸鱼带你学计算机网络—物理层(二)
  3. 男子与 AI 对话 6 周后,选择自杀!一时难分“魔鬼”还是“救星”?
  4. TCP/UDP协议常用端口号服务
  5. Spring Boot拦截器(Interceptor)详解
  6. SSM框架和SSH框架的详细对比
  7. 简单python脚本实例画图-Python使用matplotlib简单绘图示例
  8. IC设计数字工程师技能必备
  9. React innerHTML
  10. 独孤思维:减压还能赚钱?让压力变有利可图的项目