如何为LumaQQ添加聊天机器人

转载 2007年10月04日 11:04:00

LumaQQ没有提供功能十足的机器人给你用,所以,实现一个机器人需要靠你自己,LumaQQ只为你提供了一个简单的框架,本文就是向你介绍如何在LumaQQ中插入自己的机器人的。

第一步:实现自己的机器人

缺省情况下,LumaQQ提供了一个机器人,但是这个机器人基本上什么也没做,而且,缺省也是没有打开的。这个机器人的代码在edu.tsinghua.lumaqq.qq.robot.DummyRobot.java中,它纯粹是一个演示目的,如果你想看看效果,可以在LumaQQ的xml目录下面找到一个robots.xml文件,这个文件是机器人的配置文件,你可以看到里面我写了一些注释,你把那些注释去掉,保存,然后重启LumaQQ就可以了。使用机器人的方法是打开系统菜单,如果系统配置了至少一个机器人的话,系统菜单中会有一项“聊天机器人”,它的子菜单里面列出了所有存在的机器人,另外包含一个开始/停止菜单,我就不多说了,想来你应该会用。

为了实现一个聊天机器人,你必须实现edu.tsinghua.lumaqq.qq.robot.IRobot接口,这个接口目前相当简单,只包含了一个方法,如下:

public interface IRobot {
	/**
	 * 根据message得到一条回复消息
	 * 
	 * @param packet
	 * 		接受消息包
	 * @return
	 * 		回复的消息,返回null表示不响应这条消息
	 */
	public String getReply(ReceiveIMPacket packet);
}

而DummyRobot的实现则是:

public class DummyRobot implements IRobot {
	/* (non-Javadoc)
	 * @see edu.tsinghua.lumaqq.qq.robot.IRobot#getReply(edu.tsinghua.lumaqq.qq.packets.in.ReceiveIMPacket)
	 */
	public String getReply(ReceiveIMPacket packet) {
		/*
		 * Example:
		 * 1. 如何得到发送者QQ号
		 * packet.header.sender
		 * 
		 * 2. 如何得到消息内容
		 * packet.normalIM.messageBytes是消息的字节数组内容,如果需要得到字符串形式
		 * new String(packet.normalIM.messageBytes, QQ.QQ_CHARSET_DEFAULT)
		 * 对于消息格式,参见edu.tsinghua.lumaqq.qq.beans.NormalIM
		 * 
		 * 3. 如何判断这个消息是一个大消息中的分片?
		 * if(packet.normalIM.totalFragments > 1) {
		 * 		// 做你的处理,怎么处理,你决定,你可以把他缓存起来等待所有分片都收到为止
		 * }
		 * 
		 * 4. 如何知道这个消息的分片序号?
		 * packet.normalIM.fragmentSequence
		 * 
		 * 5. 如何知道这个消息的id?消息id也是用在分片情况时,同一个消息的分片,消息id相同
		 * packet.normalIM.messageId
		 * 
		 * 6. 如何知道一个消息是不是自动回复?
		 * if(packet.normalIM.replyType != QQ.QQ_IM_AUTO_REPLY) {
		 * 		// 做你想做的
		 * }
		 * 
		 * 更多内容和可用字段
		 * 参考edu.tsinghua.lumaqq.qq.beans.NormalIMHeader
		 * 参考edu.tsinghua.lumaqq.qq.beans.ReceiveIMHeader
		 */
		if(packet.normalIM.replyType != QQ.QQ_IM_AUTO_REPLY)
			return "Hello, I am robot";
		else
			return null;
	}
}

所以你也看到了,DummyRobot基本上啥也没干,就是老返回一句相同的话而已,不过它会判断一下是不是自动回复,如果是就不处理了,免得碰到自动回复的时候没完没了。你看到了,DummyRobot里面的有不少注释,应该对你的帮助很直接了。

第二步:部署机器人程序

添加一个机器人并不需要修改LumaQQ的源代码,你只要将你的机器人程序打包成jar文件,然后copy到LumaQQ的lib目录下就可以了,这样的好处自然就是你可以随便添加机器人,而且并不一定需要有LumaQQ的源代码,当然,你在编写你的机器人程序的时候,需要导入lumaqq.jar到工程中,不然找不到IRobot接口定义了。

第三步:修改机器人配置文件

