Net::AnyIM

Simon Wistow simon at thegestalt.org
Thu Jan 12 14:24:44 GMT 2006


It would useful to me to be able to have 1 program that could 
communicate to people on multiple IM networks with the minimum of fuss 
to the user.

At first I wondered if it might be possible using Jabber and its network
proxies but to be honest I don't know enough about that. 
                                                                             
Otherwise there's Net::ICQ, Net::Msmgr, Net::YMSG and, confusingly,          
Net::YahooMessenger all of which have a similar APIs. It shouldn't be        
too hard to write a generic Net::AnyIM wrapper that dispatches to the        
correct plugin based on the recipient.


I imagine something like this


	use Net::AnyIM;

	my $im = Net::AnyIM->new();

 	$im->login("simon", "msn","msnpassword"); 
	$im->login("muttley at jabber.org", "jabber", "jabberpassword");
	# etc etc


	$im->send("myfriend", "msn", "Hello!");
	$im->send("myotherfriend at jabber.org", "jabber", "Hello too!");


	while (my $reply = $im->receive()) {
		print "Reply from ".$reply->sender;
		my $message = $reply->message;

		$reply->reply(uc($message));

		# or equivalently
		$im->send($reply->sender, $reply->network, uc($message));
	}

It would be nice to do dispatching to plugin based on the hostname part
of a username but the problem is that you can run a jabber server on any
hostname.

Am I duplicating effort? Might this be useful for anyone else? Would it 
be better as a POE component?

Simon





More information about the london.pm mailing list