微信公众号开发者模式入门

一、搭建服务器

1.1 云服务器租用

本文中使用的云服务器为腾讯云提供的学生云服务器,通过账号注册、实名认证以及学生信息认证即可进行购买。本文中所使用的服务器配置为:1核2G,1M带宽,系统盘为高性能云硬盘,使用的操作系统为CentOS 8.4 64位。购买完成后,进入腾讯云的控制台管理页面,即可进行服务器的管理,如图1所示。服务器管理界面

图1 服务器管理界面

1.2 添加安全组规则

为了实现外网对服务器的访问,便需要在服务器实例的安全组列表中添加相应的安全组规则,以开放对应端口,配置规则如图2所示。

安全组配置规则

图2 服务器管理界面

二、微信公众平台注册及配置

2.1 注册微信公众平台账号

进入微信公众平台官网并根据指引进行微信公众号的注册。具体的注册流程如下:

  1. 填写用户基本信息;
  2. 选择帐号类型,在本文中选择为订阅号;
  3. 选择主体类型为个人并进行个人信息的填写;
  4. 填写开发的微信公众平台账号信息,包括帐号名称、功能介绍等。

完成以上步骤后,可得到微信公众平台帐号如图3所示。
微信公众平台帐号信息

图3 微信公众平台帐号信息

2.2 服务器配置

以下配置根据微信官方文档进行。
现在Linux服务器一般自带python2,这里自带的是python3。

查看python版本。

python --version

安装/更新需要用到的软件。

pip3 install web.py
pip3 install lxml
yum -y install libxml2
yum -y install libxslt

需要注意的是,官方文档提供的是python2的代码,和python3稍有区别。代码按照python3修改后如下:
vim main.py

# -*- coding: utf-8 -*-
# filename: main.py
import web
from handle import Handle

urls = (
    '/wx', 'Handle',
)

if __name__ == '__main__':
    app = web.application(urls, globals())
    app.run()

vim handle.py

# -*- coding: utf-8 -*-
# filename: handle.py

import hashlib
import web

class Handle(object):
    def GET(self):
        try:
            data = web.input()
            if len(data) == 0:
                return "hello, this is handle view"
            signature = data.signature
            timestamp = data.timestamp
            nonce = data.nonce
            echostr = data.echostr
            token = "hello2022" # 此处需要替换

            list = [token, timestamp, nonce]
            list.sort()
            sha1 = hashlib.sha1()
            sha1.update(list[0].encode('utf-8'))
            sha1.update(list[1].encode('utf-8'))
            sha1.update(list[2].encode('utf-8'))
            hashcode = sha1.hexdigest()
            print("handle/GET func: hashcode, signature: ", hashcode, signature)
            if hashcode == signature:
                return echostr
            else:
                return ""
        except(Exception, Argument):
            return Argument

服务器配置说明

图4 服务器配置说明

其中,URL为关联服务器的地址,当微信用户向该公众号发送消息时,微信平台会将包含该消息内容的XML数据包发送到该服务器。

2.3 vim的使用

通过熟练使用vim,可以加快代码的编写。
vim有三种模式:命令模式、插入模式和底行模式。
输入vim xxx.py,即进入命令模式。

2.3.1 模式转换

在命令模式下,输入i,进入插入模式,即可在光标后输入文本。
在插入模式下,按Esc键,返回命令模式。
在命令模式下,输入:,进入底行模式,继续输入wq则保存后退出。
在底行模式下,同样是按Esc键,返回命令模式。

2.3.2 更多操作

Linux操作系统中,ctrl+insert是复制,shift+insert是粘贴。
在命令模式下,输入gg跳转到首行,shift+g跳转到末行,shift+6跳转到光标所在行的末尾。
在底行模式下,若继续输入w则保存修改不退出,若继续输入q则不保存直接退出。如果最后加!,表示强制执行,比如在只读时:wq!,则会强制保存修改并退出。

三、基本功能部署

3.1 鹦鹉学舌

实现鹦鹉学舌,即把发来的话作为回复发回去。
main.py文件不改变,handle.py 需要增加代码。增加新的文件receive.py, reply.py,与官方文档相同,不再粘贴代码。
vim handle.py

# -*- coding: utf-8 -*-# 
# filename: handle.py
import hashlib
import reply
import receive
import web
class Handle(object):
    def POST(self):
        try:
            webData = web.data()
            print "Handle Post webdata is ", webData
            #后台打日志
            recMsg = receive.parse_xml(webData)
            if isinstance(recMsg, receive.Msg) and recMsg.MsgType == 'text':
                toUser = recMsg.FromUserName
                fromUser = recMsg.ToUserName
                content = recMsg.Content.decode('utf-8') # 文本消息
                replyMsg = reply.TextMsg(toUser, fromUser, content)
                return replyMsg.send()
            else:
                print "暂且不处理"
                return "success"
        except Exception, Argment:
            return Argment

效果如图5所示。
聊天结果展示

图5 聊天结果展示

3.2 高级功能接入

未来可以添加自然语言处理的模型,实现聊天机器人等高级功能。

面向情绪交互的聊天机器人系统的设计与实现 by 陈龙
微信官方文档
token验证失败百分百解决

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值