Crazy Chatting with Chatbot::ELIZA
Chatbot::Eliza is a perl module that implements the famous ELIZA program created by Joseph Weizenbaum.
Chatbot::Eliza has a object type structure, which enables it to hook up with any interface. A very trivial command line implementation of the bot would take up only four lines of code and it goes like this :
This will initiate a new bot talking with you on the command line. Our bot, Jack in this case, would begin with the classic question: "Please tell me whats bothering you?". And you know what happens next. The mindless ramblings of the bot.
When I first saw this module, the only interesting use I found of it is to hook it up with my gmail account. Since then, a lot of my contacts have talked with either Ms. Jill or Mr. Jack.
Connecting to GTalk with Perl is a trivial issue. It requires a few perl modules such as
Use the CPAN commandline shell to install them. Enter the command line shell by typing
Now install the modules one by one using the command
And of course you also need the Chatbot::Eliza module.
With all the requisite modules installed, you are ready to connect your bot with GTalk.
Here's the listing I used for the Eliza-gmail-chatter:
You can have a laugh riot from your terminal watching your contact talking with the Chatbot. Make sure that you inform the contact later about who talked.
Chatbot::Eliza has a peculiar effect of making not wanting to talk with her ever again.
Try it for yourself.
Happy Chattin' Fun !
Chatbot::Eliza has a object type structure, which enables it to hook up with any interface. A very trivial command line implementation of the bot would take up only four lines of code and it goes like this :
#!/usr/bin/perl
use Chatbot::Eliza;
$bot = new Chatbot::Eliza("Jack", "");
$bot->command_interface();
This will initiate a new bot talking with you on the command line. Our bot, Jack in this case, would begin with the classic question: "Please tell me whats bothering you?". And you know what happens next. The mindless ramblings of the bot.
When I first saw this module, the only interesting use I found of it is to hook it up with my gmail account. Since then, a lot of my contacts have talked with either Ms. Jill or Mr. Jack.
Connecting to GTalk with Perl is a trivial issue. It requires a few perl modules such as
- IO::Socket::SSL (>=0.81 ?)
- XML::Stream
- Net::XMPP
- Authen::SASL
Use the CPAN commandline shell to install them. Enter the command line shell by typing
perl -MCPAN -e shell
Now install the modules one by one using the command
install module_name
And of course you also need the Chatbot::Eliza module.
With all the requisite modules installed, you are ready to connect your bot with GTalk.
Here's the listing I used for the Eliza-gmail-chatter:
#!/usr/bin/perl -w
use strict;
use Net::XMPP;
use Chatbot::Eliza;
my $bot = new Chatbot::Eliza("Jill","");
my $message;
my $body;
my $JID;
my $userid;
my $username = "xxxxxxxxxxxxxxxx"; #Supply your gmail username here
my $password = "xxxxxxxxxxxxxxxx"; #Supply your gmail password here
my $resource = "ChatBot";
my $hostname = 'talk.google.com';
my $port = 5222;
my $componentname = 'gmail.com';
my $connectiontype = 'tcpip';
my $tls = 1;
my $Connection = new Net::XMPP::Client();
$Connection->SetCallBacks(message=>\&doit);
my $status = $Connection->Connect(
hostname => $hostname, port => $port,
componentname => $componentname,
connectiontype => $connectiontype, tls => $tls);
if (!(defined($status))) {
print "ERROR: XMPP connection failed.\n";
print " ($!)\n";
exit(0);
}
# Change hostname
my $sid = $Connection->{SESSION}->{id};
$Connection->{STREAM}->{SIDS}->{$sid}->{hostname} = $componentname;
# Authenticate
my @result = $Connection->AuthSend(
username => $username, password => $password,
resource => $resource);
if ($result[0] ne "ok") {
print "ERROR: Authorization failed: $result[0] - $result[1]\n";
exit(0);
}
$Connection->PresenceSend();
$body = $bot->{initial}->[0];
$Connection->MessageSend(to=>"xxxxxxxxxxxx\@gmail.com",body=>$body); #Supply your contact's
#gmail id here
undef $userid;
while (1) {
$Connection->Process();
if (defined ($userid)) {
$Connection->MessageSend (to=>"xxxxxxxxxxx\@gmail.com", body=>$body); #Supply your contact's
#gmail id here
print "Me(as the chatbot) (to $userid): ", $body, "\n";
}
}
sub doit
{
my ($SID, $Mess) = @_;
$JID = new Net::XMPP::JID($Mess->GetFrom());
$userid = $JID->GetUserID();
print $userid, " : " , $Mess->GetBody(), "\n";
$body=$bot->transform($Mess->GetBody());
}
You can have a laugh riot from your terminal watching your contact talking with the Chatbot. Make sure that you inform the contact later about who talked.
Chatbot::Eliza has a peculiar effect of making not wanting to talk with her ever again.
Try it for yourself.
Happy Chattin' Fun !
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home