为了把状态变更发为博客文章,需要知道好友状态。
监视了一下来往的xml,选中了presence回调方法。
监视很简单:
注意最后要返回false,这样就表示允许后面的回调处理,比如message, presence之类的。
加入presence的回调
回调的参数非常简单就是一个对象presence, 是这个类:Jabber::Presence。具体参见:[url]http://home.gna.org/xmpp4r/rdoc/classes/Jabber/Presence.html[/url]
里面的status属性就是好友发来的状态文本。
当然要处理的过程中要比较一下是否与原来的状态不同,另外忽略掉空状态,有些客户端是不发送状态的。
使用xmpp4r,已经在gtalk和openfire里试过了,可以正常使用。
监视了一下来往的xml,选中了presence回调方法。
监视很简单:
j.add_xml_callback do |x|
debug_log("xml: #{x}")
false
end
注意最后要返回false,这样就表示允许后面的回调处理,比如message, presence之类的。
加入presence的回调
j.add_presence_callback do |presence|
begin
#Robot.debug_log("presence: #{presence}")
if presence!=nil && presence.from!=nil && presence.status!=nil && !presence.status.empty?
email=Robot.split_email(presence.from)
process_status(presence.status,email)
end
rescue => detail
Robot.exception_log("process status error:",detail)
end
end
回调的参数非常简单就是一个对象presence, 是这个类:Jabber::Presence。具体参见:[url]http://home.gna.org/xmpp4r/rdoc/classes/Jabber/Presence.html[/url]
里面的status属性就是好友发来的状态文本。
当然要处理的过程中要比较一下是否与原来的状态不同,另外忽略掉空状态,有些客户端是不发送状态的。
使用xmpp4r,已经在gtalk和openfire里试过了,可以正常使用。