如何训练创建一个聊天自动回复的微信机器人(一)

如何创建一个聊天自动回复的微信机器人(一)

这里,本来打算用一个微信号来做机器人的,但是机器人有几个缺点
1、如果任意一个人想使用机器人的话,那么必须添加机器人为好友才能使用测试
2、基于微信识别异常微信号的自动检测,机器人很有可能被封号o(╥﹏╥)o
3、现在想使用微信号做机器人的话,后端对接微信的方法大概有两种,一是使用网页版微信的API进行接入,不过现在网页版的微信已经封的差不多了,这种方法已经过时了,二是使用微信注入dll的方式来对接,不过这种方式也同样会受到微信的异常号自动检测,也会容易封号

所以这边使用微信公众号的后台开发自动回复来对接

开发配置:
1、python
2、一台服务器

1、首先注入一个微信公众号

进入微信公众号的开放平台,进入基本配置页面申请好开发者id和密码,并且开启你的服务器配置,配置好你的服务器后台、令牌和消息加密秘钥,后面会介绍如何配置你的服务器后台

注意,你的后端调试成功后才会成功开启服务器配置

在这里插入图片描述
在这里插入图片描述

2、服务器后台配置

我这边使用的阿里云的centos服务器,后端使用python,使用的是flask框架

服务器后台开启的端口一定要是80或者443,因为服务器配置只支持这两个端口,具体的开发模式也可以参考这个文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Getting_Started_Guide.html

后台配置开发的逻辑如下:

1. 通过请求验证token
2. 验证通过配置完成
3. 接收用户发送的消息
4. 使用训练好的对话机器人返回消息
5. 微信订阅号自动回复消息

centos服务器安装python的具体指南参考我的其他文章,这里放出我的一部分代码

# -*- coding:utf-8 -*-
from flask import Flask
from flask import request
import hashlib
import time
import xml.etree.ElementTree as ET

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello World!"

@app.route("/wechat", methods=["GET","POST"])
def weixin():
    if request.method == "GET":     # 判断请求方式是GET请求
        my_signature = request.args.get('signature')     # 获取携带的signature参数
        my_timestamp = request.args.get('timestamp')     # 获取携带的timestamp参数
        my_nonce = request.args.get('nonce')        # 获取携带的nonce参数
        my_echostr = request.args.get('echostr')         # 获取携带的echostr参数
        

        token = 'xxxxxxxxxxxx'     # 一定要跟刚刚填写的token一致

        li = [token, my_timestamp, my_nonce]
        li.sort()
        sha1 = hashlib.sha1()
        sha1.update("".join(li).encode('utf-8'))
        hashcode = sha1.hexdigest()

        # 加密后的字符串可与signature对比,标识该请求来源于微信
        
        if my_signature == hashcode:
            return my_echostr
        else:
            return ''
    else:
        # 解析xml
        xml = ET.fromstring(request.data)
        toUser = xml.find('ToUserName').text
        fromUser = xml.find('FromUserName').text
        msgType = xml.find("MsgType").text
        createTime = xml.find("CreateTime")
        # 判断类型并回复
        print(msgType)
        if msgType == "text":
            content = xml.find('Content').text
            print(content)
            return reply_text(fromUser, toUser, reply(fromUser, content))
        elif msgType == 'event':
            content = '关注'
            return reply_text(fromUser, toUser, reply(fromUser, content))
        else:
            return reply_text(fromUser, toUser, "我只懂文字")

def reply_text(to_user, from_user, content):
    """
    以文本类型的方式回复请求
    """
    return """
    <xml>
        <ToUserName><![CDATA[{}]]></ToUserName>
        <FromUserName><![CDATA[{}]]></FromUserName>
        <CreateTime>{}</CreateTime>
        <MsgType><![CDATA[text]]></MsgType>
        <Content><![CDATA[{}]]></Content>
    </xml>
    """.format(to_user, from_user, int(time.time() * 1000), content)


def reply(msg):
    '''
    使用对话机器人
    '''
    res = requests.get('http://api.qingyunke.com/api.php?key=free&appid=0&msg=' + msg)
    content = res.json()['content']
    content = content.replace('{br}', '\n')
    return content

if __name__ == "__main__":
    app.run(host='0.0.0.0',port=80,debug=True)

这边的对话机器人暂时使用青云客的免费聊天机器人,将在下一篇文章中讲到,后台配置完成后,可以先到微信公众平台的后台调试工具先去调试一下,具体网址在这:

如果想要实现一个简单的聊天回复机器人,可以在青云客上使用免费的聊天机器人,后续我将会用神经网络训练一个能自己成长的聊天机器人

https://mp.weixin.qq.com/debug/

