WAPI – notyfikacje

Część operacji nie może być zrealizowana natychmiast. Otrzymywanie informacji o wyniku danego żądania (bądź śledzenie jego przebiegu) umożliwia system notyfikacji dostępny w ramach WAPI.

Jeśli żądanie nie może zostać wykonane natychmiast, w odpowiedzi zostanie zwrócone Request pending (1001). Po dokończeniu operacji (w bardziej skomplikowanych przpadkach – po dokończeniu poszczególnych kroków) utworzy się notyfikacja, która jest podobna do klasycznej odpowiedzi. Wg parametrów clTRID lub svTRID łatwo poznasz, którego żądania notyfikacja dotyczy.

Przez notyfikacje nie są przesyłane wyniki żądań, które były zrealizowane synchronicznie.

Dane notyfikacji zawsze są w formacie XML w kodowaniu UTF-8.

Doręczanie notyfikacji

Istnieją trzy sposoby doręczania naszych notyfikacji do Ciebie:

  1. Wysyłanie e-mailem
  2. Wywołanie adresu URL Twojego skryptu i przekazanie przez POST
  3. Pobieranie z kolejki POLL

W ustawieniach WAPI w Panelu Klienta należy wybrać jeden z wymienionych sposobów. Domyślnie korzysta się z kolejki POLL.

Wysyłanie e-mailem

Po dokończeniu operacji notyfikacja jest wysyłana na adres e-mail, który został podany w Panelu Klienta.

Wysyłanie adresu URL

Notyfikacja jest przesyłana przez protokół HTTP (lub HTTPS) na określony przez Ciebie adres URL metodą POST w parametrze request. Potwierdzeniem prawidłowego dostarczenia jest odpowiedź HTTP z kodem 200. Jeśli doręczenie się nie powiedzie, nasz system będzie ponawiał próbę w kilkuminutowych interwałach.

Pobieranie z kolejki POLL

W tym przypadku wszystkie notyfikacje czekają w kolejce w naszym systemie i można je pobrać za pomocą WAPI. Przez interfejs WAPI wyślij komendę notify-poll-req. Jeśli kolejka jest pusta, system zwróci 1003 – Empty notifications queue, w przeciwnym razie odpowiedź będzie zawierać najstarszą niepobraną notyfikację.

Po otrzymaniu notyfikacji należy oznaczyć ją jako przetworzoną za pomocą komendy notify-poll-ack, której przekażesz jej ID. W ten sposób można oznaczyć jedynie najstarszą niepobraną notyfikację (tj. tę, która została zwrócona komendą poll_req).

Szczegółowe informacje dotyczące tych komend są dostępne tutaj: komenda notify-poll-reqkomenda notify-poll-ack.

Przykład

zapytanie XML:

<request>
 <user>tester</user>
 <auth>fb82be1466331148816bdbac855a6b1bd4e24b81</auth>
 <command>ping-async</command>
 <clTRID>AvrX87Kqk6h3</clTRID>
</request>

odpowiedź XML:

<response>
 <code>1001</code>
 <result>Request pending</result>
 <timestamp>1286957874</timestamp>
 <clTRID>AvrX87Kqk6h3</clTRID>
 <svTRID>1286957874.1271.15706</svTRID>
 <command>ping-async</command>
</response>

notyfikacje XML:

<notify>
 <code>1000</code>
 <result>OK</result>
 <timestamp>1286957932</timestamp>
 <clTRID>AvrX87Kqk6h3</clTRID>
 <svTRID>1286957874.1271.15706</svTRID>
 <command>ping-async</command>
 <ID>2691</ID>
</notify>

Byl pro Vás tento návod užitečný?