基于smack3.0.4的GoogleTalk机器人
来源:互联网 发布:手机游戏制作软件 编辑:程序博客网 时间:2024/06/12 01:35
GoogleTalk使用的是Jabber/XMPP 协议。
参考资料:
smack文档:http://www.igniterealtime.org/builds/smack/docs/latest/documentation/
smack下载:http://www.igniterealtime.org/downloads/index.jsp#smack
(1)http://www.douban.com/group/topic/3351341/(用Eclipse RCP & ECF 实现GoogleTalk)
在smack2.0中,有一个org.jivesoftware.smack.GoogleTalkConnection类,并且可以很方便 的用这个类对GoogleTalk进行操作。smack3.0版本改动很大,GoogleTalkConnection类也失踪了。
在这里写一个简单的基于smack3.0的GoogleTalk机器人的例子,希望对大家有所帮助。
机器人描述:
刚开始会告诉你"早上好!",之后你说的每一句话它会重复一遍。但是当你说"help"时,它会说:“您好,感谢使用GoogleTalk机器人,我的制 作者是Joy!”,当你说"bye"时,它会对你说"再见,祝你好运!",但是说完再见后它并没有下线,因为我在项目的应用中是要求机器人一直在线的。
文件:GoogleTalkTest.java
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.packet.Message;
public class GoogleTalkTest {
public static void main(String[] args){
try {
XMPPConnection con = new XMPPConnection(
new ConnectionConfiguration("talk.google.com", 5222, "gmail.com"));
con.connect();
con.login("username", "password");
ChatManager chatManger = con.getChatManager();
Chat chat = chatManger.createChat("xxx@gmail.com",new GoogleTalkMessageListener());
chat.sendMessage("早上好!");
while (true) {
}
// con.disconnect();
} catch (XMPPException e) {
System.out.println(e.getMessage());
}
}
}
class GoogleTalkMessageListener implements MessageListener{
public void processMessage(Chat chat, Message message) {
String msg=message.getBody();
if(msg.equals("help")){
try {
chat.sendMessage("您好,感谢使用GoogleTalk机器人,我的制作者是Joy!");
} catch (XMPPException e) {
e.printStackTrace();
}
}
else if(msg.equals("bye")){
try {
chat.sendMessage("再见,祝你好运!");
} catch (XMPPException e) {
e.printStackTrace();
}
} else
try {
chat.sendMessage(msg);
} catch (XMPPException e) {
e.printStackTrace();
}
}
}
代码已经过测试,确保可以运行,但是运行前要把username改成你的GoogleTalk帐号哦,还要记得把对方的帐号改掉哦,不然就发消息给我啦!(需要改动部分,已经在文中加粗表示)。
参考资料:
smack文档:http://www.igniterealtime.org/builds/smack/docs/latest/documentation/
smack下载:http://www.igniterealtime.org/downloads/index.jsp#smack
(1)http://www.douban.com/group/topic/3351341/(用Eclipse RCP & ECF 实现GoogleTalk)
在smack2.0中,有一个org.jivesoftware.smack.GoogleTalkConnection类,并且可以很方便 的用这个类对GoogleTalk进行操作。smack3.0版本改动很大,GoogleTalkConnection类也失踪了。
在这里写一个简单的基于smack3.0的GoogleTalk机器人的例子,希望对大家有所帮助。
机器人描述:
刚开始会告诉你"早上好!",之后你说的每一句话它会重复一遍。但是当你说"help"时,它会说:“您好,感谢使用GoogleTalk机器人,我的制 作者是Joy!”,当你说"bye"时,它会对你说"再见,祝你好运!",但是说完再见后它并没有下线,因为我在项目的应用中是要求机器人一直在线的。
文件:GoogleTalkTest.java
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.packet.Message;
public class GoogleTalkTest {
public static void main(String[] args){
try {
XMPPConnection con = new XMPPConnection(
new ConnectionConfiguration("talk.google.com", 5222, "gmail.com"));
con.connect();
con.login("username", "password");
ChatManager chatManger = con.getChatManager();
Chat chat = chatManger.createChat("xxx@gmail.com",new GoogleTalkMessageListener());
chat.sendMessage("早上好!");
while (true) {
}
// con.disconnect();
} catch (XMPPException e) {
System.out.println(e.getMessage());
}
}
}
class GoogleTalkMessageListener implements MessageListener{
public void processMessage(Chat chat, Message message) {
String msg=message.getBody();
if(msg.equals("help")){
try {
chat.sendMessage("您好,感谢使用GoogleTalk机器人,我的制作者是Joy!");
} catch (XMPPException e) {
e.printStackTrace();
}
}
else if(msg.equals("bye")){
try {
chat.sendMessage("再见,祝你好运!");
} catch (XMPPException e) {
e.printStackTrace();
}
} else
try {
chat.sendMessage(msg);
} catch (XMPPException e) {
e.printStackTrace();
}
}
}
代码已经过测试,确保可以运行,但是运行前要把username改成你的GoogleTalk帐号哦,还要记得把对方的帐号改掉哦,不然就发消息给我啦!(需要改动部分,已经在文中加粗表示)。
- 基于smack3.0.4的GoogleTalk机器人
- 基于Smack3.0.4+ Openfire3.10.2开发之Android 客户端之一
- Smack3.0.4文档简介
- 基于Smack3.0.4+ Openfire3.10.2下学习开发IM(三)用户基础信息(VCard)
- 基于Smack3.0.4+ Openfire3.10.2开发之Android 客户端之二
- 基于Smack3.0.4+ Openfire3.10.2开发之Android 客户端之三
- 基于Smack3.0.4+ Openfire3.10.2开发之Android 客户端之四
- 基于Smack3.0.4+ Openfire3.10.2下学习开发IM(二)用户分组信息(Roster、RosterGroup和RosterEntry)
- 认识smack3.0.4基本对象 - Presence
- 基于ROS的qbo机器人
- 机器人技术(1)基于ROS的机器人底盘AtdRobot
- 基于Smack3.0.4+ Openfire3.10.2下学习开发IM(一)实现用户登录、修改密码、删除指定用户和注册新用户等
- 基于Smack3.0.4+ Openfire3.10.2下学习开发IM(五)聊天室操作:创建聊天室、成员添加聊天室、查询聊天室成员和监听聊天室
- 基于检索的聊天机器人的实现
- 基于单片机的水下机器人定位系统
- 基于DSP的机器人视觉伺服系统研究
- 基于视觉的移动机器人定位
- 基于fpga+dsp的机器人控制-总纲
- Windows XP/2003搜索专家
- 如何不用组件实现Ajax效果
- 什么是A记录,CNAME,MX记录?
- 计算机名言-摘自译言网
- android的版本“趣名”
- 基于smack3.0.4的GoogleTalk机器人
- openfire+spark相关的中文资料
- Singleton Pattern
- atol 函数
- .NET批量大数据插入性能分析及比较(3.使用事务)
- Spark源代码编译生成全攻略
- struts2中出现input类型的视图的返回的原因:
- Flex视频截图并通过WebService(C#)保存
- Linux0.11内核--进程的调度(运行态(就绪态)和睡眠态之间的转换)