Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > [ИЩУ] perl библиотека для работы с jabber


Автор: SharkyFLY 25.7.2009, 22:25
Подскажите какую-нибудь перловую библиотеку чтоб корректно работала с jabber.ru

функции нужны только самые основные: коннект, авторизация, отправка сообщений, приём сообщений.

Автор: DaemonSuw 26.7.2009, 09:30

http://search.cpan.org/~elmex/AnyEvent-XMPP-0.5/lib/AnyEvent/XMPP.pm

Автор: SharkyFLY 26.7.2009, 12:45
Цитата(DaemonSuw @ 26.7.2009,  09:30)
http://search.cpan.org/~elmex/AnyEvent-XMPP-0.5/lib/AnyEvent/XMPP.pm

Чё то не пойму, а как там принимать соообщения?

Автор: DaemonSuw 26.7.2009, 14:06
Скачав архив модуля со спана, можно найти папку samples - где есть примеры скриптов.
можно получить повесив на событие message_xml анонимную функцию:
Код


$con->reg_cb (message_xml => sub {
      my ($con, $node) = @_;
................
   });


Сообщение придет в в виде объекта AnyEvent::XMPP::Node...

или можно создать объект коннекта AnyEvent::XMPP::IM::Connection там есть тоже событие, но для удобства в анонимную функцию передается просто объект AnyEvent::XMPP::IM::Message...

Еще есть немного инфы в топике http://forum.vingrad.ru/forum/topic-255545/kw-jabber-bot/hl/xmpp/index.html

Модуль 100% работает с jabber.org проверял сам!

Автор: SharkyFLY 3.8.2009, 12:26
чё-то забил на эту тему...щас снова появилось время и меня всё также гложет вопрос: как же та принимать сообщения?
DaemonSuw, не совсем я понял твой пример...можно более подробно описать или готовый кусок кода что дальше я присланное сообщение мог парсить

Автор: DaemonSuw 3.8.2009, 12:50
Цитата

Скачав архив модуля со спана, можно найти папку samples - где есть примеры скриптов.


Код

#!/opt/perl/bin/perl
use strict;
use utf8;
use AnyEvent::Impl::Tk;
use AnyEvent;
use AnyEvent::XMPP::Client;

my $j = AnyEvent->condvar;
my $cl = AnyEvent::XMPP::Client->new (debug => 1);
$cl->add_account ('net_xmpp2@jabber.org', 'test');
$cl->reg_cb (
   session_ready => sub {
      my ($cl, $acc) = @_;
      print "session ready\n";
      $cl->send_message (
         "Hi! I'm too lazy to adjust examples!" => 'elmex@jabber.org', undef, 'chat'
      );
   },
   disconnect => sub {
      my ($cl, $acc, $h, $p, $reas) = @_;
      print "disconnect ($h:$p): $reas\n";
      $j->broadcast;
   },
   error => sub {
      my ($cl, $acc, $err) = @_;
      print "ERROR: " . $err->string . "\n";
   },
   message => sub {
      my ($cl, $acc, $msg) = @_;
      print "message from: " . $msg->from . ": " . $msg->any_body . "\n";
   }
);
$cl->start;
$j->wait;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)