简述
本文介绍微信消息推送实现过程
需求分析
目前小程序可通过消息模板实现消息推送,但因次数限制,不太符合业务场景,后续考虑,可尝试使用微信网页版消息推送方式,封装成服务,供程序调用实现推送
实现过程
使用技术
wxpy 实现微信页面端相关调用 + flask 实现服务封装
步骤简述
——> bot = Bot() 微信网页版登录
——> bot.friends().search(m_object) 查找接收对象
——> o.send(m_content) 发送消息
——> app = Flask(__name__) 封装相关服务
使用包
from functools import wraps
from flask import Flask, url_for, request, make_response
from wxpy import *
发送消息方法
def api_webchat():
if request.method == "POST":
m_type = request.form.get('type')
m_object = request.form.get('name')
m_content = request.form.get('message')
print(m_type)
if(m_type == 'friend'):
object_list = bot.friends().search(m_object)
else:
print(m_object)
object_list = bot.groups().search(m_object)
if(len(object_list) == 0):
return '没有找到用户或群'
for o in object_list:
try:
o.send(m_content)
print(m_content)
return 'to send success!'
except ResponseError as e:
print(e.err_code, e.err_msg)
封装服务方法
app = Flask(__name__)
#跨域
def allow_cross_domain(fun):
@wraps(fun)
def wrapper_fun(*args, **kwargs):
rst = make_response(fun(*args, **kwargs))
rst.headers['Access-Control-Allow-Origin'] = '*'
rst.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE'
allow_headers = "Referer,Accept,Origin,User-Agent"
rst.headers['Access-Control-Allow-Headers'] = allow_headers
return rst
return wrapper_fun
@app.route('/')
@allow_cross_domain
def api_root():
return 'Welcome Wechat Root!'
实现效果
Postman测试效果
经验总结
请求服务跨域
设置headers['Access-Control-Allow-Origin']='*'
扫码无法登录
测试过程中,使用小号连续登录,后手机没电,自动退出,后续再扫码无法登录,但不影响小号微信正常使用,实际使用过程中通过切换微信号登录规避
注:重新登录前,建议手动检查Python
进程,关闭后再登录
提示群找不到
测试过程中,发送群消息时,小概率提示找不到群,修改群名称后,能正常使用
网友评论