zoukankan      html  css  js  c++  java
  • 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}

    鸣谢

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

  • 相关阅读:
    hdu 5007 水题 (2014西安网赛A题)
    hdu 1698 线段树(成段替换 区间求和)
    poj 3468 线段树 成段增减 区间求和
    hdu 2795 公告板 (单点最值)
    UVaLive 6833 Miscalculation (表达式计算)
    UVaLive 6832 Bit String Reordering (模拟)
    CodeForces 124C Prime Permutation (数论+贪心)
    SPOJ BALNUM (数位DP)
    CodeForces 628D Magic Numbers (数位DP)
    POJ 3252 Round Numbers (数位DP)
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467808.html
Copyright © 2011-2022 走看看