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

这里演示一下QQ机器人通过开放式协议学习服务并服务用户的过程。演示分两部分,首先展示一个简单的服务,称为“计算器服务”。QQ机器人学会这项之后可以根据用户输入的不带参数的数学公式计算出结果。这个演示同时另外还展示了私有服务的特点。其次,我们将展示另一个稍稍复杂一点的服务,名为“公式器服务”(Formula Service)。QQ机器人学会公式器服务后,可以记住用户输入的带有参数的数学公式。然后根据不同的参数得出相应的结果。同一项公式的计算可以被重复执行而无需重复创建相同的公式。“公式器”是一项公有服务。

在此声明,开放式服务框架只规定QQ机器人与服务提供方之间的通信接口,而不对QQ机器人与用户之间的交互形式做任何形式的强制规定。因此,下文中的任何指令以及其格式只是出于演示为目的,在QQ机器人“萝卜特”中实现。QQ机器人开发者可以使用任意形式的操作指令。而服务提供方开发服务时,也不应对QQ机器人与用户之间的通信方式作出任何假设。

所有的演示性服务都是发布在Goolge Application Engine上,接口地址为:

  • 服务列表地址:http://osfdemo.appspot.com/calculation/list
  • QQ号授权地址:http://osfdemo.appspot.com/auth.jsp

计算器服务的学习和消费过程

首先,我们需要告知QQ机器人服务列表地址,来获取服务提供方的服务列表,从中选择需要机器人掌握的服务。如下图所示,用户输入 #list <服务列表URL> 形式的指令告知QQ机器人从何处获得服务列表。QQ机器人通过用户提供的URL从服务提供者处获用户有权限学习的取服务列表。如果用户的QQ号未获得提供方的授权,返回的服务列表只显示所有公有的服务。服务列表中的每项服务包括服务名,服务介绍,版本号,公有 / 私有描述以及最重要的,服务学习的端口地址。

我们制作了一个以演示为目的的QQ授权服务。在浏览器中键入QQ号授权页面的地址进入QQ授权服务页面。打开QQ号授权页面之后,用户可以输入QQ号,选择QQ号类型,选择“授权操作”,然后提交给后台服务器。值得注意到是,出于演示为目的,我们并未将QQ号存入GAE的Datastore,而是记录在一个静态对象中。一旦服务重启或者实例被重建,从技术上而言这个授权将会失效。因此一旦用户在实验过程发现之前授权过的QQ号失去了访问权限,只需要重新执行一遍授权操作即可。

授权操作成功后会返回如下提示:

一旦QQ号得到了授权,QQ用户将能通过指令过查看所有得到授权的服务。例如下图中的“计算器服务”。注意到此项服务描述中的频道值为私有频道。这意味着这项服务中所有的内容操作必须得到服务提供方的授权,包括在QQ机器人中订阅这项服务。

为了演示后面的操作中授权与未授权的区别,我们需要模拟解除对用户QQ号的授权。这项操作同样可以在QQ号授权页面中执行,如下图所示。之后的叙述中仍然需要不断地执行授权与解除授权操作来展示不同的用户权限对访问服务造成的区别。执行这两项过程的方式与此相同。因此后文将不再赘述。

撤消授权操作成功后会返回如下提示:

用户通过输入 #learn <服务学习URL> 格式的指令来教授QQ机器人学习一项新的服务。其中,服务学习URL显示在服务列表中每项服务的“端口地址”项中。如果用户不具备学习此项服务的权限。QQ机器人将不会学习此项服务,如下图所示。

得到授权后的服务学习操作将会显示如下结果:

之后,用户就可以让QQ机器人执行已经学会的服务了!

用户通过 #服务 或者 #service 指令让QQ机器人显示所有已经学会的服务。如下所示。其中,入口指令是命令机器人进入某项服务状态的指令。机器人一旦进入某项服务状态,就只接受此项服务定义的所有指令。

这里,我们通过 #计算器 指令来使得QQ机器人进入计算器服务状态如下图所示以。

QQ机器人一旦进入计算器服务状态,机器人会罗列出所有可执行的指令。这里,我们选择“计算”指令来做演示。用户输入 #计算 <公式> 格式的指令告诉QQ机器人需要计算的数学公式,例如:#计算 exp(52) * sin(3.1)。 如果用户此时失去了服务访问权限,服务提供方会拒绝提供服务并且返回如下所示的响应。

一旦用户得到了服务使用权限,QQ机器人将会显示计算结果。

最后,用户输入 #退出 指令命令机器人退出计算器服务模式,如下所示,返回常态模式。另外,在任何模式下,用户如果输入 #home 指令,QQ机器人也会返回至常态模式。

公式器服务的学习和消费过程

接下来,我们将展示另一项服务的学习和消费过程。由于其步骤与上一项服务相似,因此我们只做截图展示而不做过程的描述。由于这是一项公开的服务,用户无需得到服务供应方的授权。

需要特别注意的是,我们在服务的返回消息中嵌入了图片,以此来演示文本与图片混合的服务功能。另外由于我们假设两项服务来自同一家服务提供商,因此,这项服务学习的端口地址与前面展示的计算器服务存在于同一个服务列表中。

 

看,QQ机器人成功在消息中插入图片!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值