Net::Gadu - Interfejs do biblioteki libgadu.so dla protokołu komunikatora Gadu-Gadu
Wykorzystuje bibliotekę libgadu.so która jest częścią projektu EKG. Szczegółowe informacje na temat instalacji biblioteki Libgadu znajdziesz na stronie projektu EKG - http://ekg.chmurka.net/ .Do zbudowania pakietu Net::Gadu potrzebna jest zainstalowana w systemie biblioteka Libgadu.
Jeżeli biblioteka Libgadu została zainstalowana w niestandardowym miejscu w systemie należy wyedytowac plik Makefile.PL podając właściwą lokalizację.
http://www.cpan.org/modules/by-module/Net/Net-Gadu-1.9.tar.gz
$ svn co http://svn.hakore.com/netgadu/
Dostepne metody :
opcjonalny parametr : async => 1 lub 0 (komunikacja asynchroniczna lub nie) server => "91.197.13.211" (alternatywne IP serwera Gadu-Gadu. Nie ustawiaj jezeli nie wiesz co to oznacza)
Polaczenie z serwerem oraz logowanie do serwera. Pamietaj aby zaraz po polaczeniu wykonac $gg->notify();
parametry: $uin = numer Gadu-Gadu $password = haslo $initial_status = status ustawiany po polaczeniu (opcjonalny)
Wylogowanie z serwera i zakończenie sesji.
Wysyła wiadomość pod wskazany numer UIN.
Ustawia status na dostepny. Podobne funkcje : set_busy(), set_invisible(), set_not_available(), change_status().
parametry: $uin = numer Gadu-Gady który chcemy obserwować.
Możesz użyć tej funkcji w celu poinformowania serwera, że chcesz znać status danej osoby i otrzymywać zdarzenia zwiazane ze zmianą statusu. Od tego momentu zaczynają nadchodzić z serwera zdarzenia EVENT_NOTIFY, EVENT_NOTIFY60 zawsze gdy ktoś się pojawi oraz EVENT_STATUS,EVENT_STATUS60 gdy ktoś zmieni status (patrz opis get_event())
Możesz użyć tej funkcji w celu poinformowania serwera, że nie chcesz otrzymywać zdarzeń związanych ze zmianą statusu od tej osoby.
parametry: $uin = numer Gadu-Gadu
Zmiana statusu możliwa jest na jeden z:
$Net::Gadu::STATUS_NOT_AVAIL $Net::Gadu::STATUS_AVAIL $Net::Gadu::STATUS_BUSY $Net::Gadu::STATUS_INVISIBLE
parametry: $status = nowy status $descr = tekst opisu
Zmiana statusu z opisem możliwa na jeden z:
$Net::Gadu::STATUS_NOT_AVAIL_DESCR $Net::Gadu::STATUS_AVAIL_DESCR $Net::Gadu::STATUS_BUSY_DESCR $Net::Gadu::STATUS_INVISIBLE_DESCR
Wyszukiwanie, jesli parametr ma wartość "", czyli pustą wtedy to pole nie jest brane pod uwagę podczas wyszukiwania. Zwracana jest tablica ze szczegołowymi informacjami.
Odpowiedź należy odebrać po otrzymaniu zdarzenia $Net::Gadu::EVENT_SEARCH_REPLY. Przykładowe użycie oraz wynik znajdują się w przykładowym programie "ex/ex1" dostarczanym wraz ze źródłami.
Uwaga: $gender = "male" lub "female" lub "none") $active = 1 lub 0
Sprawdza czy zaszlo jakies zdarzenie (szczegolnie istotne przydatne przy polaczeniu asynchronicznym)
Zwraca informacje o zdarzeniu ktore mialo miejsce, zwracany jest hasz np : $e = $gg_event(); $e->{type} zawiera kod ostatniego zdarzenia $Net::Gadu::EVENT_MSG $e->{message} # tresc wiadomosci $e->{sender} # uin wysylajacego $e->{msgclass} # typ wiadomosci $Net::Gadu::EVENT_ACK # potwierdzenie wyslania wiadomosci $e->{recipient} $e->{status} $e->{seq} $Net::Gadu::EVENT_STATUS # zmiana statusu (wersja klienta Gadu-Gadu < 6.0) $e->{uin} $e->{status} $e->{descr} $Net::Gadu::EVENT_STATUS60 # zmiana statusu (wersja klienta Gadu-Gadu >= 6.0) $e->{uin} $e->{status} $e->{descr} $Net::Gadu::EVENT_NOTIFY # informacja o pojawieniu sie kogos (wersja klienta Gadu-Gadu < 6.0) $e->{uin} $e->{status} $Net::Gadu::EVENT_NOTIFY_DESCR # informajca o pojawieniu sie kogos, z opisem (wersja klienta Gadu-Gadu < 6.0) $e->{uin} $e->{status} $e->{descr} $Net::Gadu::EVENT_NOTIFY60 # informacja o pojawieniu sie kogos (wersja klienta Gadu-Gadu >= 6.0) $e->{uin} $e->{status} $e->{descr} $Net::Gadu::EVENT_SEARCH_REPLY $e->{results} Dostepne kody zdarzen : $Net::Gadu::EVENT_NONE $Net::Gadu::EVENT_MSG $Net::Gadu::EVENT_NOTIFY $Net::Gadu::EVENT_NOTIFY_DESCR $Net::Gadu::EVENT_NOTIFY60 $Net::Gadu::EVENT_STATUS $Net::Gadu::EVENT_STATUS60 $Net::Gadu::EVENT_ACK $Net::Gadu::EVENT_PONG $Net::Gadu::EVENT_CONN_FAILED $Net::Gadu::EVENT_CONN_SUCCESS $Net::Gadu::EVENT_DISCONNECT $Net::Gadu::EVENT_SEARCH_REPLY $Net::Gadu::$EVENT_XML_EVENT $Net::Gadu::$EVENT_WELCOME
#!/usr/bin/perl use Net::Gadu; use Data::Dumper; my $gg = new Net::Gadu(async => 1); $gg->login("1234567", "password", $Net::Gadu::STATUS_BUSY) or die "Login error\n"; #main loop. In this example, after successful login change status, send message and logout while (1) { while ($gg->check_event() == 1) { my $e = $gg->get_event(); my $type = $e->{type}; if ($type == $Net::Gadu::EVENT_CONN_FAILED) { die "Connection failed"; } if ($type == $Net::Gadu::EVENT_NOTIFY60) { print "EVENT_NOTIFY60 from ".$e->{uin}."\n" ; } if ($type == $Net::Gadu::EVENT_STATUS60) { print "EVENT_STATUS60 from ".$e->{uin}.", status ".$e->{status}."\n" ; } if ($type == $Net::Gadu::EVENT_DISCONNECT) { die "disconnect"; } if ($type == $Net::Gadu::EVENT_CONN_SUCCESS) { print "CONNECTED\n"; #it have to be sent after connect success $gg->notify(); # notify server that you want to receive status notifications $gg->add_notify("42112"); # Send THANKS to author $gg->send_message_chat("42112","dziekuje za Net::Gadu"); # SEARCH INIT $gg->search("","krzak","","","","male",0); } if ($type == $Net::Gadu::EVENT_MSG) { print $e->{message}." ".$e->{sender}."\n"; } if ($type == $Net::Gadu::EVENT_SEARCH_REPLY) { # SEARCH RESULT print Dumper($e->{results}); #$gg->logoff(); #exit(1); } if ($type == $Net::Gadu::EVENT_ACK) { print "EVENT_ACK\n"; } } }
Marcin Krzyżanowski, http://www.hakore.com/
Lesser General Public License v. 2
http://www.gadu-gadu.pl/ http://ekg.chmurka.net/ http://www.gnugadu.org/ http://www.hakore.com/
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in 'protokołu'. Assuming UTF-8
To install Net::Gadu, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::Gadu
CPAN shell
perl -MCPAN -e shell install Net::Gadu
For more information on module installation, please visit the detailed CPAN module installation guide.