HTTPS API v2 / Wysyłanie wiadomości RCS

Wywołanie adresu

Aby przy pomocy Zdalnej obsługi wysłać wiadomość RCS należy przesłać określone zgłoszenie protokołem HTTP lub HTTPS metodą POST.

messages/send_rcs

Dostępne parametry

Parametr Typ Przykładowa wartość lub format Opis
username String login Login użytkownika API.
password String haslo Hasło użytkownika API.
rcs_id String Identyfikator RCS np. 54c53be2-cbb8-11ec-9d64-0242ac120002 Identyfikator dostepny jest w naszym panelu, przypisany dla każdej stworzonej konfiguracji agenta RCS.
phone String|Array +48500600700 Numer lub tablica numerów telefonów.
message Array [] Struktura wiadomości RCS w postaci Array.
details Boolean true, false lub brak Parametr wyświetlający w odpowiedzi zwrotnej szczegóły wysłanych wiadomości.
date DateTime ISO np.
„2015-02-22 12:25:55”
Parametr opcjonalny, pozwalający na określenie terminu wysyłki wiadomości.
unique_id String|Array np. 6asTD3fif98gj Parametr opcjonalny, pozwalający na zdefiniowanie własnego identyfikatora wysyłanej wiadomości. Identyfikator może mieć minimalnie 3 znaki i maksymalnie 50 znaków alfanumerycznych (a-z, A-Z, 0-9). Dla grupowych wysyłek, kolejne unique_id muszą być unikalne oraz ilość unique_id musi być zgodna z ilością numerów.
group_id String|Array np. 123456789

Identyfikator lub identyfikatory grup w Panelu Klienta. Identyfikatory te można pobrać korzystając z akcji groups/index lub kopiując je z poziomu edycji grupy w Panelu Klienta.

Parametry oznaczone pogrubieniem są obowiązkowe. Pozostałe są opcjonalne.

Dostępne struktury wiadomości

1. Wiadomość tekstowa

{
   "text":"Przyklad wiadomości",
   "suggestions":[]
}

2. Wiadomość file/video

{
   "file":{
        "name":"Nazwa pliku",
        "url":"https://sciezka_do_plik_video",
        "type":"video/mp4",
        "size":1489039
   },
   "suggestions":[]
}

3. Wiadomość karta informacyjna (pojedyncza)

{
   "richcard":[{
        "title":"RCS",
        "description":"Opis wiadomosci",
        "media": {
              "url":"https://sciezka_do_pliku",
              "size":26802,
              "type":"image/png",
              "thumbnail":"https://sciezka_do_mini_obrazka",
              "thumbnailSize":2802,
              "thumbnailType":"image/jpeg",
         },
         "suggestions":[],
         "layout": {
              "imageAlignment":"LEFT|RIGHT",
              "cardOrientation":"VERTICAL|HORIZONTAL",
         }
   }],
   "suggestions":[]
}

4. Wiadomość karta informacyjna (karuzela)

{
   "richcard":[{
        "title":"RCS",
        "description":"Opis pierwszej wiadomosci",
        "media": {
              "url":"https://sciezka_do_pliku",
              "size":26802,
              "type":"image/png",             
              "thumbnail":"https://sciezka_do_mini_obrazka",
              "thumbnailSize":2802,
              "thumbnailType":"image/jpeg",
              "height":"SHORT|MEDIUM|TALL"
         },
         "suggestions":[]
   },
   {
        "title":"RCS",
        "description":"Opis drugiej wiadomosci",
        "media": {
              "url":"https://sciezka_do_pliku",
              "size":26802,
              "type":"image/png",             
              "thumbnail":"https://sciezka_do_mini_obrazka",
              "thumbnailSize":2802,
              "thumbnailType":"image/jpeg",
              "height":"SHORT|MEDIUM|TALL"
         },
         "suggestions":[]
   }],
   "cardWidth":"SMALL|MEDIUM",
   "suggestions":[]
}

Wiadomość typu 'kazruzela' może zawierać maksymalnie 4 elementy. W przypadku użycia struktury 'media' wymagane jest podanie elementów 'url', 'size' oraz 'type'. Poniżej lista obsługiwanych typów multimediów:

