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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。