SMS API
Dokumentacja SMS API systemu CallAPI / VPBX.
SMS API
SMS API służy do wysyłania wiadomości SMS.
Przykład wysyłania SMS z wykorzystaniem cURL:
POST https://api.vpbx.pl/api/v1/sms
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAoMS0Iiwi" \
--request POST \
--data '{"from": "callapi.pl", "to": "48500000000", "text": "To jest wiadomosc testowa.", "webhook_method": "POST", "webhook": "https://url.do.serwisu.odbierajacego"}' \
https://api.vpbx.pl/api/v1/sms
Przykład poprawnej odpowiedzi:
{
"result": "OK",
"sms_id": "7b499639-f0a4-4632-858c-8a6d913bcc90"
}
Przykład błędu:
{
"error": "token expired",
"result": "error"
}
Przykładowy webhook (callback):
{
"event_type": "sms-cdr",
"sms_id": "7b499639-f0a4-4632-858c-8a6d913bcc90",
"status": "DELIVERED",
"parts": 1,
"from": "callapi.pl",
"to": "48500000000"
}
Parametry zapytania
| Pole | Typ | Opis |
|---|---|---|
| from | String | Numer / nazwa nadawcy SMS |
| to | String | Numer odbiorcy SMS |
| webhook_method | String | Metoda wysyłania webhook [POST | GET]. W chwili obecnej tylko metoda POST jest wspierana |
| webhook | String | Adres URL, na który będą wysłane statusy SMS |
| text | String | Treść wiadomości SMS |
Odpowiedź - Pomyślne zakolejkowanie SMS
| Pole | Typ | Opis |
|---|---|---|
| result | String | Status zapytania. [OK | Error] |
| sms_id | String | Unikalny identyfikator SMS w formacie UUID |
Odpowiedź - odrzucenie SMS
| Pole | Typ | Opis |
|---|---|---|
| result | String | Status zapytania. [OK | Error] |
| error | String | Opis błędu |
Webhook (Callback)
| Pole | Typ | Opis |
|---|---|---|
| event_type | String | Ten webhook zawsze ma wartość ‘cdr-sms' |
| sms_id | String | UUID - taki sam jaki został zwrócony podczas wysyłania SMS |
| status | String | jeden z [ACCEPTED, SENT, DELIVERED, UNDELIVERED, FAILED] |
| parts | Int | Ilość użytych jednostkowych wiadomości SMS |
| from | String | Nadawca wiadomości SMS |
| to | String | Odbiorca wiadomości SMS |
Status
Status wysyłania wiadomości SMS:
| Status | Znaczenie |
|---|---|
| ACCEPTED | Wiadomość zaakceptowana do wysyłki. Status nie potwierdza wysylania wiadomości do operatora docelowego |
| SENT | Wiadomość wysłano do operatora. Status ten nie oznacza że wiadomość została dostarczona do odbiorcy |
| DELIVERED | Wiadomość dostarczona do odbiorcy |
| UNDELIVERED | Wiadomość nie została dostarczona do odbiorcy. W większości przypadków jest to status generowany przez końcowego operatora |
| FAILED | Wystąpił błąd podczas wysyłania wiadomości SMS |
SMS STATUS API
STATUS SMS API służy do sprawdzania statusu, wcześniej wysłanej wiadomości SMS.
Przykład z wykorzystaniem cURL:
GET https://api.vpbx.pl/api/v1/sms/[sms_id]
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAoMS0Iiwi" \
--request GET \
https://api.vpbx.pl/api/v1/sms/7b499639-f0a4-4632-858c-8a6d913bcc90
Przykład poprawnej odpowiedzi:
{
"parts": 1,
"price": 0.07,
"result": "OK",
"sms_id": "7b499639-f0a4-4632-858c-8a6d913bcc90",
"status": "DELIVERED"
}
Przykład błędu:
{
"error": "token expired",
"result": "error"
}
Odpowiedź
| Pole | Typ | Opis |
|---|---|---|
| result | String | Status zapytania. [OK | Error] |
| sms_id | String | Unikalny identyfikator SMS w formacie UUID |
| price | Float | Koszt wysłanej wiadomości |
| parts | Int | Ilość użytych jednostkowych wiadomości SMS |
| status | String | jeden z [ACCEPTED, SENT, DELIVERED, UNDELIVERED, FAILED] |
Odpowiedź - brak statusu (błędne SMS ID)
| Pole | Typ | Opis |
|---|---|---|
| result | String | Status zapytania. [OK | Error] |
| error | String | Opis błędu |
SMS MO API
SMS MO API służy do odbioru SMS typu MO (Mobile Originated), czyli wysłanych z urządzenia mobilnego w kierunku API, zdefiniowanego przez użytkownika.
Przykład wiadomości wysyłanej w kierunku użytkownika końcowego, po odebraniu SMS przez naszą platformę:
{
"event_type": "mo-sms",
"from": "48500123123",
"to": "48731000000",
"sms_id": "af787292-4def-4f0b-aa49-6b3286f237e7",
"content_type": "UNICODE",
"date_time": "2006-01-02 15:04:01",
"text": "DEV To jest wysłany tekst SMS",
"text_orig": "00440045005600200054006F0020006A006500730074002000770079007301420061006E0079002000740065006B0073007400200053004D0053",
"keyword": "DEV",
"udh": ""
}
Pola wiadomości MO SMS
| Pole | Typ | Opis |
|---|---|---|
| event_type | String | Typ wiadomości. [mo-sms] |
| from | String | Nadawca wiadomości SMS |
| to | String | Odbiorca wiadomości SMS (Numer przypisany klientowi) |
| sms_id | String | Unikalny identyfikator SMS w formacie UUID |
| content_type | String | Kodowanie wiadomości. [jeden z GSM7 | UNICODE] |
| date_time | String | Data / Czas odebrania wiadomości SMS |
| text | String | Treść wiadomości SMS w formacie Unicode |
| text_orig | String | Treść wiadomości SMS w formacie oryginalnym (format HEX) |
SMS MO Inject API
SMS MO Inject API służy do zasymulowania odebrania wiadomości SMS typu MO (Mobile Originated). Funkcjonalność ta może być także wykorzystana do integracji z modemami GSM w celu odebrania wiadomości SMS typu MO.
Wiadomość SMS będzie później dostarczona do klienta za pomocą webhooka SMS MO API.
Koszt przesłania tego typu wiadomości SMS wynosi 0.005 PLN.
Przykład z wykorzystaniem cURL (POST):
POST/GET https://api.vpbx.pl/api/v1/sms/inject/mo
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAoMS0Iiwi" \
--request POST \
--data '{"from": "48500123456", "to": "48731000000", "text": "Test message", "extId": "external-ref-123"}' \
https://api.vpbx.pl/api/v1/sms/inject/mo
# Przykład z wykorzystaniem cURL (GET):
curl --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAoMS0Iiwi" \
"https://api.vpbx.pl/api/v1/sms/inject/mo?from=48500123456&to=48731000000&text=Test+message"
Przykład poprawnej odpowiedzi:
{
"result": "OK",
"sms_id": "7b499639-f0a4-4632-858c-8a6d913bcc90",
"status": "QUEUED"
}
Przykład błędu - walidacja:
{
"result": "Error",
"error": "Field validation for 'From' failed on the 'required' tag"
}
Przykład błędu - brak uprawnień:
{
"result": "Error",
"error": "Number not found or not configured"
}
Przykład błędu - przekroczenie limitu CPS:
{
"result": "Error",
"error": "Too Many Requests. Exceeded limit of 10 CPS"
}
Parametry zapytania
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
| from | String | Tak | Numer telefonu nadawcy lub alfanumeryczny identyfikator nadawcy (2-15 znaków) |
| to | String | Tak | Numer telefonu odbiorcy w formacie E.164 bez znaku + (9-15 cyfr). Użytkownik musi być właścicielem tego numeru |
| text | String | Nie* | Treść wiadomości SMS w formacie tekstowym (maksymalnie 1600 znaków dla wieloczęściowych SMS) |
| binary | String | Nie* | Opcjonalna treść SMS w formacie binarnym jako ciąg szesnastkowy (maksymalnie 3200 znaków) |
| smsc | String | Nie | Opcjonalny identyfikator SMSC, alfanumeryczny (maksymalnie 8 znaków) |
*Należy podać przynajmniej jedno z pól: text lub binary
Odpowiedź - Pomyślne zakolejkowanie SMS
| Pole | Typ | Opis |
|---|---|---|
| result | String | Status zapytania. [OK | Error] |
| sms_id | String | Unikalny identyfikator SMS w formacie UUID |
| status | String | Status wiadomości. Zawsze "QUEUED" dla pomyślnie zakolejkowanej wiadomości |
Odpowiedź - błędy
| Pole | Typ | Opis |
|---|---|---|
| result | String | Status zapytania. [OK | Error] |
| error | String | Opis błędu |
Kody błędów HTTP
| Kod HTTP | Opis |
|---|---|
| 200 | Wiadomość pomyślnie zakolejkowana |
| 400 | Nieprawidłowe parametry zapytania (błąd walidacji) |
| 403 | Numer nie istnieje, nie jest skonfigurowany lub użytkownik nie ma uprawnień |
| 404 | Użytkownik nie został znaleziony |
| 429 | Zbyt wiele zapytań - przekroczony limit CPS |
| 500 | Wewnętrzny błąd serwera |