专栏首页深度学习与推荐系统教你快速搭建自己的个人专属微信公众号机器人
原创

教你快速搭建自己的个人专属微信公众号机器人

▌前言

前些天闲来无事想弄个微信公众号机器人,因为可以用机器人做好多事情,比如可以让它变成一个智能聊天机器人,也可以让它爬取并推送arxiv上自己想要的论文,还可以让它绘制并推送有关肺炎疫情的曲线图等等,所有的这些只需要实现对应指令的接口即可,也就是给公众号发送指定的指令,就会给你推送该指令对应的任务回复。

搜了全网资料,没有找到一个完整介绍搭建微信公众号机器人全过程的,或者需要付费才能看搭建资料和代码,后来经过几天的探索,终于搭建成功了,这篇文章就把自己搭建微信公众号机器人的详细过程免费分享一下,一来可以不像我一样走弯路,二来也算是做个总结,整个搭建过程分为三步。在公众号“深度学习与推荐系统”内回复“机器人”获取搭建微信公众号机器人源码。

▌搭建自己的服务器

首先是要搭建自己的服务器。如果条件允许可以在腾讯云上租个服务器,稳定方便。但如果不想花钱租服务器,只是想测试学习一下,可以利用自己的电脑搭建成一台服务器。电脑的系统要求是linux系统,然后通过NatApp免费快速的将自己的电脑配置成外网可以访问的服务器,但每天的访问地址都会随机更改,因此只能用来做测试和学习用途。具体的操作流程如下:

NatApp安装

在linux终端中执行如下命令:

#下载安装包
wget http://download.natapp.cn/assets/downloads/clients/2_3_4/natapp_linux_386_2_3_4.zip
#解压文件
unzip natapp_linux_386_2_3_4.zip
#给natapp执行权限
chmod a+x natapp

配置NatApp

网址:https://natapp.cn/,先在该网址上申请注册一个账号,完成实名认证之后便可领取一个免费隧道,隧道的具体配置如下图所示,剩余其他的配置项不用填:

配置完成后,得到自己的一个免费隧道,如下图所示,复制隧道的authtoken,启动NatApp时要用到:

启动NatApp

在linux终端中执行如下命令,注意要在第一步安装NatApp的目录下运行:

./natapp-authtoken=上一步申请的token

执行后的结果如下图所示:

该操作相当于把本地服务器的127.0.0.1:5000地址映射成为外网可以访问的http://dii5z7.xxx.cc地址,而该地址的服务端口为443。

▌完成微信服务器配置验证

搭建好自己的服务器之后,需要将该服务器地址设置成为自己微信公众号的服务器,并需要进行服务器验证,实现通信,这样发送给微信公众号的消息就会转发给自己搭建好的服务器,从而可以自己根据该消息完成各种任务。

配置微信公众号后台服务器地址

如果没有微信公众号,可以申请一个,申请成功之后进入微信公众号后台,点击“开发”的“基本配置”页面,在该页面启动开发者模式,然后开始进行服务器配置:

  • 服务器地址(URL)设置为外网可访问地址:http://dii5z7.xxx.cc
  • 令牌(Token)的设置与config.py代码中设置的Token保持一致即可
  • 消息加解密密钥(aeskey)自动生成即可,但须和config.py代码中设置的消息加解密密钥保持一致

设置完成后先不能点击“提交”按钮,需要完成紧接着的第 ❷ 步开启验证服务。

微信服务器验证

首先配置config.py文件,代码如下:

token="DeePR"
appid="wxb47e97axxxxx000b"
aeskey='2g1hvhxEnOaiNDAT8CTbSKxxxxxxxxh8YfHlsc2Xy0Zt'

保持和第❶步的配置一致,然后运行run.py文件,建议运行前建立一个新的python运行环境,然后安装上代码中导入的所有python依赖包,服务器验证部分的源码如下:

@app.route('/',methods=['GET','POST'])
def wechat():
    '''对接微信公众号'''
    #参数是在请求链接后携带的
    #微信的签名
    signature = request.args.get("signature")
    #我们签名所需的两个参数
    timestamp = request.args.get("timestamp")
    nonce = request.args.get("nonce")
    #签名校验成功后需返回给微信的
    echostr = request.args.get("echostr")
    #参数校验
    if not all([signature, timestamp, nonce]):
        abort(400)
​
    #开始签名
    #将数据添加进数组
    li = [cfg.token, timestamp, nonce]
