123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #!/usr/bin/eny python
- #_*_coding:utf-8_*_
- import web
- import os
- import hashlib
- import time
- import json
- from lxml import etree
- from talk import talk
- from img import img
- import xiaobing
- class WeixinInterface:
- def __init__(self):
- self.app_root = os.path.dirname(__file__)
- self.templates_root = os.path.join(self.app_root, 'templates')
- self.render = web.template.render(self.templates_root)
- def GET(self):
- data = web.input()
- signature = data.signature
- timestamp = data.timestamp
- nonce = data.nonce
- echostr = data.echostr
- token = "zhiyong"
- l = [token, timestamp, nonce]
- l.sort()
- sha1 = hashlib.sha1()
- map(sha1.update, l)
- hashcode = sha1.hexdigest()
- if hashcode == signature:
- return echostr
- def POST(self):
- str_xml = web.data()
- xml = etree.fromstring(str_xml)
- msgType = xml.find("MsgType").text
- fromUser = xml.find("FromUserName").text
- toUser = xml.find("ToUserName").text
- userId = fromUser[0:15]
- #文本信息
- if msgType == "text":
- content = xml.find("Content").text
- if content == u"菜单":
- menu = u'哈哈哈哈,欢迎关注。公众号里面有个机器人,还有声音识别和图片审美 ~'
- return self.render.reply_text(fromUser, toUser, int(time.time()), menu)
- elif content == u'快递':
- return self.render.reply_text(fromUser, toUser, int(time.time()), u'你好,查水表!')
- else:
- text = talk(content, userId)
- # xb = xiaobing.xiaoiceApi()
- # text = xb.chat(content)
- # if text['status'] == 'succeed':
- # text = text['text']
- # elif text['status'] == 'failed':
- # text = 'error:' + text['text']
- # else:
- # text = u'小冰消失啦,请稍后再试!'
- return self.render.reply_text(fromUser, toUser, int(time.time()), text)
- #语音信息
- elif msgType == "voice":
- content = xml.find("Recognition").text
- text = talk(content, userId)
- return self.render.reply_text(fromUser, toUser, int(time.time()), text)
-
- #图片信息
- elif msgType == 'image':
- picUrl = xml.find("PicUrl").text
- result = img(picUrl)
- content = u'图中识别出 %d 张人脸 \n'%(len(result))
- for i in result:
- content += i['sex'] + ' ' + i['age'] + u'岁' + '\n'
- return self.render.reply_text(fromUser, toUser, int(time.time()), content)
- else:
- return ''
|