QQ机器人开放式服务框架 Version 0.1 Draft - 简介

QQ机器人简介

QQ早已经成为因特网上众所周知的即时通信软件,风靡于华人世界。QQ机器人是利用QQ通信协议开发的自动问答系统。机器人能够响应用户输入的内容。由于技术和环境的限制,还谈不上智能。只能简单的学习用户指定的问答内容,以及提供预先设置的服务。如下图所示,图中昵称为“萝卜头”的QQ是许多种QQ机器人中的一员。图中,用户通过 #add:<关键字>##<响应> 的格式传授机器人新的响应内容。

QQ机器人应答内容学习

机器人也可以根据预先设置的服务响应用户的输入。下图描绘的是一个机器人响应天气查询服务的实例。

QQ机器人服务消费

QQ机器人开放式服务框架

多样化的服务开启了用户消费信息新方式的大门。这也是制定QQ机器人开放式服务框架的目的。为了使的不同的服务开发者和服务供应商可以利用QQ机器人给用户提供各种有用的服务,并形成新的市场价值,开放式服务框架(以下简称服务框架)制定了标准的接口协议使得QQ机器人和服务供应者之间建立起相互通信的机制。用户可以利用QQ机器人透过服务框架搜索、使用这些原本可能并不很为人所知的服务,进一步提高服务的利用率。下文将简单介绍服务框架的运行机制。

QQ机器人使用服务框架可分2个过程:1. 服务学习过程;2. 服务消费过程。

服务学习

用户通过服务学习过程让机器人知道服务的接口以及服务的相关信息(比如指令和使用方式)。用户通过与QQ机器人的对话形式指定存储服务列表的网络地址(Service List URL)。下图描述了用户通过机器人查看服务供应者提供的所有服务的过程。

QQ机器人获取服务列表

QQ机器人获取服务列表地址后,通过该地址发送获取服务列表的请求(Service List Request)。服务供应方收到请求后,返回服务列表(Service List Response)。

QQ机器人将获取的信息告知用户,由用户选择QQ机器人所要学习的服务。然后,用户将相应的学习服务的链接地址(Service Portal URL)发送给QQ机器人。机器人根据此地址向服务供应方请求详细的服务信息。服务供应方收到请求后,以XML的形式将服务接口返回给QQ机器人。QQ机器人记录下服务的接口地址以及访问方式后告知用户完成学习过程。服务列表地址和服务学习地址可以从服务供应者处获取。服务学习过程亦可以由服务供应方来完成。

QQ机器人学习

之后用户只需查看、消费QQ机器人已经学会的服务即可。

QQ机器人显示服务列表

服务消费
用户可以通过指令查看QQ机器人所掌握的服务以及相关的指令信息。首先,用户通过服务入口指令进入相关服务的操作模式。这里,为了便于说明,我们假设用户输入 #天气 指令进入天气查询模式,并且进一步假设天气服务由第三方提供而并非QQ机器人预置的功能。在天气查询模式中,QQ机器人只会响应与此模式相关的特定的指令。用户可以通过 #help 指令获取这个模式的指令集和相关功能。其次,用户告知QQ机器人需要查询的城市,例如,澳门。QQ机器人接收到天气查询指令后,将用户的请求指令和请求参数根据所存储的远程服务接口(Remote Service API)和服务框架协议打包成HTTP请求信息并发送给服务运营方。服务运营方接收到请求后,在后台通过计算生成响应信息并返回给QQ机器人。接着,QQ机器人将服务方的响应内容改写成QQ消息返回给用户,诸如第一张图片中所示的澳门天气,完成一次服务消费的过程。用户可以通过不同的指令发起新的服务请求,过程与上述类似。最后,用户通过 #退出 指令离开天气查询模式。用户可以根据上文中所介绍的学习方式将机器人所学习的服务升级至不同的版本。也可以通过删除指令删除某项服务。但是只有服务的初始订阅者(Initial Subscriber)(即教会机器人学会此服务的用户)有权限更改或删除机器人所学习的服务接口信息(与QQ号匹配)。

