flask+新浪sae+图灵机器人实现超简单微信公众号智能回复功能

Posted CodeNotes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask+新浪sae+图灵机器人实现超简单微信公众号智能回复功能相关的知识,希望对你有一定的参考价值。

人工智能很火,但是智能算法对于大多数人来说门槛儿还是挺高的


对于我们这种喜欢折腾的码农来说,就算不会算法也要又一颗想折腾的心


我们不会算法,可以基于已经成熟的算法成果来做一些好玩儿的东西



  1. 申请新浪SAE,初次申请新浪会给200个云豆,完全够我们玩儿一阵儿了;

  2. 在新浪SAE上创建一个python的项目,使用git或者svn把工程代码拉下来,我使用的是git;

  3. 使用pyCharm创建flask项目;

  4. 申请图灵机器人,网站是http://www.tuling123.com/;

  5. flask对接图灵机器人api;

  6. 将flask代码提交到sae上;

  7. 结束。


效果如下,做完以后不由的感觉python的方便快捷


图1




图2


如上图所示,点击进入微信的这个页面,具体路径是左侧下方的开发标签下的基本配置,点击进入后,点击服务器配置按钮进入上图所示页面,


需要填写的又两个内容:

  1. token,这个令牌可随意填写一个,和flask服务里校验接口里的token一致就行



下面就到校验接口的部分了,直接上代码吧,校验方法如下:

    

@app.route('/', methods=['GET'])
def wechat():
if request.method == 'GET':
# 这里改写你在微信公众平台里输入的token
       token = 'xxxxxx'
       # 获取输入参数
       query = request.args
signature = query.get('signature', '')
timestamp = query.get('timestamp', '')
nonce = query.get('nonce', '')
echostr = query.get('echostr', '')
s = [timestamp, nonce, token]
s.sort()
s = ''.join(s)

if hashlib.sha1(s).hexdigest() == signature:
resp = make_response(echostr)
resp.headers['content-type'] = 'text'
           return resp
else:
return ""



flask对接图灵机器人api


@app.route('/', methods=['POST'])
def autoreplay():
xml = ET.fromstring(request.data)
toUser = xml.find('ToUserName').text
fromUser = xml.find('FromUserName').text
msgType = xml.find("MsgType").text
createTime = xml.find("CreateTime")
if msgType == 'text':
content = xml.find('Content').text
content = text_reply(content)
resp = make_response(reply_text(fromUser,
       
toUser, reply(fromUser, content)))
resp.headers['content-type'] = 'text'
       return resp
elif msgType == 'location':
location.getInfo(xml)
else:
'暂不支持图片视频语音类'


上面这段代码是解析http各个字段的,主要获取到content,将content扔给text_replay方法


def text_reply(msg):
info = msg['Text'].encode('utf-8')
url = 'http://www.tuling123.com/openapi/api'
   data = {u"key": "申请的key", "info": info, u"loc": "",
           
"userid": ""}
response=request.post(url,data).content
s = json.loads(response, encoding='utf-8')
return s['text']


以上是关于flask+新浪sae+图灵机器人实现超简单微信公众号智能回复功能的主要内容,如果未能解决你的问题,请参考以下文章

微信公众号+python+新浪SAE实现实时天气预报功能

使用新浪云(SAE)实现基于mySql和微信公众平台的关键字请求响应服务

微信开发01-申请新浪SAE

从Python爬虫到SAE云和微信公众号:新浪SAE上搭建微信服务

微信公众平台开发(150)——从新浪云SAE上传图片到图文消息

微信公众号开发将war包导入新浪sae出现错误