番外消息推送篇_05

简述

本文介绍微信消息推送实现过程

需求分析

目前小程序可通过消息模板实现消息推送,但因次数限制,不太符合业务场景,后续考虑,可尝试使用微信网页版消息推送方式,封装成服务,供程序调用实现推送

实现过程

使用技术

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进程,关闭后再登录

提示群找不到

测试过程中,发送群消息时,小概率提示找不到群,修改群名称后,能正常使用

源码

wechat_RESTfulWebAPI.py

你可能感兴趣的:(番外消息推送篇_05)