以 AnyEvent::XMPP 寫 XMPP (Jabber) 機器人

作者:   發佈於:  

AnyEvent::XMPP 的實做完整程度實在太 高了,大家快去按個讚。

基本上要使用的是 AnyEvent::XMPP::Client 這個 class,可以用來處理多重帳號登入。 以下是個回聲機器人範例,你跟他說甚麼,他就回你甚麼。同時也處理了自動接受加好友。

帳號部份是以 Google Talk 的帳號為例,jabber server 與 jid domain 不同,需要另行指 定,其他 Jabber 帳號設定不盡相同。


use v5.14;
use AnyEvent;
use AnyEvent::XMPP::Client;

my $cl = AnyEvent::XMPP::Client->new();

$cl->add_account(
    'gtalk-account@gmail.com', # account
    'flyingpigfloordance',     # password
    'talk.google.com',         # server
    5223,                      # port
    # other weird args
    { domain => 'gmail.com', old_style_ssl => 1 } 
);

$cl->reg_cb(
    message => sub {
        my ($client, $account, $message) = @_;

        my $r = $message->make_reply();

        $r->add_body("ECHO: $message");

        $client->send_message($r);
    },
    contact_request_subscribe => sub {
        my ($client, $account, $roster, $contact, $message) = @_;
        $contact->send_subscribed;
    }
);

$cl->start;

AE::cv->recv;

基本上這樣就可以動了,這,真是太容易了。