使用Python实现给企业微信发送消息功能
作者:Jason_WangYing 发布时间:2021-06-10 15:30:07
标签:Python,企业微信,发送消息
一、概述
本文将介绍如何使用python3给企业微信发送消息。我的环境是linux + python3.6.10。
二、python脚本
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/8/20 上午12:42
# @Author : wangying
# @Site :
# @File : 企业微信.py
# @Software: PyCharm
#!/root/.virtualenvs/wechat/bin/python
# usage: send message via wechat
import requests, sys, json
import urllib3
urllib3.disable_warnings()
###填写参数###
# Corpid是企业号的标识
Corpid = "ww32a580fceb30f350"
# Secret是管理组凭证密钥
Secret = "QyBTbg1QL9lmNwaErqv1DMV0Y_G3lZre268E0hpTDqk"
# 应用ID
Agentid = "1000004"
# token_config文件放置路径
Token_config = r'/tmp/zabbix_wechat_config.json'
###下面的代码都不需要动###
def GetTokenFromServer(Corpid, Secret):
"""获取access_token"""
Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
Data = {
"corpid": Corpid,
"corpsecret": Secret
}
r = requests.get(url=Url, params=Data, verify=False)
print(r.json())
if r.json()['errcode'] != 0:
return False
else:
Token = r.json()['access_token']
file = open(Token_config, 'w')
file.write(r.text)
file.close()
return Token
def SendMessage(Partyid, Subject, Content):
"""发送消息"""
# 获取token信息
try:
file = open(Token_config, 'r')
Token = json.load(file)['access_token']
file.close()
except:
Token = GetTokenFromServer(Corpid, Secret)
# 发送消息
Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
Data = {
"toparty": Partyid,
"msgtype": "text",
"agentid": Agentid,
"text": {"content": Subject + '\n' + Content},
"safe": "0"
}
r = requests.post(url=Url, data=json.dumps(Data), verify=False)
# 如果发送失败,将重试三次
n = 1
while r.json()['errcode'] != 0 and n < 4:
n = n + 1
Token = GetTokenFromServer(Corpid, Secret)
if Token:
Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
r = requests.post(url=Url, data=json.dumps(Data), verify=False)
print(r.json())
return r.json()
if __name__ == '__main__':
# 部门id
Partyid = '20'
# 消息标题
Subject = '自应用程序代码测试'
# 消息内容
Content = 'str(sys.argv[3])'
Status = SendMessage(Partyid, Subject, Content)
print(Status)
需要修改的地方,其中Corpid,Secret,Agentid我会在后面的截图指出来要填的值。
下行是linux环境下python3的可执行路径,如果是windows,那么这行就不需要,只要将python的路径加入到path即可
#!/root/.virtualenvs/wechat/bin/python
# Corpid是企业ID
Corpid = "ww34d7fed41a8d5dxx"
# Secret是管理组凭证密钥
Secret = "8QwzOi0xCvbp1ZnCbnQJ1d6uEIv-Lrbcjp93UrHFxxx"
# Agentid是应用ID
Agentid = "1000002"
# Token_config里面存放token信息,这个自己随便填就行,只要自己有写的权限
Token_config = r'/tmp/zabbix_wechat_config.json'
三、企业微信设置
1. 注册企业微信
https://qy.weixin.qq.com/
2. 点击进入管理后台
创建应用
3. 创建应用完成后
Agentid,Secret就出来了
4. 查看企业id
这个就是脚本中的Corpid
5. 查看部门id
我这个python脚本是通过部门id进行群体发送,所以这个部门id到后面会有用。
四、测试脚本
直接运行:python manage.py runserver
来源:https://blog.csdn.net/Jason_WangYing/article/details/108117072
0
投稿
猜你喜欢
- 本文记录django中如何使用celery完成异步任务。Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一
- 装饰器的基础使用(装饰带参函数)def decorator(func): def inner(info): &nb
- 有在论坛上看到一帖,《请教查询出连续日期记录的方法》,截图如下:Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参
- 前言看Python代码时,碰见 numpy.transpose 用于高维数组时挺让人费解,通过一番画图分析和代码验证,发现 transpos
- 01、正则表达式学习正则表达式操作字符串,re模块是用C语言写的没匹配速度非常快,其中compile函数根据一个模式字符串和可选的标志参数生
- 一、Tkinter的介绍和简单教程Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建
- 基于很多原因,有不少朋友的空间不支持FSO,当大量的页面生成静态页面时,占用大量的空间,修改样式时,不方便,所以动态页面还是有动态页面的好处
- 阅读作者上一篇文章:段正淳的css笔记(4)css代码的简写CSS未知图片垂直居中的方法:一天大家在团队中讨论“未知图片垂直居中”的问题,突
- 引用是指保存的值为对象的地址。在 Python 语言中,一个变量保存的值除了基本类型保存的是值外,其它都是引用,因此对于它们的使用就需要小心
- 更改主题File → Settings → Appearance & Behavior → Appearance → Theme结果
- 之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用W
- 用户认证组件:功能:用session记录登录验证状态前提:用户表:django自带的auth-userpython3 manage.py c
- 最近在学一些基础的算法,发现我的数学功底太差劲了,特别是大学的这一部分,概率论、线性代数、高数等等,这些大学学的我是忘得一干二净(我当时学的
- 首先,Python 完整的异常处理语法结构如下:try: #业务实现代码except Exception1 as e: &nbs
- Python在程序并行化方面多少有些声名狼藉。撇开技术上的问题,例如线程的实现和GIL,我觉得错误的教学指导才是主要问题。常见的经典Pyth
- 最近跑实验,遇到了一个问题:由于实验数据集比较多,每次跑完一个数据集就需要手动更改文件路径,再将文件传到服务器,再运行实验,这样的话效率很低
- getatter()通过方法名字符串调用方法,这个方法最主要的作用就是实现反射机制,也就是说可以通过字符串获取方法实例,这样就可以把一个类可
- 方法如下: response.cookies(cookiesname)[(key)|.attribute]=value 解释如下:cooki
- 下面是BeforeInitialBind事件过程:<SCRIPT language=vbscript event=
- 一、dict推导式list1 = ['name', 'age', 'gender']list