Typ nośnika Typ dokumentu Rozszerzenie Działa z kartami informacyjnymi
application/ogg Dźwięk OGG .ogx Nie
application/pdf PDF .pdf Nie
audio/aac Dźwięk AAC .aac Nie
audio/mp3 format dźwięku MP3 .mp3 Nie
audio/mpeg Dźwięk MPEG .mpeg Nie
audio/mpg Dźwięk MPG .mp3 Nie
audio/mp4 Dźwięk MP4 .mp4 Nie
audio/mp4-latm Dźwięk MP4-latm .mp4 Nie
audio/3gpp Audio 3GPP .3gp Nie
image/jpeg JPEG .jpeg, .jpg Tak
image/gif GIF .gif Tak
image/png PNG .png Tak
video/h263 Film H263 .h263 Tak
video/m4v Film M4V .m4v Tak
video/mp4 Film MP4 .mp4 Tak
video/mpeg4 Film w formacie MPEG-4 .mp4, .m4p Tak
video/mpeg MPEG-video .mpeg Tak
video/webm Film WEBM .webm Tak

Sugestie

Element sugestii nie jest wymagany, jednak pozwala na dodanie dodatkowych buttonów, które umozliwiają miedzy innymi przekierowanie użytkownika do strony www, wykonanie call, skierowanie do poczty lub odesłanie wiadomości zwrotnej. Do dypozycji mamy więc cztery opcje 'url', 'dial', 'map', 'calendar' i odpowiednio parametr 'to' odpowiada wartości, np. dla typu 'url' będzie to adres URL, dla 'dial' numer telefonu, 'map' współrzedne, oraz 'calendar' informację nt. zdarzenia.

Poniżej przedstawione zostały możliwe struktury:

[
   {
     "reply":{
          "text":"Label",
          "postback":"uslugi",
     }
   }, 
   {
     "action":{
          "text":"Label",
          "postback":"my_url",
          "action":"url",
          "to":"https://adres_url_do_przekierowania",
     }
   },
   {
     "action":{
          "text":"Label",
          "postback":"my_dial",
          "action":"dial",
          "to":"+48100100100",
     }
   },
   {
     "action":{
          "text":"Label",
          "postback":"my_map",
          "action":"map",
          "to":"SerwerSMS|50.0904966|18.5803288",
      }
   },
   {
     "action":{
          "text":"Label",
          "postback":"my_calendar",
          "action":"calendar",
          "to":"2022-04-05 09:00:00|2022-04-05-10:00:00|Wydarzenie",
     }
   }
]

Ciąg znaków zawarty w tablicy pod kluczem 'postback' identyfikuje zdarzenie, które zostanie nastepnie przekazane w formie PUSH na zdefiniowany adres URL Webhook. W ten sposób można realizować scenariusz automatycznych odpowiedzi, jako reakacja na odpowiednie zachowanie użytkownika. Maksymalna ilość znaków identyfikująca treść buttona (pole 'text') wynosi 25.

Maksymalna ilośc elementów wynosi 11, jednak w przypadku stosowania dodatkowej grafiki lub dłuższego opisu, ilość wyświetlonych elmenetów może byc mniejsza.

W zależności od przesłanych danych SerwerSMS.pl wygeneruje w odpowiedzi dokument w formacie JSON/XML z informacją na temat wykonanych akcji. I tak w przypadku prawidłowego wysłania wiadomości SMS klient otrzyma przykładowo następują informację:

{
   "success":true,
   "queued":1,
   "unsent":0
}

W przypadku podania dodatkowego parametru details=true, odpowiedź zwrotna zostanie uzupełniona o szczegóły wysyłanych wiadomości, które można zapisać w bazie danych po stronie oprogramowania klienta:

{
   "success":true,
   "queued":1,
   "unsent":0,
   "items":[{
        "id":"1c142d81c7",
        "phone":"+48500600700",
        "status":"queued",
        "queued":"2014-10-16 16:49:05",
        "text":"Test SerwerSMS.pl"
   }]
}

Parametr "success" zawiera informację o powodzeniu przeprowadzonej operacji. W atrybutach "queued" oraz "unset" znajdują się liczby skolejkowanych oraz niewysłanych wiadomości. Sekcja "items" zawiera numery telefonów i ID wiadomości przekazanych do wysłania (oraz wiadomości, których nie skolejkowano z określonego powodu). Unikalny znacznik wiadomości SMS może być wykorzystany później do sprawdzenia w sposób zdalny stanu wysyłki konkretnej wiadomości SMS. W parametrze "text" widnieje treść wysyłanej wiadomości SMS. Numer telefonu jest automatycznie poprawiany i wyświetlany w pełnym formacie wymaganym przez SerwerSMS.pl czyli z numerem kierunkowym kraju (np. +48) na początku.

