如果公众号只是用来发文章就太无聊了,人生就在于折腾,比如说给公众号配上关键词回复、或者是机器人。接下来我们就开始折腾吧。
服务器选择为安装apache的,避免80端口被占用,无法使用nginx的情况。好吧,其实是为了省事~
第一步,我们要先安装nginx,让ip指向flask的链接端口,安装完成之后,配置nginx.conf ,将80端口用nginx转发到flask服务器端口
listen 80;
server_name 公网ip;
location / {
# root html;
# index index.html index.htm;
proxy_pass_header Server;
proxy_redirect off;
proxy_pass http://127.0.0.1:5000;
}
第二步,安装flask pip3 install flask ,下面flask文件代码 用于令牌token的校验
# -*- coding:utf-8 -*-
from flask import Flask
from flask import request
import hashlib
app = Flask(__name__)
app.debug = True
@app.route('/mp',methods=['GET','POST'])
def wechat():
if request.method == 'GET':
#这里改写你在微信公众平台里输入的token
token = 'yourtoken'
#获取输入参数
data = request.args
signature = data.get('signature','')
timestamp = data.get('timestamp','')
nonce = data.get('nonce','')
echostr = data.get('echostr','')
#字典排序
list = [token, timestamp, nonce]
list.sort()
s = list[0] + list[1] + list[2]
#sha1加密算法
hascode = hashlib.sha1(s.encode('utf-8')).hexdigest()
#如果是来自微信的请求,则回复echostr
if hascode == signature:
return echostr
else:
return ""
if __name__ == '__main__':
app.run()
第三步,先看下微信公众号后台是咋样设置的,
① 服务器地址 --> http://公网ip/mp ,与flask路由设置一致
② token --> 自己设定,与flask中发送的token一致
③ 消息加密 --> 随机生成
如果你对微信token的校验机制有兴趣,可以查一下微信公众号文档
第四步点击提交,如果显示成功则配置完成了 flask服务器就可以关闭了,到此即完成了开头难的部分,接下来就是使用werobot这个框架了,使用 pip install werobot 进行安装
微信公众号内发送信息,所有的消息自动回复 Hello World!
import werobot
robot = werobot.WeRoBot(token='namejaho')
@robot.handler
def echo(message):
return 'Hello World!'
robot.config['HOST'] = '0.0.0.0'
robot.config['PORT'] = 80
robot.run()
微信公众号已经接入服务器,现在想通过 werobot 实现公众号的控制,如添加回复、关键词回复、自定义菜单(坑)等
需求已经有了,现在想想如何实现,werobot框架的使用很简单,几行代码就可以实现自动回复功能,通过查阅文档可知,自定义菜单代码也不多,下面对其进行简单封装
from werobot import WeRoBot
robot = WeRoBot()
robot.config["APP_ID"] = "APP_ID"
robot.config["APP_SECRET"] = "APP_SECRET"
class Wechat(object):
def __init__(self):
#self.robot = WeRoBot(token='namejaho')
self.client = robot.client
def create_menu(self,menu,key):
self.client.create_menu({
"button":[{
"type": "click",
"name": menu,
"key": key
}]
})
@robot.key_click("author")
def handler(msg):
return '欢迎添加我微信:***'
def run(self):
self.create_menu('联系我','author')
robot.run()
wechat = Wechat()
wechat.run()
接下来跑下代码,不出意外的话,你也会报 48001: api unauthorized hint 这个错误,这是因为微信公众号有个接口权限,对个人主体账号限制了很多,如果想开通权限,只能通过企业号或者服务号了
自定义菜单只能以后再想办法,接下来是关注自动回复与关键词回复,这些操作可以通过 handler 解决
# 关注自动回复
import werobot
robot = werobot.WeRoBot(token='token')
@robot.subscribe
def subscribe(message):
return 'Hello My Friend!'
robot.config['HOST'] = '0.0.0.0'
robot.config['PORT'] = 80
robot.run()
PS:只要你启用了服务器配置,你公众号就不能使用原来的自定义菜单和自动回复了,两者是互斥的。
可能您还想看