美文网首页微信公众号
不花一分钱快速搭建自己的微信公众号机器人

不花一分钱快速搭建自己的微信公众号机器人

作者: DeepRec | 来源:发表于2020-02-09 22:15 被阅读0次

    前言

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

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

    搭建自己的服务器

    首先是要搭建自己的服务器。如果不想花钱租服务器,可以利用自己的电脑搭建成一台服务器。电脑的系统要求是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:http://dii5z7.xxx.cc地址,而该地址的服务端口为443。

    完成微信服务器配置验证

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

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

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

    服务器地址(URL)设置为外网可访问地址:http: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:http://dii5z7.xxx.cc地址,因此在微信公众号后台配置的地址就为该外网地址http: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就很棒了,可以用到深度学习算法。最后,如果感兴趣的话,欢迎测试一下这个搭建好的微信公众号机器人,服务开放一段时间,这个微信公众号机器人id是:wandy

    相关文章

      网友评论

        本文标题:不花一分钱快速搭建自己的微信公众号机器人

        本文链接:https://www.haomeiwen.com/subject/qsqoxhtx.html