python借助企业微信群机器人推送消息和文件(代码片段)

NewJune NewJune     2023-02-04     615

关键词:

  企业微信功能日益强大,腾讯官方也提供了丰富的API供开发者实现企业微信的很多自动化场景。比如,如何给某个企业微信群发送消息、图片或者文件,甚至@指定群用户?别急,看小爬君轻松教会大家。

Step1:在企业微信PC端或者移动端找几个用户创建一个企业微信群(步骤略过);

STEP2:在企业微信群中添加一个【群机器人】;

  点击企业微信群聊天界面,点击右上角【···】按钮,然后点击【添加群机器人】,如下图所示:

  

 

 

 

   然后,我们在该企业微信群就能看到群成员【群机器人】了,在群成员界面,鼠标悬停在该【群机器人】位置,就可以看到该机器人的具体信息,如下图所示:

 

   有了上面的两个步骤,这样一个专属的群机器人就创建好了,其中上图中的Webhook属性(url地址)是该机器人的关键信息,类似于机器人ID。

现在我们来看下如何用该群机器人往群里发消息,发图片,发文件。想要看完整的企业微信API文档的,请移步【腾讯企业微信开发者中心】页面:群机器人配置说明 - 文档 - 企业微信开发者中心 (qq.com)

一、发送文本类型数据


    "msgtype": "text",
    "text": 
        "content": "广州今日天气:29度,大部分多云,降雨概率:60%",
        "mentioned_list":["wangqing","@all"],
        "mentioned_mobile_list":["13800001111","@all"]
    
参数是否必填说明
msgtype 消息类型,此时固定为text
content 文本内容,最长不超过2048个字节,必须是utf8编码
mentioned_list userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list
mentioned_mobile_list 手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人

 

