我一段时间一直在研究IM,xmpp,xmpp4r等内容,了解了一些相关的知识,在google code中搜到一个使用Ruby实现的MSN机器人,使用起来很是方便,不过没有使用xmpp,是使用socket实现的。
看一下这个msn机器人代码的实现,十分简单!
代码的地址:http://code.google.com/p/rubymsn/
另外,想问一问:如何通过xmpp4r连上msn。
谁能指点一下。
require 'msn'
#MSN帐号
email = "your-user@name.org"
#MSN密码
password = "yourpassword"
puts "Signing in... please wait."
# create a new MSN connection
msnsock = MSNConnection.new(email, password)
# connect events to their handlers
msnsock.signed_in = lambda { puts "Signed in" }
#当好友状态更改后所触发的事件
msnsock.buddy_update = lambda {|oldcontact, contact| puts "Updated #{contact.email} (status: #{oldcontact.status.name} -> #{contact.status.name})"}
#新会话,就是你当击头像弹出一个聊天窗口后
msnsock.new_chat_session = lambda {|tag, session|
puts "New chat session request. Tag: #{tag}"
# 如果有好友消息来,将触发
session.message_received = lambda {|sender, message|
puts sender + " says: " + message
# just for fun ;-) The possibilities are endless...
if message[0..3].upcase == "PING"
message = message.gsub(/i/, "o").gsub(/\?/, "!")
session.say message
else
session.say message.reverse
end
}
session.session_started = lambda {
puts "Session with tag '" + tag + "' started!"
}
session.participants_updated = lambda {
puts "Participants in '#{tag}': " + session.participants.list.to_s
}
# don't forget to start the chat session!
session.start
}
# start signing in!
msnsock.start
#感觉处理不好
while true
sleep 1
end
看一下这个msn机器人代码的实现,十分简单!
#启动MSN机器人
#创建MSN连接
msnsock = MSNConnection.new("ztgood@live.com", "123456")
#连接事件
msnsock.signed_in = lambda { puts "登录成功." }
#好友状态信息等更新事件
msnsock.buddy_update = lambda {|oldcontact, contact|
puts "更新 #{contact.email} (状态: #{oldcontact.status.name} -> #{contact.status.name})"
}
#新的会话
msnsock.new_chat_session = lambda {|tag, session|
puts "New chat session request. Tag: #{tag}"
# chat sessions have events too!接收到消息所做的回应
session.message_received = lambda {|sender, message|
puts sender + " 说: " + message
case message
when "help"
session.say %Q<你好!我是机器人ztservice,非常高兴为你服务。
你喜欢使用什么编程语言?
>
when "ruby"
session.say "哇,你也喜欢ruby语言啊?哈哈"
when "java"
session.say "你喜欢的语言是java"
else
session.say "不知道你在说什么?"
end
}
#新会话的开始,即用户点击MSN机器人的头像开始进行聊天的时候
session.session_started = lambda {
puts "Session with tag '" + tag + "' started!"
session.say %Q<你好!我是机器人ztservice,非常高兴为你服务。有什么可以帮你的吗?
输入help得到帮助
>
}
session.participants_updated = lambda {
puts "Participants in '#{tag}': " + session.participants.list.to_s
}
# don't forget to start the chat session!
session.start
}
# start signing in!
msnsock.start
while !conn.terminated
sleep 1
end
代码的地址:http://code.google.com/p/rubymsn/
另外,想问一问:如何通过xmpp4r连上msn。
require 'xmpp4r'
require 'xmpp4r/roster'
require 'xmpp4r/discovery'
require 'xmpp4r/caps'
require 'xmpp4r/tune'
client1 = Jabber::Client.new(Jabber::JID::new("ztgood@live.com")) #初始化一个实例
#client1.connect("127.0.0.1",5222)
#client1.connect("messenger.hotmail.com", 1863)
client1.connect()
client1.auth("4588121")
client1.send(Jabber::Presence.new(:chat,"ok"))
loop do
client1.add_message_callback do |m|
puts m.body
end
end
谁能指点一下。