赞
踩
这里,本来打算用一个微信号来做机器人的,但是机器人有几个缺点
1、如果任意一个人想使用机器人的话,那么必须添加机器人为好友才能使用测试
2、基于微信识别异常微信号的自动检测,机器人很有可能被封号o(╥﹏╥)o
3、现在想使用微信号做机器人的话,后端对接微信的方法大概有两种,一是使用网页版微信的API进行接入,不过现在网页版的微信已经封的差不多了,这种方法已经过时了,二是使用微信注入dll的方式来对接,不过这种方式也同样会受到微信的异常号自动检测,也会容易封号
所以这边使用微信公众号的后台开发自动回复来对接
开发配置:
1、python
2、一台服务器
进入微信公众号的开放平台,进入基本配置页面申请好开发者id和密码,并且开启你的服务器配置,配置好你的服务器后台、令牌和消息加密秘钥,后面会介绍如何配置你的服务器后台
注意,你的后端调试成功后才会成功开启服务器配置
我这边使用的阿里云的centos服务器,后端使用python,使用的是flask框架
服务器后台开启的端口一定要是80或者443,因为服务器配置只支持这两个端口,具体的开发模式也可以参考这个文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Getting_Started_Guide.html
后台配置开发的逻辑如下:
centos服务器安装python的具体指南参考我的其他文章,这里放出我的一部分代码
# -*- coding:utf-8 -*-
from flask import Flask
from flask import request
import hashlib
import time
import xml.etree.ElementTree as ET
app = Flask(__name__)
@app.route("/")
def index():
return "Hello World!"
@app.route("/wechat", methods=["GET","POST"])
def weixin():
if request.method == "GET": # 判断请求方式是GET请求
my_signature = request.args.get('signature') # 获取携带的signature参数
my_timestamp = request.args.get('timestamp') # 获取携带的timestamp参数
my_nonce = request.args.get('nonce') # 获取携带的nonce参数
my_echostr = request.args.get('echostr') # 获取携带的echostr参数
token = 'xxxxxxxxxxxx' # 一定要跟刚刚填写的token一致
li = [token, my_timestamp, my_nonce]
li.sort()
sha1 = hashlib.sha1()
sha1.update("".join(li).encode('utf-8'))
hashcode = sha1.hexdigest()
# 加密后的字符串可与signature对比,标识该请求来源于微信
if my_signature == hashcode:
return my_echostr
else:
return ''
else:
# 解析xml
xml = ET.fromstring(request.data)
toUser = xml.find('ToUserName').text
fromUser = xml.find('FromUserName').text
msgType = xml.find("MsgType").text
createTime = xml.find("CreateTime")
# 判断类型并回复
print(msgType)
if msgType == "text":
content = xml.find('Content').text
print(content)
return reply_text(fromUser, toUser, reply(fromUser, content))
elif msgType == 'event':
content = '关注'
return reply_text(fromUser, toUser, reply(fromUser, content))
else:
return reply_text(fromUser, toUser, "我只懂文字")
def reply_text(to_user, from_user, content):
"""
以文本类型的方式回复请求
"""
return """
<xml>
<ToUserName><![CDATA[{}]]></ToUserName>
<FromUserName><![CDATA[{}]]></FromUserName>
<CreateTime>{}</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[{}]]></Content>
</xml>
""".format(to_user, from_user, int(time.time() * 1000), content)
def reply(msg):
'''
使用对话机器人
'''
res = requests.get('http://api.qingyunke.com/api.php?key=free&appid=0&msg=' + msg)
content = res.json()['content']
content = content.replace('{br}', '\n')
return content
if __name__ == "__main__":
app.run(host='0.0.0.0',port=80,debug=True)
这边的对话机器人暂时使用青云客的免费聊天机器人,将在下一篇文章中讲到,后台配置完成后,可以先到微信公众平台的后台调试工具先去调试一下,具体网址在这:
https://mp.weixin.qq.com/debug/
测试通过返回成功的测试结果即为成功
如果测试失败,多半是后端出问题了,多调试调试后端即可,开启成功后,向微信机器人发送消息即可收到自动回复的消息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。