PS: 准备慢慢开始运营公众号,这是一年前公众号发的第一篇文章,整理出来从新发送。
前言
如今来看(2018年12月),Werobot仍然在Github活跃的更新,这篇文章可以帮助你们掉微信公众号的自定义开发功能有个大体的了解。
Werobot简介
Werobot项目地址(做者:whtsky):python
https://github.com/offu/WeRoBotgit
WeRoBot 是一个微信公众号开发框架,采用MIT协议发布。
我本来是打算在我的订阅号玩一玩自定义开发,由于能够实现不少有趣的功能。github
结果弄到自定义菜单的时候竟然发现:后端
我的订阅号没法使用自定义菜单开发接口!须要认证!
我的订阅号没法使用自定义菜单开发接口!须要认证!
我的订阅号没法使用自定义菜单开发接口!须要认证!服务器
然而,我的名义的订阅号没法进行微信认证,因此开发的热情一会儿丢了一半。
因此在这里就简短的说一下入门流程,官方文档写的很好,可是入门上感受写的有不连贯的感受,在这我就当一个补充教程。微信
申请公众号
申请公众号是一个必要的步骤,没有什么特别须要注意的地方,不过要清楚不一样的公众号类型所拥有的权限是不一样的:
框架
获取开发者ID
取得了公众号后,登陆后台,点击“基本配置”,拿到开发者ID和秘钥,底下的服务器配置须要在服务器部署后再进行设置。tornado
服务器部署
若是要进行微信的自定义开发,你须要一台后台服务器来接受用户消息,处理消息,最后返回消息给用户。
而且,你的服务器须要有域名,也就是网址,而非IP地址。
个人服务器是亚马逊EC2,固然你也能够用国内的云服务器。
个人域名则是购买的,建议购买国外的服务商,这样获得的域名不须要备案。url
根据Werobot文档:连接,你必须有部署的server,基本上云服务器的Linux都自带了一些,因此你能够先写代码,运行时候在观察下是否能够直接部署。
server 支持如下几种:spa
cgi
flup
wsgiref
waitress
cherrypy
paste
fapws3
tornado
gae
twisted
diesel
meinheld
gunicorn
eventlet
gevent
rocket
bjoern
auto
根据Werobot文档:连接,先试着写一个demo:
源代码:
import werobot robot = werobot.WeRoBot(token='yzd') @robot.handler def echo(message): return 'Hello World!' robot.config['HOST'] = '0.0.0.0' robot.config['PORT'] = 8082 robot.run()
注意我用的port是8082,我使用了反向代理。
通常来讲,若是你的服务器只有一个微信后台服务,请使用80端口!
若是你是https,请使用443端口!
注意到个人token是随机本身设置的,微信规定是3位以上数字字母。以后在填写的服务器配置上用获得。
接着,你能够运行:
python rebot.py
如图,已经运行(最好用screen或者文档说的supervisor保证进程不被杀掉):
验证服务器有效性
以后,修改服务器配置,填写你的域名(以前确保你已经作好域名DNS映射!),token=‘yzd’,点击肯定,微信会自动发送一个确认信息到你的服务器,一旦成功返回正确结果,验证就成功了。
实验效果
如今,你能够用手机给订阅号发消息:
补充
最后,贴上我以前写的自定义菜单的源码,因为我是我的订阅号,没有权限,因此返回了48001错误,郁闷…
from werobot import WeRoBot robot = WeRoBot() robot.config["APP_ID"] = "xxxxxxxxxx" robot.config["APP_SECRET"] = "xxxxxxxxxxxxxxxxxxxxxxxxxx" client = robot.client client.create_menu({ "button":[ { "type":"click", "name":"des", "key":"describe" }, { "name":"find", "sub_button":[ { "type":"view", "name":"twitter", "key":"trump" } ] }, { "type":"viwe", "name":"buy", "url":"https://usau-buy.com/" }, ]})
本文分享自微信公众号 - 后端技术漫谈(Rude3Knife)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。