栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

目录

一、搭建服务器

1.1 云服务器租用1.2 添加安全组规则 二、微信公众平台注册及配置

2.1 注册微信公众平台账号2.2 服务器配置2.3 vim的使用

2.3.1 模式转换2.3.2 更多操作 三、基本功能部署

3.1 鹦鹉学舌3.2 高级功能接入

一、搭建服务器 1.1 云服务器租用

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

图1 服务器管理界面

1.2 添加安全组规则

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

图2 服务器管理界面

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

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

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

完成以上步骤后,可得到微信公众平台帐号如图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验证失败百分百解决

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/747090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号