下面是Python开发之快速搭建自动回复微信公众号功能的完整攻略。
1. 准备工作
要快速搭建自动回复微信公众号功能,需要进行如下准备工作:
- 一台可访问公网的服务器,建议使用Linux系统;
- 一个已经注册并通过审核的微信公众号,可以在微信公众平台申请;
- Python环境,建议使用Python 3.x版本;
- 在微信公众平台中配置开发者模式,并获取开发者-token。
2. 安装必要的Python库
在Python环境下,需要安装如下几个必要的Python库:
# 安装flask
pip install flask
# 安装requests
pip install requests
# 安装xmltodict
pip install xmltodict
3. 编写代码
1) 配置服务器端口和token,并启动flask框架
from flask import Flask, request
import hashlib
import xmltodict
import requests
app = Flask(__name__)
# 配置服务器端口和token
app.config['SERVER_PORT'] = 80
app.config['SERVER_TOKEN'] = 'xxxxxxxxxxxxxxxx' # 微信公众号Token
@app.route('/', methods=['GET', 'POST'])
def wechat():
# 验证Token
signature = request.args.get('signature', '')
timestamp = request.args.get('timestamp', '')
nonce = request.args.get('nonce', '')
echostr = request.args.get('echostr', '')
s = [timestamp, nonce, app.config['SERVER_TOKEN']]
s.sort()
s = ''.join(s)
if hashlib.sha1(s.encode('UTF-8')).hexdigest() == signature:
return echostr
# 解析消息
data = xmltodict.parse(request.data)['xml']
# 处理消息
if data['Content'].strip() == 'hello':
reply = 'Hello World!'
else:
reply = 'Sorry, I do not understand your message.'
# 回复消息
url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=' + get_access_token()
headers = {'Content-Type': 'application/json; charset=UTF-8'}
data = {
'touser': data['FromUserName'],
'msgtype': 'text',
'text': {
'content': reply
}
}
requests.post(url, headers=headers, json=data, timeout=5)
return 'success'
2) 获取开发者-token
def get_access_token():
url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxxxxxxxxxxxxxxxxx&secret=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
r = requests.get(url, timeout=5)
access_token = r.json().get('access_token', '')
return access_token
4. 部署服务器
把编写好的代码上传到服务器,并在服务器中运行flask run
命令即可启动微信公众号自动回复功能。此时,可以在微信公众号中发送消息,回复内容将被自动回复。
示例说明
示例1:回复Hello World!
如果用户输入的消息内容是hello
,则自动回复消息Hello World!
。如下示例代码:
if data['Content'].strip() == 'hello':
reply = 'Hello World!'
else:
示例2:回复默认消息
如果用户输入的消息内容不是hello
,则自动回复默认消息Sorry, I do not understand your message.
。如下示例代码:
if data['Content'].strip() == 'hello':
reply = 'Hello World!'
else:
reply = 'Sorry, I do not understand your message.'
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python开发之快速搭建自动回复微信公众号功能 - Python技术站