企业消息转发服务器,Python构建企业微信自动消息转发服务端
目前有在项目分组,就小组成员中,微信群消息回复较多的情况下,想根据组来转发特定消息,包含文字、图片、语言等。在此只是自己实现仅供参考,可以根据自身需求修改更多功能。
二、代码
2.1 企业微信相关信息
企业ID:corpid
自建应用appid
自建应用secret
2.2 服务端部署 运行环境: python 版本 2.7
git clone https://github.com/redhatxl/wechatmsg.git
nohup python2.7 wechatmsg/wx_msg_server.py &
复制代码
2.3 参考RUL:
2.4 代码
# flask 框架后台
def server_run(self):
app = Flask(__name__)
@app.route('/index', methods=['GET', 'POST'])
def index():
wxcpt = WXBizMsgCrypt(self.sToken, self.sEncodingAESKey, self.sCorpID)
# 获取url验证时微信发送的相关参数
sVerifyMsgSig = request.args.get('msg_signature')
sVerifyTimeStamp = request.args.get('timestamp')
sVerifyNonce = request.args.get('nonce')
sVerifyEchoStr = request.args.get('echostr')
# 验证url
if request.method == 'GET':
ret, sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr)
print type(ret)
print type(sEchoStr)
if (ret != 0):
print "ERR: VerifyURL ret:" + str(ret)
sys.exit(1)
return sEchoStr
# 接收客户端消息
if request.method == 'POST':
sReqMsgSig = sVerifyMsgSig
sReqTimeStamp = sVerifyTimeStamp
sReqNonce = sVerifyNonce
sReqData = request.data
print(sReqData)
ret, sMsg = wxcpt.DecryptMsg(sReqData, sReqMsgSig, sReqTimeStamp, sReqNonce)
print ret, sMsg
if (ret != 0):
print "ERR: DecryptMsg ret: " + str(ret)
sys.exit(1)
# 解析发送的内容并打印
xml_tree = ET.fromstring(sMsg)
print('xml_tree is ', xml_tree)
复制代码
消息内容发送
def _send_text_msg(self, content):
data = {
"touser": ('|').join(self.userid.split(',')),
"toparty": ('|').join(self.partid.split(',')),
# "toparty":int(self.partid),
"msgtype": "text",
"agentid": self.agent_id,
"text": {
"content": content
},
"safe": 0
}
try:
response = requests.post(self.send_msg_url.format(self.access_token), json.dumps(data))
self.logoper.info(response.text)
print(response.text)
result_msg = json.loads(response.content)['errmsg']
return result_msg
except Exception as e:
self.logoper.info(e)
复制代码
日志
def create_dir(self):
"""
创建目录
:return: 文件名称
"""
_LOGDIR = os.path.join(os.path.dirname(__file__), self.logdir_name)
_TIME = time.strftime('%Y-%m-%d', time.gmtime()) + '-'
_LOGNAME = _TIME + self.logfile_name
LOGFILENAME = os.path.join(_LOGDIR, _LOGNAME)
if not os.path.exists(_LOGDIR):
os.mkdir(_LOGDIR)
return LOGFILENAME
def create_logger(self, logfilename):
"""
创建logger对象
:param logfilename:
:return: logger对象
"""
logger = logging.getLogger()
logger.setLevel(logging.INFO)
handler = logging.FileHandler(logfilename)
handler.setLevel(logging.INFO)
formater = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formater)
logger.addHandler(handler)
return logger
复制代码
配置文件
# 定义微信公众号信息
[common]
# 企业微信企业ID
corpid = wxe23xxxxxxxxxxx
# 接收消息 服务器 配置
[recmsg]
Token = mVNAAw3xxxxxxxxxxxxxxxxx
EncodingAESKey = vwbKImxc3WPeE073xxxxxxxxxxxxxxxxxx
# 自建应用信息
[appconfig]
# 自建应用agentid
agentid = 1000002
# 自建应用secret
secret = 6HAGX7Muw36pv5anxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 消息接收信息
# 消息接收用户id,如果多个用户用英文','隔开
userid = xuel|yaoy
# 消息接收部门id,如果多个用英文','隔开
partid = 11
[urlconfig]
# 获取应用token的api接口
get_access_token_url = https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={}&corpsecret={}
# 发送消息api接口
send_msg_url = https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}
# 上传媒体api接口,获取mediaid
upload_media_url = https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={}&type=image
# 上传高清语音接口
upload_video_url = https://qyapi.weixin.qq.com/cgi-bin/media/get/jssdk?access_token={}&media_id={}
[loginfo]
#日志目录
logdir_name = logdir
#日志文件名称
logfile_name = wechat_server.log
复制代码
三、测试
在企业微信发送消息,可以修改配置文件制定转发到特定的群组,从而避免消息分流。 启用应用API,设置回调地址
测试发送消息
查看接受消息
四、优化
后期可以配合 数据库 将每次获取的access_token 保存至数据库,待2小时过期后,再重新获取新的。
更多内容转发
企业消息转发服务器,Python构建企业微信自动消息转发服务端相关推荐
- Python构建企业微信智能应答机器人(含服务器部署)
有定制化需求可私信联系 文章目录 简介 基本概念 corpid agentid和secret touser 安装 初试 获取access_token 发送应用消息 Python高并发服务部署--Ngi ...
- python 消息 推送服务器,从客户端发送字符串消息到服务器Python
我无法运行我的代码,只要我将这些发送线添加到客户端和服务器中的recv行.我不知道什么是错的.没有他们,程序运行完美.我为了便于调试而粘贴了尽可能小的代码,因为如果没有这些代码,代码是完美的.从客户端 ...
- chatgpt赋能python:Python如何给微信群发消息?
Python如何给微信群发消息? 概述 微信是全球最受欢迎的聊天应用程序之一,拥有数十亿用户.在这些用户中,许多人都属于微信群.微信群是集体聊天,可以让您与朋友.同事或家人交流.您可以在群中分享照片. ...
- 【Python】基于 Flask 框架,模拟微信朋友圈的服务端
[Python]基于 Flask 框架,模拟微信朋友圈的服务端 一.目的:模拟微信朋友圈的服务端,需要满足以下场景: 1.发表内容时带上图片信息,内容包括(具体内容和id,id指定全局唯一标识),客户 ...
- 怎么取消微信送票服务器,智行火车票如何关闭微信自动扣费服务 微信怎么关闭智行火车票自动扣费授权...
在使用智行火车票的时候,大家都将感受到轻松氛围的,在上面还能进行轻松的设置,大家要是经常使用软件来享受服务的时候,将能轻松开启相应的自动扣费操作,因为多次消费,每次都要输入密码是比较麻烦的,大家都直接 ...
- 微信app支付功能-服务端的实现-python3版
微信app支付功能-服务端的实现-python3版 一:需求说明 二:微信app支付处理流程 三:所需依赖 3.1 支付配置 四:接口开发 4.1 创建订单接口 4.2 微信异步回调接口 4.3 订单 ...
- 小程序PHP CGI,微信小程序php服务端nginx配置
微信小程序php服务端nginx配置 微信小程序server端如果选择自己部署的话,可以选择java或者php的,为了省事我选择了php的,腾讯是用CodeIgniter框架做的demo,由于CI框架 ...
- Android安卓原生接入微信app支付PHP服务端
Android安卓接入微信app支付PHP服务端 1.进入微信商户平台查看统一下单接口文档. 在查看完统一下单文档后,能够看到需要传递给微信"统一下单接口"地址的参数有哪些 统一下 ...
- python批量下载文件只有1kb_详解如何用python实现一个简单下载器的服务端和客户端...
话不多说,先看代码: 客户端: import socket def main(): #creat: download_client=socket.socket(socket.AF_INET,socke ...
- 浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务)
浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) 参考文章: (1)浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) (2)https://www.cnblogs.com/ ...
最新文章
- 朱晔和你聊Spring系列S1E7:简单好用的Spring Boot Actuator
- 疑难杂症--单回话下 WITH(NOLOCK)返回更多数据
- mysql的如何输入dateadd_mysql中date_add()函数的使用?
- SpringMVC源码——未完待续
- Redis入门到精通-Redis数据类型
- python中利用pygame模块输出文字
- conda install 等价与pip install -e .
- 【Android 】【Monkey Demons】 针对性的进行稳定性测试
- 小爱同学音色定制服务器响应失败,小爱同学自定义音色
- 卡巴斯基蓝屏问题处理
- astah pro 7.2.0(UML建模工具)下载安装教程
- w ndows7家庭版好不好用,windows7怎么样 windows7哪个版本好用【详细介绍】
- 用卷积神经网络(CNN)识别文字
- 笔记本电脑亮度不能调节的一种解决方案
- 2021年 CISCN writeup
- 木鱼cms系统审计小结
- 双重检查锁单例模式为什么要用volatile关键字?
- UML统一建模语言第7章 状态机图和活动图课后习题
- 问题复盘:一个Redisson驱动源码BUG
- linux 找回网卡的uuid_Linux系统怎么查看网卡的UUID