测试通过返回成功的测试结果即为成功
在这里插入图片描述
在这里插入图片描述
如果测试失败,多半是后端出问题了,多调试调试后端即可,开启成功后,向微信机器人发送消息即可收到自动回复的消息在这里插入图片描述

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 好的,我可以为您提供有关使用 Python 编写微信机器人的一些基本信息。 首先,要使用 Python 编写微信机器人,您需要使用微信开发者工具包(wechaty),这是一个支持多种平台的开源聊天机器人框架。 以下是一些创建微信机器人的步骤: 1. 安装 Python 和 wechaty:您可以使用 pip 包管理器在命令行中安装 wechaty。 2. 配置微信账户:您需要通过扫描二维码登录微信账户。注意,使用机器人账户可能违反微信服务条款。 3. 编写机器人:使用 Python 编写机器人,可以使用 wechaty 提供的 API 接口。例如,您可以创建一个名为 MyBot 的机器人,并在其中实现 on_message() 方法来处理接收到的消息: ```python from wechaty import ( Contact, Message, Wechaty, ) async def on_message(msg: Message): if msg.text() == 'hello': await msg.say('Hello World!') bot = Wechaty() bot.on('message', on_message) bot.start() ``` 4. 运行机器人:通过运行上面的代码来启动机器人,并保持其运行状态。您还可以使用 Docker 容器来运行机器人。 请注意,使用机器人账户可能违反微信服务条款。因此,如果您要使用机器人账户,请确保遵守微信的规定,以避免被禁止使用微信账户。 ### 回答2: 使用 Python 编写一个微信机器人可以实现自动回复消息、发送群发消息、自动接收红包等功能。 首先,我们需要安装微信机器人库 wxpy。可以使用 pip 来安装 wxpy:pip install -U wxpy。 然后,我们需要创建一个 wxpy 机器人实例。可以使用如下代码创建一个机器人实例并登录: ```python from wxpy import * # 创建机器人实例 bot = Bot() # 进入机器人监听状态 bot.join() ``` 上述代码会生成一个机器人实例并登录到微信。 接下来,我们可以为我们的机器人添加自动回复功能。可以使用如下代码实现自动回复功能: ```python from wxpy import * # 创建机器人实例 bot = Bot() # 使用机器人示例自动回复消息 @bot.register() def auto_reply(msg): return '您好,我是机器人小助手,有什么可以帮到您的吗?' # 进入机器人监听状态 bot.join() ``` 上述代码中的 `auto_reply` 函数是一个装饰器,用于接收来自任何用户的消息并自动回复。 除了自动回复,我们还可以实现发送群发消息的功能。可以使用如下代码实现发送消息到指定的群: ```python from wxpy import * # 创建机器人实例 bot = Bot() # 发送群发消息 group = bot.groups().search('群聊名称')[0] group.send('大家好,我是机器人小助手。') # 进入机器人监听状态 bot.join() ``` 上述代码中通过 `group.send` 方法实现向指定群发送消息的功能。 此外,我们还可以使用如下代码实现自动接收红包的功能: ```python from wxpy import * # 创建机器人实例 bot = Bot() # 自动接收红包 @bot.register() def auto_accept_red_packet(msg): if '红包' in msg.text: msg.receive() # 进入机器人监听状态 bot.join() ``` 上述代码中的 `auto_accept_red_packet` 函数是一个装饰器,用于自动接收包含“红包”关键字的消息。 以上是使用 Python 编写微信机器人的一些基本功能,你可以根据自己的需求进行扩展和定制。 ### 回答3: 使用Python编写一个微信机器人可以通过使用itchat库来实现。itchat是一个基于Python微信个人号接口,可以实现微信登录、消息获取和发送。 首先,我们需要安装itchat库。在命令行中使用如下命令进行安装: pip install itchat 接下来,我们可以使用以下代码编写一个简单的微信机器人: ```python import itchat # 登录微信 itchat.auto_login() # 监听好友消息 @itchat.msg_register(itchat.content.TEXT) def reply_friend(msg): content = msg['Text'] # 获取收到的消息内容 # 判断消息内容,进行回复 if content == '你好': return '你好,我是微信机器人!' elif content == '时间': import time return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) # 返回当前时间 # 开始监听消息,运行机器人 itchat.run() ``` 上述代码首先使用itchat.auto_login()进行微信登录,然后通过@itchat.msg_register装饰器注册回调函数reply_friend,该函数用于监听和回复好友消息。函数内部通过msg参数获取收到的消息内容,然后根据消息内容进行判断,并返回相应的回复。 在上述代码中,如果收到消息内容为"你好",则回复"你好,我是微信机器人!";如果收到消息内容为"时间",则回复当前时间。 最后,使用itchat.run()开始监听消息,即可运行微信机器人。 通过以上代码,我们可以实现一个简单的微信机器人,当收到指定的消息时可以给出相应的回复。当然,我们还可以根据需求对机器人进行更加复杂的功能扩展,如获取天气、翻译等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码王吴彦祖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值