Požadavek get-messages
Účel a dopady
Vrátí zprávy zaslané přihlášenému uživateli. Ve výchozím režimu jde o dosud nepotvrzené/čekající zprávy z paměti serveru (s volitelným čekáním na nové doručení); s atributem confirmed="true" jde naopak o dotaz na již potvrzené (historické) zprávy uložené v databázi, filtrovatelné podle typu a data. Ve výchozím režimu může požadavek nastavit i stav avoid-wait, který ukončí všechna právě probíhající čekání daného uživatele napříč jeho session.
Dostupnost, kontext, oprávnění apod.
- Dostupné každému přihlášenému uživateli pro jeho vlastní zprávy; žádná zvláštní role není vyžadována.
- Vyžaduje, stejně jako většina požadavků, dokončenou (ne „justlogin“) session – při rozjednaném dvoufázovém přihlášení (SMS, viz login) je i tento požadavek zamítnut chybou „Vase prihlaseni nebylo dokonceno“. Na rozdíl od staré dokumentace tedy nejde o požadavek zcela nezávislý na stavu přihlášení – nevyžaduje jen to, aby v rámci nové session předcházel explicitní
<login>.
XML požadavek (syntax + popis)
<request>
<get-messages
confirmed="{bool}"
already="{bool}"
wait="{number}"
avoid-wait="{bool}"
type="{number}"
from="{datetime}"
to="{datetime}"
/>
</request>
Parametry a pravidla (atributy, potomci)
Požadavek nemá potomky. Chování se zásadně liší podle atributu confirmed.
Režim čekajících zpráv (confirmed neuveden nebo různý od "true")
already- Opětovné získání - Zahrne do odpovědi i zprávy, které již byly jednou doručeny, ale dosud nejsou potvrzené. Jediná hodnota, která toto chování vypne, je přesně"false"– cokoli jiného (včetně neuvedení atributu) se chová jakotrue. (typ:bool; nepovinný; výchozí:true)wait- Čekání na zprávu (sekundy) - Je-li atribut uveden, požadavek čeká na doručení nové zprávy. Hodnota0znamená čekat neomezeně dlouho; jinak jde o horní limit čekání v sekundách. Není-li atribut uveden vůbec, server nečeká a odpověď vrátí okamžitě. (typ:number; nepovinný)avoid-wait- Zákaz čekání -"true"okamžitě ukončí všechna aktuálně probíhající čekání (i z jiných session) téhož uživatele; jiná hodnota (i neuvedení atributu) tuto akci neprovede. Následné voláníget-messagesse řídí vlastním atributemavoid-wait(chová se opět normálně). (typ:bool; nepovinný; výchozí:false)
Režim potvrzených zpráv (confirmed="true")
type- Filtr typu - Omezí výsledek na zprávy s tímto číselným typem. Neplatná/chybějící hodnota filtr vynechá. (typ:number; nepovinný)from- Filtr od data - Omezí výsledek na zprávy odeslané od tohoto data/času. Neplatná/chybějící hodnota filtr vynechá. (typ:datetime; nepovinný)to- Filtr do data - Je-li atribut uveden, server jako hodnotu filtru ve skutečnosti znovu použije atributtype, nikoli hodnotuto. Filtr „do data“ je tak za současného stavu kódu prakticky nefunkční – buď se vůbec nenastaví, nebo se pokusí interpretovat obsahtypejako datum/čas. (typ:datetime; nepovinný; chování viz poznámka)already,wait,avoid-waitse v tomto režimu nečtou a nemají žádný efekt.
Příklady požadavku
(Zatím bez ověřeného příkladu.)
Zpracování a vedlejší účinky
- Režim čekajících zpráv: je-li
waituveden, server periodicky kontroluje frontu zpráv uživatele (a připojení klienta) až do vypršení limitu, doručení nové zprávy, nebo zásahuavoid-wait; není-liwaituveden, vrátí okamžitě aktuální stav fronty. Vrácené zprávy se interně označí časem příštího možného opětovného doručení, takže se – nejsou-li potvrzeny (typicky požadavkem confirm-message) – po určité době znovu nabídnou volání salready=true. - Režim potvrzených zpráv: server zavolá uloženou proceduru pro potvrzené zprávy (parametry
type/from/to, viz omezení výše) a vrátí odpovídající uzlymessagepřímo z databáze; nic se přitom neoznačuje k opětovnému doručení. - Zobrazované jméno odesílatele (
from-name) se dohledává z aktuálního registru uživatelů, ale jen v režimu potvrzených zpráv – v režimu čekajících zpráv se tento vyhledávací krok neprovede, takžefrom-nameje tam vždy prázdné. - Časové údaje
submited_*/delivered_*se vrací zdvojeně – jednou v UTC (..._utc_dt/..._utc_tm), jednou přepočtené do lokálního času serveru (..._dt/..._tm), obojí s milisekundovou přesností (HH:MM:SS:mmm).
XML odpověď (syntax + popis)
<response>
<messages>
<message
id="{number}"
from="{number}"
from-name="{string}"
submited_utc_dt="{date}"
submited_utc_tm="{time}"
submited_dt="{date}"
submited_tm="{time}"
type="{number}"
avoid-join="{bool}"
already="{bool}"
delivered_utc_dt="{date}"
delivered_utc_tm="{time}"
delivered_dt="{date}"
delivered_tm="{time}"
msg="{string}"
size="{number}"
>
{string}
</message> *
<error ... /> *
</messages>
</response>
Parametry a pravidla (atributy, potomci) – odpověď
Odpověď messages sama nemá žádné atributy (potvrzuje se stará dokumentace). Obsahuje nula a více uzlů message a – jen v režimu confirmed="true" při selhání databáze – i vnořené diagnostické uzly error, viz „Chyby a reakce“.
id- Identifikátor zprávy - Jedinečné číslo zprávy. (typ:number)from- Odesílatel - Číslo (id) uživatele, který zprávu odeslal. (typ:number)from-name- Jméno odesílatele - Zobrazované jméno odesílatele. V režimu čekajících zpráv vždy prázdné (viz „Zpracování“); v režimu potvrzených zpráv vyplněné, je-li odesílatel dohledatelný. (typ:string)submited_utc_dt/submited_utc_tm- Datum/čas odeslání (UTC) - čas má tvarHH:MM:SS:mmm(s milisekundami). (typ:date/time)submited_dt/submited_tm- Datum/čas odeslání (lokální čas serveru) - stejný formát jako výše. (typ:date/time)type- Typ zprávy - Číselné rozlišení zvolené odesilatelem; zprávy se stejným typem mohou být slučovány. (typ:number)avoid-join- Zákaz slučování - Zda odesílatel zprávu označil jako neslučitelnou s ostatními. (typ:bool)already- Opětovné doručení -"true"u zprávy, která již byla dříve doručena a čeká na potvrzení (opětovné doručení);"false"při prvním doručení. Nejde o totéž co požadavkový atributalready– jde o vlastnost samotné zprávy, ne o parametr dotazu (na rozdíl od dojmu, který budí stará dokumentace). (typ:bool)delivered_utc_dt/delivered_utc_tm/delivered_dt/delivered_tm- Datum/čas doručení - Přítomné jen v režimu potvrzených zpráv, a jen eviduje-li databáze čas doručení. (typ:date/time)msg- Text zprávy - Přítomen jen obsahuje-li zpráva textovou část. (typ:string)size- Velikost binární části - Skutečná velikost binárních dat; obsah uzlumessagepak nese tato data hexadecimálně kódovaná (dvojnásobná délka oprotisize). Přítomen jen obsahuje-li zpráva binární část. (typ:number)
Příklady odpovědi
(Zatím bez ověřeného příkladu.)
Chyby a reakce
- Režim čekajících zpráv se nikdy nevrací jako chyba – potvrzuje se stará dokumentace: odpověď je vždy
<messages>s nula a více<message>, bez chybového stavu. - Režim potvrzených zpráv (
confirmed="true") chybu vrátit může – na rozdíl od staré dokumentace. Selže-li načtení potvrzených zpráv, server do těla<messages>vloží diagnostické uzlyerrorbez jakéhokoli doprovodného stavového atributu na<messages>. - Výraz pro identifikaci chyb v odpovědi serveru:
messages[error].
Související požadavky
- confirm-message – potvrzení přijetí zprávy vrácené tímto požadavkem.
- send-message – odeslání zprávy, kterou tento požadavek vrací.