Beside a lot of stuff to do for my daily and nightly work, I made a small and interesting discovery in the area of XMPP server. I planned to upgrade an old (and worst… unstable and unsecure) Jabber server. Finding the right XMPP server is not easy but I found the one created from scratch by Brad Fitzpatrick called djabberd. It's a very flexible XMPP framework written in (clean) Perl where everything is a plugin and supporting the XMPP standard quite well. If you are interested in my minimal configuration, just have a look (I'm using the standard Digest HTTP authentication but you are free to use the authentication approach that fits your needs). When digging in its operation, I found that modularity is real. I wrote a very small plugin in 2 minutes to query Wikipedia :
package DJabberd::Bot::Wikipedia; use strict; use warnings; use base 'DJabberd::Bot'; use WWW::Wikipedia; use DJabberd::Util qw(exml); our $logger = DJabberd::Log->get_logger(); sub finalize { my ($self) = @_; $self->{nodename} ||= "wikipedia"; $self->{bot} = WWW::Wikipedia->new; $self->SUPER::finalize(); } sub process_text { my ($self, $text, $from, $cb) = @_; my $entry = $self->{bot}->search($text); if ($entry) { $cb->reply($entry->text()); } else { $cb->reply("Entry not existing in Wikipedia."); } } 1;
If you want to test it, just send a Jabber/XMPP message to wikipedia@a.6f2.net with a word. Nifty and Easy…
Playing with that, I remembered the discussion with Vincent about the Infobot running on the IRC where you can ask for "factoid" and get a result. Wikipedia is full of "factoid" (in the good sense), I mean of sentence structured like "X is Y" and full of karma (X++ when is a recurring sentence ). So why not building a database of factoid from Wikipedia ? That could be useful for building pseudo-AI bot in instant messaging. Imagine a chat room in Jabber where the bot is playing is role when a large discussion is taking place and some clarification is required on a term. It's really funny we are going back to a more textual society with such new tools… (IRC is not dead ?). So a quite good news.