簡述
本文介紹微信消息推送實(shí)現(xiàn)過程
需求分析
目前小程序可通過消息模板實(shí)現(xiàn)消息推送,但因次數(shù)限制溶弟,不太符合業(yè)務(wù)場景女淑,后續(xù)考慮,可嘗試使用微信網(wǎng)頁版消息推送方式辜御,封裝成服務(wù)鸭你,供程序調(diào)用實(shí)現(xiàn)推送
實(shí)現(xiàn)過程
使用技術(shù)
wxpy 實(shí)現(xiàn)微信頁面端相關(guān)調(diào)用 + flask 實(shí)現(xiàn)服務(wù)封裝
步驟簡述
——> bot = Bot() 微信網(wǎng)頁版登錄
——> bot.friends().search(m_object) 查找接收對(duì)象
——> o.send(m_content) 發(fā)送消息
——> app = Flask(__name__) 封裝相關(guān)服務(wù)
使用包
from functools import wraps
from flask import Flask, url_for, request, make_response
from wxpy import *
發(fā)送消息方法
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)
封裝服務(wù)方法
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!'
實(shí)現(xiàn)效果
Postman
測試效果
經(jīng)驗(yàn)總結(jié)
請(qǐng)求服務(wù)跨域
設(shè)置headers['Access-Control-Allow-Origin']='*'
掃碼無法登錄
測試過程中,使用小號(hào)連續(xù)登錄擒权,后手機(jī)沒電袱巨,自動(dòng)退出,后續(xù)再掃碼無法登錄菜拓,但不影響小號(hào)微信正常使用瓣窄,實(shí)際使用過程中通過切換微信號(hào)登錄規(guī)避
注:重新登錄前笛厦,建議手動(dòng)檢查Python
進(jìn)程纳鼎,關(guān)閉后再登錄
提示群找不到
測試過程中,發(fā)送群消息時(shí)裳凸,小概率提示找不到群贱鄙,修改群名稱后,能正常使用