• QQ 聊天机器人小薇 1.0.1 发布!


    本次发布主要解决了消息丢失(Api返回码[1202])问题,并改进了改进了一些细节。

    简介

    XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动:

    • 监听多个 QQ 群消息,发现有“感兴趣”的内容时通过图灵机器人或百度机器人进行智能回复
    • 监听到的 QQ 群消息可以配置推送到论坛某个接口上,以实现论坛弹幕或者动态聚合效果,请看实例
    • 在论坛代码中调用小薇进行 QQ 消息推送,比如论坛有新帖时自动推送到 QQ 群
    • 加小薇为好友后可通过暗号(key)让她群发消息

    总之,如果你需要一个连通 QQ 群和论坛的机器人,小薇是个不错的选择!

    作者

    小薇她爸 Daniel,妈 Vanessa,其他好心人可以在这里看到。

    体验

    • 加 QQ 群 13139268,然后发消息“小薇,你好!”
    • 加小薇(Q3082959578)和小薇的守护(Q316281008)为好友,然后将他们都邀请进你所在的群就可以开始调戏了
    • 在论坛的社群动态页面可看到由 QQ 群同步过来的消息

    FAQ

    为什么要单独做成一个 Web 服务,而不是一个依赖 jar?

    做成依赖库的话会随应用部署,从开发的角度是比较方便,但有个致命的问题是应用一般是部署在云端,而登录扫码是在本地,这样会造成 QQ 的异地登录,导致很多问题。

    所以需要将小薇部署在本地,保证用手机和小薇启动后 QQ 不出现异地登录。但是这也需要解决一个问题,即需要为小薇提供“内网穿透”的能力,比如使用 ngrok,具体可参考这里

    为什么会出现“发送失败,Api返回码[1202]”?

    这个问题是因为 QQ 服务器判断消息有问题时的返回,具体可关注这个 issue

    目前已经使用“小薇的守护”进行了改进,大幅度提升了消息发送的成功率。

    出现“Api返回码[103]”怎么破?

    先关闭小薇,然后将小薇、小薇的守护两个账号依次分别登录 w.qq.com 后退出,再启动小薇,这时扫码后应该就不会 103 了。

    为什么输出日志是乱码?

    是由于控制台编码造成,可以在将 src/main/resources/log4j.properties 中加入 log4j.appender.stdout.Encoding=UTF-8 来解决。

    发现问题该怎么反馈?

    启动

    1. 安装好 Java 1.7+、Maven 2+
    2. Clone 本项目,并在项目根目录上执行 mvn jetty:run

    这样小薇就启动了,然后根据输出提示进行扫码登录,一共需要扫两次:

    • 第一次扫码是小薇登录
    • 第二次扫码是小薇的守护登录

    小薇的守护只需要和小薇在同一个群就行(但不要用自己的,需要用一个不发消息的 QQ,不然消息监听会有问题)。

    配置

    配置文件主要是 src/main/resources/xiaov.properties:

    • api.key 定义了论坛调用小薇时用于验证的口令
    • turing.api & turing.key 定义了图灵机器人的 API 地址和口令
    • baidu.cookie 定义了百度机器人访问需要的 Cookie(登录百度,然后抓包)
    • qq.bot.type 定义了机器人类型,1 是使用图灵机器人,2 则使用百度机器人
    • qq.bot.name 定义了机器人的名字,这个主要是用于识别群消息是否“感兴趣”,比如对于群消息:“小薇,你吃过饭了吗?”包含了机器人的名字,机器人就对其进行处理
    • qq.bot.key 定义了管理 QQ(加了机器人为好友的 QQ)发过来的消息群发的口令,需要消息开头是这个口令,验证过后才会群发后面的消息内容
    • qq.bot.pushGroups 定义了群发的群名,用 , 分隔多个群;也可以配置成 * 推送所有群
    • bot.follow.keywords 定义了监听群消息时的关键词,碰到这些词就做处理,比如对于群消息:“如何能在 3 天内精通 Java 呢?”包含了关键词 Java,机器人就对其进行处理
    • bot.follow.keywordAnswer 定义了监听群消息时出现了关键词后的回复模版
    • forum.api & forum.key 定义了论坛 API 地址和口令,小薇会将所有监听到的消息通过该 API 转发到论坛

    API

    论坛推送 QQ 群

    • 功能:小薇提供给论坛调用的 HTTP 接口,用于将论坛的内容推送到 QQ 群
    • URL:/qq
    • Method:POST
    • Body:key={api.key}&msg={msgcontent}

    QQ 群推送论坛

    • 功能:由论坛提供给小薇调用的 HTTP 接口,用于将 QQ 群消息推送到论坛(这个接口是论坛实现的,这里是给出小薇的调用方式和参数)
    • URL:{forum.api}
    • Method:POST
    • Body:key={forum.key}&msg={msgcontent}&user={hexuserid}

    鸣谢

    小薇的诞生离不开以下开源项目/产品服务:

  • 相关阅读:
    第一次作业
    第0次作业—姚舜禹17-1
    第三周作业
    第二周作业
    第一周作业
    第零周作业
    第三周作业
    第二周作业
    第一周作业
    第0次作业
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467807.html
Copyright © 2020-2023  润新知