2.5 Status (presence)
W rozdziale tym poruszymy kwestie statusu dostępności danej osoby, czyli informacje o stanie kontaktu. Pakiety statusu możemy podzielić na trzy grupy, co ułatwi nam zrozumienie ich funkcjonalności i działania.
Tlen daje nam 7 stanów prezentacji statusu kontaktów, z czego 2 pochodzą z grupy statusów specjalnych, do których zaliczamy także zarządzanie subskrypcją, ale o tym w następnym rozdziale.
2.5.1 Stany podstawowe
Stany podstawowe prezentują status dostępności danego kontaktu.
Wyróżniamy 5 takich stanów:
typ | opis |
available | dostępny |
chat | porozmawiajmy |
dnd | jestem zajęty |
away | zaraz wracam |
xa | wrócę później |
Konstrukcja pakietu służącego do ustawiania, bądź zmiany naszego stanu:
<presence>
<show>available</show>
</presence>
Zawartość tagu show
to typ stanu, jeden z 5, które wyżej przedstawiono w tabelce.
2.5.2 Stany dodatkowe (specjalne)
Dodatkowe 2 stany, o których wspomniałem w wstępie to invisible
oraz unavailable
.
Resztę statusów specjalnych, służących do zarządzania subskrypcją opisano w następnym rozdziale.
typ | opis |
invisible | niewidoczny |
unavailable | niedostepny |
Po ustawieniu stanu invisible
, druga strona otrzyma zwykłą informacje o tym ze jesteśmy niedostępni, czyli unavailable
. Dzięki temu praktycznie niemożliwe jest wykrycie osób ukrywających się pod tym stanem.
Pakiety specjalne zbudowane są następująco:
<presence type="invisible"/>
Parametr type
określa rodzaj stanu specjalnego.
Warto zaznaczyć, ze wysłanie statusu o niedostępności jest równoznaczne z rozłączeniem się i zamknięciem aktywnej sesji.
2.5.3 Status opisowy
Status opisowy jest dodatkowym rozszerzeniem opisanych wyżej 7 stanów, który umożliwia dołączenie do stanu krótkiej wiadomości - opisu.
Budowa statusu opisowego jest prosta, należy dodać do wysyłanego pakietu presence
dodatkowy tag status
z opisem:
<presence>
<show>dnd</show>
<status>Opisuje+protok%F3%B3+Tlen.pl...</status>
</presence>
Powyższy pakiet ustawi stan "Jestem zajęty" z opisem "Opisuje protokół Tlen.pl...".
Zawartość taga status powinna być kodowana algorytem urlencode.
2.5.4 Powiadomienie o zmianie stanu
Żeby otrzymywać informacje o zmianie stanu jakiegoś kontaktu, musimy posiadać subskrypcję (autoryzacje) od danego kontaktu. O subskrypcji mówimy w następnym rozdziale, dlatego tu nie będziemy się w to zagłębiać.
Tak, więc, gdy któraś osoba z naszego rostera (listy kontaktów) zmieni swój stan zostaniemy o tym poinformowani.
Otrzymamy wtedy następujący pakiet:
<presence from="malcom@tlen.pl">
<show>dnd</show>
<status>Opisuje+protok%F3%B3+Tlen.pl...</status>
</presence>
Jak widzimy jego budowa jest identyczna jak pakietu służącego do ustawiania i zmiany stanu, wzbogaconego o atrybut from
, określający osobę, która dokonała zmiany stanu.