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("[email protected]",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帐号哦,还要记得把对方的帐号改掉哦,不然就发消息给我啦!(需要改动部分,已经在文中加粗表示)。 |