​
    #排序
    li.sort()
​
    #拼接字符串
    #不编码的话python会报错
    tmp_str = "".join(li).encode('utf-8')
​
    #进行sha1加密
    sign = hashlib.sha1(tmp_str).hexdigest()
​
    #将自己的签名与微信进行对比
    if signature != sign:
        abort(403)
    #如果签名与微信的一致需返回echostr给微信
    else:
        return echostr

运行结果如下:

运行成功后,即可点击第 ❶ 步的“提交”按钮。可以看出提供服务的地址正好为本机的环回地址,也就是配置隧道时设置的本机地址127.0.0.1:5000。而通过隧道映射,把该地址映射成为了外网可以访问的http://dii5z7.xxx.cc地址,因此在微信公众号后台配置的地址就为该外网地址http://dii5z7.xxx.cc,此时直接访问该外网地址会出现如下图的界面:

▌实现机器人的功能接口

需要实现的机器人功能接口都放在了robot.py文件中,比如实现复读对话机器人功能的部分代码如下:

@myrobot.image
def image_repeat(message,session):
    return message.img
​
@myrobot.text
def test_repeat(message,session):
    return message.content

效果图如下:

实现智能对话机器人的简单实现代码如下:

from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
global chatbot 
chatbot = ChatBot("ChineseChatBot")
trainer = ChatterBotCorpusTrainer(chatbot)
trainer.train("chatterbot.corpus.chinese")
​
@myrobot.text
def text_response(message,session):
    answer = chatbot.get_response(message.content).text
    return answer

效果图如下:

▌总结

微信公众号机器人可以实现一些定制化的功能比如客服机器人,可以做一些非常实用的功能,比如推送个性化定制的疫情感染人数曲线图,能精确到省份,也可以作为一个学以致用的工具,比如应用自己的智能聊天机器人算法,如果自己搭建的服务器有GPU就很棒了,可以用到深度学习算法。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 推荐系统技术演进趋势:从召回到排序再到重排

    地址:https://zhuanlan.zhihu.com/p/100019681

    DeePR
  • 再看经典召回算法

    在学习和应用推荐算法的过程中,发现越来越多的文章在描述深度学习应用在推荐系统上的方法,不可否认深度学习的发展给推荐系统带来了巨大的进步,但是传统的经典算法仍然是...

    DeePR
  • 多值类别特征加入CTR预估模型的方法

    我们都知道一般单值类别特征加入到CTR预估模型的方法是先对单值类别特征进行one-hot,然后和embedding 矩阵相乘转换成多维稠密特征,如下图 1 所示...

    DeePR
  • LVS集群的负载调度

    1. 前言 本文将主要讲述在负载调度器上的负载调度策略和算法,如何将请求流调度到各台服务器,使得各台服务器尽可能地保持负载均衡。文章主要由两个部分组 成。第...

    用户1263954
  • 数据库PostrageSQL-关闭服务器

    有几种关闭数据库服务器的方法。通过给postgres进程发送不同的信号,你就可以控制关闭类型。

    cwl_java
  • teg 一次云故障引起的思考

    很多朋友经历了昨晚阿里云3小时左右的故障,我司的业务也受到了一定影响,技术的同事一起熬夜奋战,最终观察服务稳定运行了两个多小时,直到凌晨五六点多才逐渐登出VPN...

    葫芦
  • Zookeeper 介绍与内部原理

    Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。

    木野归郎
  • H3C IPSec ×××

    一、IPSec体系结构:(1)安全协议:负责保护数据、AH/ESP;(2)工作模式:传输模式、隧道模式;(3)密钥管理:手工配置密钥、通过IKE协商密钥。

    py3study
  • 报告 | 研究显示,2022 年之前,机器学习芯片市场将是行业巨头的关注重点(附报告)

    雷锋网按:机器学习的兴起同样促进了机器学习芯片的发展。近日,Allied Market Research 发布了一份机器学习芯片市场报告,雷锋网编译如下: 机器...

    AI科技评论
  • [喵咪Liunx(6)]Nginx日志分析工具goaccess

    [喵咪Liunx(6)]Nginx日志分析工具goaccess #w-blog博客 ? 前言 哈喽大家好呀!真是好久不见了,说来有些惭愧,离上一次发布博客已经是...

    喵了个咪233

扫码关注云+社区

领取腾讯云代金券