设为首页 收藏本站
查看: 751|回复: 0

[经验分享] 微信公共平台框架-python(支持多账号)

[复制链接]

尚未签到

发表于 2017-5-6 12:58:07 | 显示全部楼层 |阅读模式
  email:zealzpc@gmail.com
  因为微信公共号开发模式只能连接80端口 所以如果需要一个服务器跑多个公共号就需要代码内部自己做分发。因为自己对微信公共号的接口都比较熟悉加上不复杂就自己写了个库,基于tornado的,写完后直接运行就可以了,还比较方便。
  github:https://github.com/pakoo/pywechat
  整个项目就一个文件 3个类。

class BaseRequest(object):
"""
微信公共号父类
"""
def __init__(self,hander):
self.con = hander
  BaseRequest  公共号的父类。不用关心。

class TestApp(BaseRequest):
"""
公共号实例,一个公共号一个实例,只需要实现需要的功能就行,具体接受的消息类型见父类
"""
def get_text(self):
"""
当测试app收到微信的文字消息时,do something
"""
if self.wxtext == '1':
#如果收到 '1'
self.send_text('1')#回复1
  公共号实例,也就是我们要do something的地方。你公共号接收到消息具体要返回什么内容,业务逻辑就是实现这个类。如果要跑2个公共号,那你要创建2个app实例。
  接口分2类,一类是接收消息的入口,还有一类是回复消息的接口。
  消息入口
  get_text 收到文字消息
  get_location 收到地理位置消息
  get_image 收到图片消息
  get_voice 收到音频
  get_video 收到视频
  get_event 收到事件消息,比如自定义菜单上的click 事件。
  get_subscribe 收到用户订阅事件,用户关注你的公众好了就会收到这个消息
  回复接口
  send_text 回复文字消息
  send_artical  回复文章
  send_artical_list  回复多篇文章
  回复图片 和 音频需要服务号 订阅好没这个功能,是因为订阅好不能上传素材.
  以TestApp为例,我们实现了get_text 这个入口,那么用户发送文字消息过来后就会进行处理。如果文字命中了你if 中的某个字符串你可以做出相应的回复,比如回复文字消息 就调用send_text 就可以了。
  如果用户发送的是地理位置消息,因为我们TestApp里没有 get_location 方法 所以不会有任何反应。
  最后我们需要将TestApp和 webserver 绑定。

class WeChatHandler(tornado.web.RequestHandler):
"""
webserver
"""
def prepare(self):
self.app_list = {
'gh_c941312d18f7':{'handler':TestApp,'token':'test_token'},
}
  只要在 app_list里 添加一条 公共号的记录就可以了。
  下面是微信发送给你文本消息的例子。

<xml><ToUserName><![CDATA[gh_c324b60d1fv7]]></ToUserName>
<FromUserName><![CDATA[oItamjq5pzWmWzxuTrZXvH3uWA8]]></FromUserName>
<CreateTime>1397542887</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[1]]></Content>
<MsgId>6003500996622490084</MsgId>
</xml>
  app_list 的key 就是上面的 [size=1em]ToUserName handler 就是你实现的TestApp  还需要你在微信公共平台上填的token 用来做信息验证。
  都完事后,直接 python wechat_server.py 直接运行就可以了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-373840-1-1.html 上篇帖子: python实现数据的多维缩放(集体智慧编程) 下篇帖子: ArcGIS Server Administrator API 编写python脚本(二)-----创建站点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表