QQ机器人消费服务

服务框架中定义的服务可分为公有服务(Public Service)和私有服务(Private Service)。公有服务不限制用户的访问权限。任何用户都可以通过QQ机器人访问公有服务。并且机器人只需要学习一次某项公有服务,所有用户就可以使用这项服务。相对的,私有服务只有指定用户或用户群(即QQ群或临时讨论组)可以访问。并且每个需要访问的用户都需要执行学习过程,使得此项私有服务对该用户开放。服务供应方可以利用私有服务限制用户访问权限,以此来达到授权、盈利的目的。在用户消费私有服务过程中,用户的QQ号或群号会发送至服务供应方进行授权验证。一旦验证失败,服务消费将会被终止。同样的,当用户需要QQ机器人删除某一项私有服务时,机器人只会删除该用户在机器人中的订阅记录,而不会影响其他用户使用相同的服务。只有当所有使用该服务的用户都撤消订阅该项服务时,这项服务才会被QQ机器人被真正的移除。而公有服务的初始订阅者一旦删除了该项服务,这项服务就会从QQ机器人中被完全移除。

当前版本的服务框架只支持文字和图片格式的服务响应内容。因此,服务供方处理用户请求所生成的消息中只包含纯文本内容和图片的链接。QQ机器人会根据响应中的图片链接下载相应的图片,并且合并入文字消息中返回给用户。由于QQ消息的限制,一次响应中所有包含的图片大小之和必须限制在1 M以内。

服务框架与服务开发者之间的通信协议参考:

  1. 显示服务列表协议
  2. 学习服务协议
  3. 使用服务协议

开放式服务协议的示例参考:Version 0.1 Draft - Demo

转载于:https://www.cnblogs.com/miniwork/archive/2013/01/01/2841527.html

注意:此框架现已基本稳定,文档会尽快完善。 该分支使用二维码登陆的协议参考了原名:SmartQQ-for-Raspberry-Pi(PiWebQQV2)这一项目,自行整合开发了基于SmartQQ的自动机器人框架。 登陆时采用QQ安全中心的二维码做为登陆条件, 不需要在程序里输入QQ号码及QQ密码。 旧版机器人仍有保留在old_QQBot.py中。 基本功能 群聊功能: 注:以下命令皆是在qq中发送,群聊命令发送到所在群中 群聊吐槽功能(tucao),类似于小黄鸡,在群中通过发送!learn {ha}{哈哈}语句,则机器人检测到发言中包含“ha”时将自动回复“哈哈”。!delete {ha}{哈哈}可以删除该内容。吐槽内容本地保存在data/tucao_save/中。 群聊复读功能(repeat),检测到群聊中连续两个回复内容相同,将自动复读该内容1次。 群聊关注功能(follow),使用命令!follow qq号可以使机器人复读此人所有发言(除命令外)使用命令!unfollow qq号解除关注。qq号处可使用"me"来快速关注与解除关注自己,例:!follow me 群聊唤出功能(callout),群聊中检测关键词智障机器人,若发言中包含该词,将自动回复干嘛(‘·д·),此功能一般用于检测机器人状态与调戏 群聊命令功能(command_0arg/command_1arg):使用![命令名]格式或![命令名] {参数1}执行命令,命令“吐槽列表”,使用命令!吐槽列表在群聊中激活,列出当前群的吐槽列表。 !删除关键字 {blablabla}:删除关键字“blablabla”下的所有吐槽内容 !吐槽列表:列出当前群的吐槽列表 现有无参数命令: 现有单参数命令: 私聊功能: 私聊唤出功能(callout),私聊中检测关键词智障机器人,若发言中包含该词,将自动回复干嘛(‘·д·),此功能一般用于检测机器人状态与调戏 私聊复读功能(repeat),检测到私聊中连续两个回复内容相同,将自动复读该内容1次。 临时对话功能: 唤出功能(callout),具体同私聊与群聊。   标签:smartqq  smartqqbot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值