再来一个msn机器人

找了半天库,总算从一个角度里找到一个日本公司开发的库算不错,msnm.rb

地址在这里:
[url]http://zerobase.jp/blog/entry-213.html[/url]

日文的,不过我猜了一下,下载了代码,是GPL协议的。附件里也可以下载。

一个大文件,不过也不算复杂,其他的是样例,代码很简单。

那么怎么整合进去呢,首先是引用

require "lib/msnm.rb"
.........
MSNMessenger = Net::InstantMessaging::MSNMessenger
.........


然后必须定义一个handler来处理消息接受和发送

class MSNSessionHandler < MSNMessenger::SessionHandler

def handle_message( peer_id, peer_nick, msg_header, msg_body )
if msg_header =~ /\r\nContent-Type: text\/plain/um
begin
queue_message(Robot.process_command(msg_body,peer_id))
rescue => detail
exception_log("process_command error:",detail)
end
end
end

def on_join( peer_id, peer_nick )
queue_message( 'hello ' + peer_id)
end

end

class MSNSessionHandlerFactory # Factory
def create( msnm, session )
MSNSessionHandler.new( msnm, session )
end
end


其中,Robot.process_command是真正处理命令的地方,处理方法跟xmpp一样。
handle_message( peer_id, peer_nick, msg_header, msg_body )这个函数很好理解,peer_id就是email, peer_nick就是呢称,msn_header是一个类似http的返回头,msg_body就是消息本身了。

再启动连接:


def self.connect_msn
ac=YAML.load_file("config/msn_account.yml")["default_account"]
@@msnm = MSNMessenger.new( ac["login_user"], ac["password"], MSNSessionHandlerFactory.new )
@@msnm.ns.synchronize
@@msnm.ns.online
end


帐号信息从msn_account.yml中取出来
[code]
default_account:
login_user: whereisit@live.com
password: password
[/code]

MSNMessenger就是缩短的定义,在前面定义过了。
MSNSessionHandlerFactory这个工厂也在前面定义过了,是真正处理消息的地方。

@@msnm.ns.online 这样就上线了。

非常简单。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值