SMS API

# @ CallAPI ~ 5 min
#sms #api

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