`

一个很好用的MSN机器人的Ruby实现

阅读更多
我一段时间一直在研究IM,xmpp,xmpp4r等内容,了解了一些相关的知识,在google code中搜到一个使用Ruby实现的MSN机器人,使用起来很是方便,不过没有使用xmpp,是使用socket实现的。

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


谁能指点一下。
分享到:
评论
19 楼 yawl 2009-08-17  
不要浪费时间折腾openfire的gateway,我都试过很烂。


用purple_ruby是最简单最稳定的: http://github.com/yong/purple_ruby/tree/master

MSN的话建议用msn-pecan插件,比pidgin自带的好。
18 楼 ayaga 2009-08-17  
我有一个java的msn机器人,可是能做什么业务呢?

以前做过卖快餐的业务,调查时大家说,虽然打电话经常打不通,但是还是感觉听到声音放心。
17 楼 Hooopo 2009-03-23  
meatloaf 写道
原来MSN机器人是这样的。
qichunren是否知道小I机器人的一些情况,最近客户有要求我们在系统上增加机器人功能。


小I...
http://www.iteye.com/topic/353165
16 楼 qichunren 2008-12-18  
meatloaf 写道
原来MSN机器人是这样的。
qichunren是否知道小I机器人的一些情况,最近客户有要求我们在系统上增加机器人功能。

没有 研究 过,另外,我介绍的这个其实也不怎么好。
15 楼 meatloaf 2008-12-17  
原来MSN机器人是这样的。
qichunren是否知道小I机器人的一些情况,最近客户有要求我们在系统上增加机器人功能。
14 楼 billgui 2008-12-16  
easyfinger 写道
不错,挺好用。我是用SciTE试的,中文有些问题,还没有研究,如果楼主已有方法,希望能指点。

SciTE的Global Options里设成code.page=65001(也就是UNICODE)试试看。
13 楼 sonyfe25cp 2008-10-20  
做xmpp可以连那个swissjabber。。
在那边注册帐号..
不需要自己做数据库了.
我用java实现过.
12 楼 rollingwoods 2008-10-19  
唉。。。
message要转为utf-8编码。
11 楼 qichunren 2008-09-27  
不知道你所说的中文问题是指什么?我没有用SciTE这个自带的编辑器.

我已经使用这个做了一个rails项目.

#...

欢迎大家访问测试。
10 楼 easyfinger 2008-09-27  
不错,挺好用。我是用SciTE试的,中文有些问题,还没有研究,如果楼主已有方法,希望能指点。
9 楼 qichunren 2008-09-26  
大家请加 ztservice@live.com 为好友。

我对它加了一个重要的功能,对机器人发送javaeye:news可以查看JavaEye当前的焦点新闻
8 楼 yehs220 2008-09-16  
刑天战士 写道
啊,就是这个破东西。MSN的破协议不好,得到一个buddy list要半分钟,大多数情况下你只需要得到email list就够了,人家非把所有信息推给你……

不会吧,我试过用它来邀请msn好友的,不用这么长时间的

日本人那个叫msnm,似乎没这个好,不过两个实现的msnp版本都不高,很多新功能没有
7 楼 qichunren 2008-09-16  
不好找啊,magicgod麻烦你给个地址啊
6 楼 magicgod 2008-09-16  
有个日本人开发了一个msn协议库,我用过,感觉还可以,基本上做个机器人没问题。
5 楼 刑天战士 2008-09-13  
啊,就是这个破东西。MSN的破协议不好,得到一个buddy list要半分钟,大多数情况下你只需要得到email list就够了,人家非把所有信息推给你……
4 楼 magicgod 2008-09-13  
如果一定要使用xmpp就要自己架设服务器,然后再安装msn gateway,例如 openfire就有这样的gateway
3 楼 liuqiang 2008-09-12  
<div class='quote_title'>qichunren 写道</div>
<div class='quote_div'>
<div class='quote_title'>liuqiang 写道</div>
<div class='quote_div'>你这个是客户端,需要IM服务器, 当然是openfire啦</div>
<br/>嗯,是的啊,我自己连自己的IM服务器,当然要连接到我自己架的openfire啊,我已经会使用这个了。 <br/>但是现在我是要连接到msn啊 <br/></div>
<p> </p>
<p> no , 连msn的服务器。你可以在客户端做个选项,选项有 本地 msn gtalk ……,选择后,切换不同的服务器地址。</p>
<p> </p>
<p>PS:我用flex做过类似的事,不知道适不适合你这种情况</p>
2 楼 qichunren 2008-09-12  
liuqiang 写道
你这个是客户端,需要IM服务器, 当然是openfire啦

嗯,是的啊,我自己连自己的IM服务器,当然要连接到我自己架的openfire啊,我已经会使用这个了。
但是现在我是要连接到msn啊
1 楼 liuqiang 2008-09-12  
你这个是客户端,需要IM服务器, 当然是openfire啦

相关推荐

    基于DotMSN示例做的一个MSN机器人

    标题中的“基于DotMSN示例做的一个MSN机器人”是指利用DotMSN库开发的一款应用程序,它模仿了MSN(Microsoft Messenger服务)的功能,可以实现与MSN用户的交互。DotMSN是一个开源的.NET框架,允许开发者通过C#、VB...

    机器人Ruby开发工具Artoo.zip

    Artoo 是一个小型的 Celluloid 机器人开发框架,提供简单强大的 DSL (domain-specific language) 来进行机器人开发和物理计算。你可以使用 Artoo 来连接(组合)多种不同的设备。 具体教程视频 如果你想要用 Go 语言...

    C#版MSN机器人,C#实现的msn客户端功能

    通过阅读和学习这些代码,开发者可以深入理解如何将C#与MSN协议集成,以及如何构建一个功能完备的即时通讯机器人。 总的来说,C#版的MSN机器人项目不仅展示了C#语言在桌面应用开发中的应用,还揭示了即时通讯协议的...

    MSN机器人程序的设计与实现.doc

    MSN机器人程序的设计与实现 MSN机器人程序的设计与实现是当前网络时代的热门话题。随着网络的兴起,越来越多的人依赖网络,因此聊天机器人应运而生。聊天机器人是以联系人的形式出现的,只要你添加相关机器人的账号...

    MSN机器人

    8. **用户体验**:一个好的MSN机器人不仅要功能强大,还需要有良好的用户体验。这包括友好的交互设计、快速的响应速度和人性化的对话风格。 9. **测试与调试**:在开发过程中,持续的测试和调试是非常重要的,以...

    C# msn机器人 界面挺漂亮

    【描述】"C# msn机器人C# msn机器人C# msn机器人" 重复的描述可能是强调项目的核心技术是基于C#语言来实现MSN机器人的功能。C#是一种面向对象的编程语言,由微软开发,广泛用于构建Windows应用程序、游戏、Web服务等...

    再来一个msn机器人

    【标题】"再来一个msn机器人"所涉及的知识点主要集中在构建一个MSN(Microsoft Messenger)聊天机器人的技术实现上。MSN机器人是一种能够自动与用户进行交互的程序,它可以通过MSN Messenger服务来模拟人类用户,...

    一个msn机器人原型,根据代码,稍做改动就可实现简单的只能msn机器人C#

    标题中的"一个msn机器人原型,根据代码,稍做改动就可实现简单的智能msn机器人C#"暗示了我们拥有一段基础代码,可以通过修改和扩展来创建一个具备简单智能功能的MSN机器人。C#是一种面向对象的编程语言,特别适合...

    使用DotMSN 20开发MSN机器人.doc

    DotMSN 是一个开源的MSN机器人开发包,允许开发者使用 C# 或其他 .NET 语言开发 MSN 机器人。下面是使用 DotMSN 2.0 开发 MSN 机器人的相关知识点: 1. DotMSN 简介 DotMSN 是一个开源的 MSN 机器人开发包,允许...

    MSN、QQ、GTalk机器人实现原理及代码.doc

    机器人是一个可以自动执行特定任务的程序,它可以模拟用户的行为,并与用户进行交互。在 本文中,我们将讨论 MSN 机器人,它可以模拟用户的行为,并与用户进行交互。 MSN 机器人的实现原理可以分为两部分:机器人的...

    案例分析:自动送货机器人的实现

    案例分析:自动送货机器人的实现; 案例分析:自动送货机器人的实现; 案例分析:自动送货机器人的实现; 案例分析:自动送货机器人的实现; 案例分析:自动送货机器人的实现; 案例分析:自动送货机器人的实现; ...

    C++实现一个快递分拣机器人.zip

    C++实现一个快递分拣机器人,本科毕业设计,实现一个快递分拣机器人。基于OpenCV图像识别技术实现快递信息的识别以及二维码的道路节点信息识别,9轴陀螺仪的姿态获取技术来作为底层小车的运动控制实现直走以及精确的...

    Ruby-DingTalkBot是阿里钉钉自定义机器人的Ruby库

    Ruby-DingTalkBot是针对阿里钉钉自定义机器人的一款Ruby编程语言实现的库,它使得开发者可以方便地在Ruby环境中与钉钉机器人进行交互,发送各种类型的消息到钉钉群或者个人工作台,从而实现自动化通知、信息推送等...

    MSN机器人源码 java源码

    MSN机器人源码是Java编程语言实现的一个项目,主要用于创建能够自动响应用户消息、执行特定任务的聊天机器人。这个源码提供了构建类似应用的基础框架,包括监听器机制和测试程序,使得开发者可以方便地进行功能扩展...

    mymsn.rar_MSN 机器人_msn机器人_机器人 问答 系统_监控系统_系统消息

    其中MSN信息发送部分,我在工余时间花了几个小时扩展了一下,做了一个MSN机器人,源代码是C#,含自动IP地址查询、简单自动问答等。 做这个没有什么目的,只是看看到底别人是怎样实现的,自己做了2个小时就实现了,...

    基于dotmsn的MSN机器人原代码

    总的来说,基于dotMSN的MSN机器人原代码提供了一个很好的起点,让开发者能够轻松地构建自己的即时通讯解决方案。通过学习和理解这些代码,我们可以进一步掌握vb.net编程以及.NET Framework下第三方库的使用,提升...

    编写自己的MSN机器人

    标题中的“编写自己的MSN机器人”指的是利用MSN的通信协议创建一个自动处理用户消息的应用程序,这种应用通常称为机器人,能够为MSN用户提供各种信息和服务。描述中提到,由于MSN的通信协议是公开的,开发者可以利用...

    msn中间件/msn机器人开发

    msn中间件,可用与msn机器人开发 快速搭建msn机器人平台

Global site tag (gtag.js) - Google Analytics