机器人配置文件位于LumaQQ的xml目录下,这个文件自然是新增的,如果不存在这个文件的话,那么LumaQQ就会认为是没有机器人可用,系统菜单中也就不会有机器人的菜单项了。这个文件的格式也很简单,假设我要配置DummyRobot,那么就是下面这个样子:

<?xml version="1.0" encoding="UTF-8"?>
<Robots>
	<Robot>
		<Name>Dummy Robot</Name>
		<Implementation>edu.tsinghua.lumaqq.qq.robot.DummyRobot</Implementation>
	</Robot>
</Robots>

See? 仅仅就是配置一个机器人的名字,另外配置一下IRobot的实现类即可。如果你有多个机器人,你可以随便添加Robot元素

总结

添加一个机器人的工作就结束了,喜欢玩就玩吧。

 

Android聊天机器人

今天我们做个小项目,就是Android自动聊天机器人的开发。需要注意的点有:.图灵机器人API的解读和ListView多种item的实现 思考: 1.在ListView的每一项item中要放的数据...
  • kuangxiaoguo0123
  • kuangxiaoguo0123
  • 2015年09月19日 20:42
  • 1576

开源项目——小Q聊天机器人V1.0

小Q聊天机器人V1.0 http://blog.csdn.net/baiyuliang2013/article/details/51386281 小Q聊天机器人V1.1 http://blog.cs...
  • baiyuliang2013
  • baiyuliang2013
  • 2016年05月12日 22:42
  • 6401

浅析聊天机器人的技术和前景

最近利用业余时间,团队开发了一个简单的聊天机器人雏形(http://robot.ly863.com)。对聊天机器人的技术和前景有了简单的了解。大概的整理下,期望与大家分享和交流,能在这个领域内进一步的...
  • aofengdaxia
  • aofengdaxia
  • 2014年01月17日 19:25
  • 12851

如何做一款聊天机器人

如何做一款对话机器人 目录 前言什么是我认为的对话机器人语音助手如何去做一个像上述提到的那样的东西解释一下上述架构图如何将上述理论和实际结合呢?结论参考文献(帖子)  前言 以此开题...
  • searobbers_duck
  • searobbers_duck
  • 2016年07月28日 16:49
  • 3457

开源聊天机器人程序QRobot(QuickRobot)

之前写的,本来打算写成开源类库的,可是用C#移植的时候发现了很大的问题,主要是当机器人回答时执行效率太慢,而我又没有什么好的改进方法,所以我决定将此程序代码全部公开,完整代码下载请前往: VB.NET...
  • qinyuanpei
  • qinyuanpei
  • 2013年06月11日 10:27
  • 3599

手把手搭建一个聊天机器人(一)

这一个教程的目标是让大家能够用Python写一个能够和你聊天,能够帮你查询天气等等等的聊天机器人。当然啦,我们不会彻底制作一个,而是去调用人家的API。 既然是调人家的API,那么,我们就需要先熟悉一...
  • qtlyx
  • qtlyx
  • 2016年07月22日 16:24
  • 2219

google开源他的聊天机器人代码

chatbots 在2016年非常火热。Slack现在也有了一个chatbot; Facebook也发布了他的平台Messager;微软发布了Tay。现在Google改进了语言分析模块,纠正了过去的一...
  • xmsheji
  • xmsheji
  • 2016年11月29日 16:41
  • 5238

专属个人的聊天机器人的实现——图灵机器人

简介: 本篇为大家介绍使用图灵机器人api实现聊天机器人的方法,该api本身已经拥有了智能聊天的功能,但我们可以自定义知识库的方式简单实现专属个人的聊天机器人。下面就以java开发为例,编写一个简单...
  • hguisu
  • hguisu
  • 2014年08月12日 13:25
  • 32433

Java网络编程:简单聊天机器人实现案例

创建数据库和表,准备表数据首先创建一个数据库android 然后创建一个表dictionary,字段: id int receive varchar(100) response varchar...
  • LIZHONGPING00
  • LIZHONGPING00
  • 2017年03月22日 22:27
  • 748

聊天机器人对话数据

高质量闲聊对话数据。使用深度学习算法做闲聊系统已经半年了,回过头发现,大部分时间都在寻找优质训练。虽然网上有别人分享的闲聊数据,比如使用现有机器人(小黄鸡、小冰等)对话获得的数据(个人非常怀疑 数据的...
  • dada___
  • dada___
  • 2017年02月05日 17:51
  • 1258
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何为LumaQQ添加聊天机器人
举报原因:
原因补充:

(最多只允许输入30个字)