Oprócz tego może zostać wygenerowany błąd ogólny gdzie nie ma rozgraniczenia na skolejkowane i błędne. Może to nastąpić np. w sytuacji gdy klient nie zdefiniuje treści wiadomości, nie poda numerów telefonów, jego konto nie jest aktywne lub wystąpił inny problem opisany w komunikatach błędów. W przypadku braku odpowiedniego uprawnienia zostanie wygenerowany następujący komunikat:

{
   "error":{
      "code":6300,
      "type":"RcsError",
      "message":"Brak uprawnień do wysyłki wiadomości"
   }
}

Komunikaty błędów

Kod błędu Opis
6300 Brak uprawnień do wysyłki wiadomości
6301 Nieprawidłowa identyfikacja agenta RCS lub konfiguracja jest nieaktywna
6302 Struktura wiadomości jest nieprawidłowa
6303 Brak wymaganych parametrów
6304 Nieprawidłowy adres IP
6306 Nieprawidłowy numer telefonu
6307 Pusta struktura wiadomości
6308 Ustaw wybrany typ wiadomości (text, audio, file, richcard)
6309 Struktura sugestii jest nieprawidłowa
6310 Treść wiadomości jest pusta
6311 Struktura Audio message jest nieprawidłowa lub brak wymaganych parametrów (name, file)
6312 Struktura File message jest nieprawidłowa lub brak wymaganych parametrów (name, url, mime, size)
6313 Struktura Richcard message jest nieprawidłowa lub brak wymaganych parametrów (title, description, media)
6314 Struktura Map message jest nieprawidłowa
6315 Błąd ogólny
6317 Sieć nieobsługiwana

Powiadomienia URL

Na określony w panelu adres Webhook (definiowany podczas konfiguracji agenta RCS) przekazywane jest powiadomienie URL, które definiuje raport, akcje zwrotną użytkownika (np. klikniecie z wybraną sugestię) lub wpisaną odpowiedź zwrotną użytkownika. Wyróżniamy więc trzy podstawowe struktury, rozróżniane polem 'type', są to 'report', 'reply', 'action' oraz 'message'. Dane wysyłane są metodą POST w postaci struktury JSON. Wysyłka powiadomienia realizowana jest z adresu IP 94.152.153.158.

Struktura dla powiadomienia 'report' (stan wysłanej wiadomosci RCS):

[{
     "type":"report",
     "status":"displayed",
     "smsid":"7HydhfmN",
     "rcs_id":"c6dyuf34-abYh-oPlo-jusYqPl9IkNs",
     "phone":"+48100100100",
     "date":"2022-05-04 16:55:45"
}]

Struktura dla powiadomienia 'reply' oraz 'action' (zdarzenie wykonane przez użytkownika):

[{
     "type":"reply|action",
     "data":"uslugi",
     "text":"VXNsdWdp",
     "rcs_id":"c6dyuf34-aauh-1dkj-dhfbbtldngh1",
     "phone":"+48100100100",
     "msgid":"Mx1j==djUhfjHfkghNfhg",
     "date":"2022-05-04 16:55:45"
}]

Struktura dla powiadomienia 'message' (wiadomość odesłana przez użytkownika):

[{
     "type":"message",
     "text":"VHJlc2Mgd2lhZG9tb3NjaQ==",
     "rcs_id":"c6dyuf34-aauh-1dkj-dhfbbtldngh1",
     "phone":"+48100100100",
     "msgid":"AMx1jdjUfhfjHfkghNfhg",
     "date":"2022-05-04 16:55:45"
}]

W panelu klienta dla wybranej konfiguracji można określić tag poprawnej odpowiedzi. Jeśli wprowadzono jakiś ciąg znaków mechanizm bedzie oczekiwał zgodnej odpowiedzi, w przeciwnym razie będzie ponawiał request co 30min do osiągnięcia maksymalnie 5 prób.

Informacja zawarta w elemencie 'text' jest zakodowana w formie base64.

Zalecane ustawienia

W przypadku średnich i dużych ilości wysyłanych wiadomości rzędu kilku tysięcy lub więcej, zalecane jest przekazywanie wiadomości w „paczkach” po ok 50 numerów w jednym zapytaniu. Przyspieszy to znacznie proces przekazywania danych do SerwerSMS.pl i zmniejszy ilość koniecznych do wysłania zapytań.