用python来实现的代码示例如下:

 import os,re,time,datetime,base64,requests,json
 from requests_toolbelt import MultipartEncoder
 import json
 
 def SendGroupMsg(textContent, webHookUrl, mentioned_list=[],mentioned_mobile_list=[]):
     """
     发送微信群组机器人消息
     :param textContent: 消息内容
     :param webHookUrl: 群组机器人WebHook
     :param mentioned_list: userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人
     :param mentioned_mobile_list: 手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人
     :return:
     """
     # url为群组机器人WebHook,配置项
     url = webHookUrl
     headers = 
         "content-type": "application/json"
     
     msg = "msgtype": "text", 
     "text": 
         "content": textContent, 
         "mentioned_list":mentioned_list,
         "mentioned_mobile_list": mentioned_mobile_list
           # 发送文本消息
     # 由于API接收的是json字符串,故需要转化一下
     data = json.dumps(msg, ensure_ascii=False).encode(\'utf-8\')
     # 发送请求
     try:
         result = requests.post(url, headers=headers, data=data)
         return True
     except Exception as e:
         # print("Requset Failed:", e)
         return False

二、发送群文件


    "msgtype": "file",
    "file": 
         "media_id": "3a8asd892asd8asd"
    

在发送文件之前,我们需要请求如下接口,获取到media_id参数。

文件上传接口

素材上传得到media_id,该media_id仅三天内有效
media_id只能是对应上传文件的机器人可以使用

请求方式:POST(HTTPS
请求地址:https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=KEY&type=TYPE

使用multipart/form-data POST上传文件, 文件标识名为"media"
参数说明:

参数必须说明
key 调用接口凭证, 机器人webhookurl中的key参数
type 固定传file

POST的请求包中,form-data中媒体文件标识,应包含有 filename、filelength、content-type等信息

filename标识文件展示的名称。比如,使用该media_id发消息时,展示的文件名由该字段控制

有了这两个接口的API,用python来实现【发送群文件】就不是难题了:

import os,re,time,datetime,base64,requests,json
from requests_toolbelt import MultipartEncoder
from urllib import parse
import json

def SendGroupFile(filepath, webHookUrl): """ 发送微信群组机器人文件 :param filepath: 文件路径 :param webHookUrl: 群组机器人WebHook :return: """ # url为群组机器人WebHook,配置项 url = webHookUrl headers = "content-type": "application/json" # 发送文件需要先上传文件获取media_id media_id = UploadFile(filepath, url) req_json = dict() req_json["msgtype"] = "file" req_json["file"] = dict() req_json["file"]["media_id"] = media_id # 发送请求 try: result = requests.post(url, headers=headers, json=req_json) return True except Exception as e: print("企业微信机器人发送文件失败,详细信息:" + str(e)) return False def UploadFile(filepath, webHookUrl): """ 企业微信机器人上传文件,发送文件前需要先上传--要求文件大小在5B~20M之间 :param filepath: 文件路径 :param webHookUrl: 群组机器人WebHook :return: media_id """ # url为群组机器人WebHook,配置项 url = webHookUrl params = parse.parse_qs( parse.urlparse( webHookUrl ).query ) webHookKey=params[\'key\'] upload_url = f\'https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=webHookKey&type=file\' headers = "Accept": "application/json, text/plain, */*", "Accept-Encoding": "gzip, deflate", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36" filename = os.path.basename(filepath) try: multipart = MultipartEncoder( fields=\'filename\': filename, \'filelength\': \'\', \'name\': \'media\', \'media\': (filename, open(filepath, \'rb\'), \'application/octet-stream\'), boundary=\'-------------------------acebdf13572468\') headers[\'Content-Type\'] = multipart.content_type resp = requests.post(upload_url, headers=headers, data=multipart) json_res = resp.json() if json_res.get(\'media_id\'): # print(f"企业微信机器人上传文件成功,file:filepath") return json_res.get(\'media_id\') except Exception as e: # print(f"企业微信机器人上传文件失败,file: filepath, 详情:e") print("企业微信机器人上传文件失败,详细信息:" + str(e)) return ""

  感兴趣的童鞋,快动手试试吧!

  快来扫码关注我的公众号 获取更多爬虫、数据分析的知识!

python操控企业微信群机器人

参考技术A企业微信群机器人常用来作为通知工具,群发消息给群内成员,充当小助手的角色。但若按照官方API文档来构建请求,也确实不太方便。本文通过Python第三方库来控制企业微信群机器人发送消息。添加机器人之后,可... 查看详情

powershell实现企业微信机器人推送消息(代码片段)

前言企业微信机器人在ARMS告警管理中创建企业微信机器人后,您可以在通知策略中指定对应的企业微信群用于接收告警。当通知策略的匹配规则被触发时,系统会自动向您指定的企业微信群发送告警通知。企业微信群收... 查看详情

python:消息推送-企业微信机器人推送

参考技术A实现推送的处理步骤:创建机器人:1、登录企业-拉取创建3人及其以上的群组-点击右键群设置-添加机器人,如图:新建机器人:给机器人取名:创建完成:获取机器人webhook:复制webhookhttps://qyapi.weixin.qq.com/cgi-bin/webhook... 查看详情

java实现如何定时给微信群中发送消息(代码片段)

...java实现一个定时给微信中发送消息的功能,配置个群机器人就可以实现,那不借助企业微信可以实现吗?不借助别的技术,使用纯java可以实现给群中发送消息吗?当然,是可以的!!今天,我... 查看详情

基于nodejs实现企业微信机器人推送(代码片段)

前言公司是企业微信协同的,刚好之前搞得CLI有输出报告文件的功能;想了想也可以打通这个流程,让沟通成本降低【不用人工转发】;运转流程:生成报告->推送文件->企业微信群。再把这个流程接入到... 查看详情

nodejs实现企业微信机器人每天定时发消息实例定时任务

...群里面所有人或者部分人”,于是决定用企业微信自带的机器人来实现此功能,来代替人为的每天发送同样的消息,具体方法我来一一讲述。需要用到企业微信群、企业微信机器人、一台服务器(或者一台不关机的电脑)、nodeJS... 查看详情

基于nodejs实现企业微信机器人推送(代码片段)

...ff0c;逐步查阅相关资料长见识~功能需求配置一个企业微信机器人key即可使用考虑CI环境可以运行,部分配置支持从环境变量接收支持推送图片支持推送文本,Markdown支持推送文件【比如json,excel等】环境依赖Node16npmdeps[core:No... 查看详情

zabbix配置企业微信群(机器人)警告

参考技术A企业微信机器人告警企业微信群聊里面增加机器人,机器人会提供发送信息的URLpython脚本进行实现1、创建企业微信机器人这个webhook后面需要使用到2、配置zabbixserver3、zabbixWeb页面配置默认标题:恢复操作:创建动作4、... 查看详情

python调用企业微信机器人发送通知消息

参考技术A在终端某个群组添加机器人之后,可以获取到webhook地址,然后我们构造需要发送的内容,通过requests向这个地址发起HTTPPOST请求,就可以实现给该群组发送消息。2.1.发送Markdown类型消息 查看详情

java-给微信推送消息利用企业微信

...警。例如线上接口报错,发送提醒消息准备工作:1:注册企业号(为什么不用公众号呢?)企业号注册2:常用参数介绍:1:CORPID企业号唯一标志符号。位置:点击首页企业名称,企业资料中有key:CorpID2:CORPSECRET:需要创建单独等应... 查看详情

微信的新消息推送是怎么实现的(企业号开发)

具体操作方法是,企业申请账号后,员工通过自己的微信订阅该企业号,然后可以使用目录下的各种功能模块,完成企业内部管理和交流。用户可以通过微信完成打卡、报销、会议等事务。用微信编辑器先编写好内容。和原来的... 查看详情

企业微信协议,企业微信hook接口

...展dll来实现:监控或收集微信消息、自动消息推送、聊天机器人、自定义发送消息内容,小程序等。详情请查看功能文档提供Demo可测试接口 查看详情

《企业微信》群添加机器人方法

参考技术A企业微信群中也是可以设置添加机器人的,而且机器人的作用还是挺大的,可以用来帮你提醒一些事项。那么企业微信怎么添加机器人呢?下面我为大家带来了在企业微信群中添加机器人的方法,有需要的小伙伴快来... 查看详情

python代码问题,求助!

因工作需要,现在需要让企业微信群机器人返回的内容是“各位同事,早上好!记得填写上午汇报哦~,今天抽查的宿舍是:(随机五个指定宿舍数值)”。请问怎么让print(random.sample([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],5))中获取的5... 查看详情

企业微信开发企业微信开发测试推送应用消息流程

准备事项企业应用ID(AGENTID)和密钥(SECRET)1)登录企业微信2)在应用管理下方的自建应用中,找到你要推送消息的应用信息,如下图所示企业ID(CORPID)1)点击“我的企业”2)在... 查看详情

企业微信自动发送消息、文件

...这个咋搞呢,哈哈。具体功能参考下官方文档,反正这个机器人是可以实现发送一些消息的,文本、图片等等格式的内容,有一些场景是可以满足的,比如,你想推送一些核心指标到群里,但是想我们当前的数据,是Excel,是一... 查看详情

c#企业微信消息推送对接,实现天气预报推送(代码片段)

准备工作需要获取的东西1.企业Id,2.应用secret和应用ID获取企业id注册完成后,在我的企业=》企业信息=》最下面企业id获取应用secret和 应用ID发送微信消息class WeCom            public static string weComCId = "ww2... 查看详情

免费微信群机器人软件推荐!那个好用?

...复消息。3、 和群员互动这是目前网上百分之90的微信群机器人功能,那么我们下面来给大家推荐几个好用的微信群机器人软件吧!1、二虎2、 小牛3、菲猫这三个机器人是目前网上效 查看详情