查看原文
其他

[微信公众号开发]Werobot入门指南

Rude3Knife 后端技术漫谈 2022-06-20

PS: 准备慢慢开始运营公众号,这是一年前公众号发的第一篇文章,整理出来重新发送。

前言

现在来看(2018年12月),Werobot仍然在Github活跃的更新,这篇文章能够帮助大家掉微信公众号的自定义开发功能有个大致的了解。

Werobot简介

Werobot项目地址(作者:whtsky):

https://github.com/offu/WeRoBot

WeRoBot 是一个微信公众号开发框架,采用MIT协议发布。

我原本是打算在个人订阅号玩一玩自定义开发,因为可以实现很多有趣的功能。

结果弄到自定义菜单的时候居然发现:

个人订阅号无法使用自定义菜单开发接口!需要认证!
个人订阅号无法使用自定义菜单开发接口!需要认证!
个人订阅号无法使用自定义菜单开发接口!需要认证!


然而,个人名义的订阅号无法进行微信认证,所以开发的热情一下子丢了一半。
所以在这里就简短的说一下入门流程,官方文档写的很好,但是入门上感觉写的有不连贯的感觉,在这我就当一个补充教程。

申请公众号

申请公众号是一个必要的步骤,没有什么特别需要注意的地方,不过要清楚不同的公众号类型所拥有的权限是不同的:

获取开发者ID

取得了公众号后,登录后台,点击“基本配置”,拿到开发者ID和秘钥,底下的服务器配置需要在服务器部署后再进行设置。

服务器部署

如果要进行微信的自定义开发,你需要一台后台服务器来接受用户消息,处理消息,最后返回消息给用户。
并且,你的服务器需要有域名,也就是网址,而非IP地址。
我的服务器是亚马逊EC2,当然你也可以用国内的云服务器。
我的域名则是购买的,建议购买国外的服务商,这样得到的域名不需要备案。

根据Werobot文档:链接,你必须有部署的server,基本上云服务器的Linux都自带了一些,所以你可以先写代码,运行时候在观察下是否可以直接部署。
server 支持以下几种:

  • 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/"        },    ]})

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存