在之前的一篇文章 Python利用 AIML 和 Tornado 搭建聊天机器人微信订阅号 中用 aiml 实现了一个简单的英文聊天机器人订阅号。但是只能处理英文消息,现在用 图灵机器人 来实现一个中文的聊天机器人订阅号。
这里主要介绍如何利用 Python 的 Tornado Web框架以及wechat-python-sdk 微信公众平台 Python 开发包来快速搭建微信公众号。
完整的公众号代码 GitHub 地址:green ,由于目前此公众号有一些功能正在开发中,此完整代码会与下文所描述的代码有不一致的地方,但是自动回复的功能会一直保留。
本文搭建的微信公众号为 Ms_haoqi
,可以扫码关注后测试效果
自动回复效果:
安装Python库
通过 pip 安装 wechat-python-sdk , Requests 以及 Tornado
1 2 3 |
pip install tornado pip install wechat-sdk pip install requests |
订阅号申请
要搭建订阅号,首先需要在微信公众平台官网进行注册,注册网址: 微信公众平台。
目前个人用户可以免费申请微信订阅号,虽然很多权限申请不到,但是基本的消息回复是没有问题的。
服务器接入
具体的接入步骤可以参考官网上的接入指南。
本订阅号的配置为:
配置里的URL为服务器提供订阅号后台的url路径,本文用到的源代码配置的是 http://server_ip/wx 其中 server_ip 是运行源代码的主机的公网ip地址。
Token 可以设置为任意字符串。
EncodingAESKey 可以选择随机生成。
消息加密方式可以设置为比较简单的明文模式。
接受并处理微信服务器发送的接入请求的关键代码为Tornado的一个Handle, wx.py
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import tornado.escape import tornado.web from wechat_sdk import WechatConf conf = WechatConf( token='your_token', # 你的公众号Token appid='your_appid', # 你的公众号的AppID appsecret='your_appsecret', # 你的公众号的AppSecret encrypt_mode='safe', # 可选项:normal/compatible/safe,分别对应于 明文/兼容/安全 模式 encoding_aes_key='your_encoding_aes_key' # 如果传入此值则必须保证同时传入 token, appid ) from wechat_sdk import WechatBasic wechat = WechatBasic(conf=conf) class WX(tornado.web.RequestHandler): def get(self): signature = self.get_argument('signature', 'default') timestamp = self.get_argument('timestamp', 'default') nonce = self.get_argument('nonce', 'default') echostr = self.get_argument('echostr', 'default') if signature != 'default' and timestamp != 'default' and nonce != 'default' and echostr != 'default' and wechat.check_signature(signature, timestamp, nonce): self.write(echostr) else: self.write('Not Open') |
此代码的作用就是验证消息是来自微信官方服务器后直接返回echostr。
启动后台的 main.py
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import tornado.web import tornado.httpserver from tornado.options import define, options settings = { 'static_path': os.path.join(os.path.dirname(__file__), 'static'), 'template_path': os.path.join(os.path.dirname(__file__), 'view'), 'cookie_secret': 'e440769943b4e8442f09de341f3fea28462d2341f483a0ed9a3d5d3859f==78d', 'login_url': '/', 'session_secret': "3cdcb1f07693b6e75ab50b466a40b9977db123440c28307f428b25e2231f1bcc", 'session_timeout': 3600, 'port': 5601, 'wx_token': 'weixin', } web_handlers = [ (r'/wx', wx.WX), ] define("port", default=settings['port'], help=an>"port", default=settings['port'], help=span style="font-size: 15px;font-family: 'Microsoft YaHei', 宋体, Lato, 'Helvetica Neue', Helvetica, Arial, sans-serif;line-height: 1.5"> 中用 aiml 实现了一个简单的英文聊天机器人订阅号。但是只能处理英文消息,现在用 图灵机器人 来实现一个中文的聊天机器人订阅号。
这里主要介绍如何利用 Python 的 Tornado Web框架以及wechat-python-sdk 微信公众平台 Python 开发包来快速搭建微信公众号。 完整的公众号代码 GitHub 地址:green ,由于目前此公众号有一些功能正在开发中,此完整代码会与下文所描述的代码有不一致的地方,但是自动回复的功能会一直保留。 本文搭建的微信公众号为 自动回复效果: 安装Python库通过 pip 安装 wechat-python-sdk , Requests 以及 Tornado
订阅号申请要搭建订阅号,首先需要在微信公众平台官网进行注册,注册网址: 微信公众平台。 目前个人用户可以免费申请微信订阅号,虽然很多权限申请不到,但是基本的消息回复是没有问题的。 服务器接入具体的接入步骤可以参考官网上的接入指南。 本订阅号的配置为: 配置里的URL为服务器提供订阅号后台的url路径,本文用到的源代码配置的是 http://server_ip/wx 其中 server_ip 是运行源代码的主机的公网ip地址。 Token 可以设置为任意字符串。 EncodingAESKey 可以选择随机生成。 消息加密方式可以设置为比较简单的明文模式。 接受并处理微信服务器发送的接入请求的关键代码为Tornado的一个Handle,
此代码的作用就是验证消息是来自微信官方服务器后直接返回echostr。 启动后台的
|