API v1#
V súčasnej verzii podporuje API v1 dva spôsoby komunikácie so serverom, a to HTTPS JSON a HTTPS XML. Klientské aplikácie pre posielanie svojich požiadaviek využívajú URL https://smsapi.telekom.sk. Celá komunikácia je šifrovaná cez HTTPS spojenie.
Pre využitie niektorého z API rozhraní je potrebné mať zadefinovaný aspoň jeden API kľúč. Nad API kľúčom je nutné nastaviť aj zoznam IP adries, z ktorých bude možné odosielať požiadavky na API. Požiadavky na API sú defaultne nastavené na metódu POST. V prípade, že chcete využívať metódu GET, je nutné toto nastavenie povoliť pri danom API kľúči, čo je však odporúčané iba v nevyhnutných prípadoch.
Základná URL pre komunikáciu s API#
Komunikácia s API prebieha posielaním POST(GET) požiadaviek na nižšie uvedenú url:
Každý endpoint sa uvádza ako relatívna cesta k tejto základnej URL. Napr. pre autentifikáciu (/auth) bude výsledná URL pre JSON
https://smsapi.telekom.sk/json/auth
Funkcia auth#
Metóda: POST, GET
Endpoint: /auth
Funkcia auth slúži na autentifikáciu používateľa.
Povinným parametrom pre autentifikáciu je token, čo je vlastne API kľuč vygenerovaný vo webovej aplikácii. Výsledkom autentifikácie je získané session_id, ktoré je potrebné na posielanie akýchkoľvek ďalších požiadaviek na API rozhranie (posielanie SMS, overovanie...). Aplikácia taktiež toto session_id ukladá aj do šifrovaného cookie. Platnosť obidvoch session je 15 minút pri nečinnosti. V prípade, ak API klient nepodporuje ukladanie session_id alebo cookies, je potrebné pri každej požiadavke odosielať všetky údaje ako pri autentifikácii.
Príklad POST requestu:
URL: https://smsapi.telekom.sk/json/auth
Telo požiadavky:
V prípade úspešnej autentifikácie získame odpoveď v nasledujucom formáte:
V prípade chýb získame odpoveď s chybovou hláškou (ukážka chybovej hlášky):
Funkcia ping#
Metóda: POST, GET
Endpoint: /ping
Ako už bolo spomínané pri autentifikovaní získame session_id, ktoré je v prípade nečinnosti platné 15 minút. V prípade, že vyžadujeme prácu cez API pod rovnakým session_id, máme k dispozícii funkciu ping. Táto funkcia slúži na obnovovanie životnosti session_id ešte predtým, než sa jej minie platnosť.
Príklad POST requestu:
V prípade, že overenie prebehlo úspešne získame odpoveď v nasledujucom formáte:
V prípade chýb získame odpoveď s chybovou hláškou (ukážka chybovej hlášky):
Funkcia send_message#
Metóda: POST, GET
Endpoint: /send_message
Táto funkcia slúži na samotné odosielanie SMS správ a vyžaduje/podporuje nasledovne vstupné parametre:
* - povinný parameter
| Parameter | Typ | Popis |
|---|---|---|
| *to | string | Číslo adresáta správy, Max. podpora 100 MSISDN oddelených čiarkou pre SMS s viacerými príjemcami. |
| *text | string | Text SMS správy s podporou diakritiky |
| *token alebo session_id | string | api token získaný z webovej aplikácie alebo session_id získané z funkcie auth |
| from | string | Číslo, alebo textový identifikátor odosielateľa SMS správy. Ak nebude definovaný, správa sa odošle z čísla, ktoré je priradené k účtu. |
| callback | bool | true - bude volať v užívateľských nastaveniach definovanú URL pre callback na poslanie delivery statusu SMS správy cez rozhranie, prostredníctvom ktorého bola správa odoslaná - (Predvolená hodnota) false - nebude volať v užívateľských nastaveniach definovanú URL pre callback Akákoľvek zadaná hodnota okrem false, 0, "0" alebo "" bude považovaná za true |
| delivery_time | string | [timestamp] Čas, v ktorom má byť správa odoslaná vo formáte YYYY-MM-DD HH:MM:SS |
| priority | integer | Priorita zasielania SMS. Možné hodnoty parametra: 1 (Nízka), 2 (Štandardná), 3 (Vysoká). (Predvolená hodnota - 2) |
| validity | integer | Čas platnosti SMS. Ak SMS nebude odoslaná do SMSC do tohto časového limitu, bude z queue vymazaná. Hodnota je uvádzaná v minútach. Možné hodnoty 1-1440. (Predvolená hodnota - 1440 minút) |
| unicode | bool | false - pošle ako štandardnú správu GSM 7bit. Ak správa obsahuje diakritiku, tá bude z textu odstránená true - pošle ako unicode [UTF-16] V prípade, že tento parameter nie je definovaný, aplikácia odošle správu na základe automatickej detekcie kódovania. Akákoľvek zadaná hodnota okrem false, 0, "0" alebo "" bude považovaná za true |
| type | string | standard - špecifikuje formát posielaného textu (Predvolená hodnota) flash - špecifikuje SMS, ktorá sa zobrazí okamžite po prijatí telefónom |
| groupId | integer | ID kadenčnej skupiny, prostredníctvom ktorej bude SMS správa odoslaná |
Príklad POST requestu:
URL: https://smsapi.telekom.sk/json/send_message
Telo požiadavky:
URL: https://smsapi.telekom.sk/xml/send_message
Telo požiadavky:
V prípade, že správa bola odoslaná úspešne získame odpoveď v nasledujucom formáte:
V prípade chýb získame odpoveď s chybovou hláškou (ukážka chybovej hlášky):
V prípade, že požiadavka bola prijatá úspešne, ale niektorú správu nebolo možné odoslať (príklad s konkrétnou chybou):
{
"result": {
"status": "success",
"description": "",
"code": "OK"
},
"message_count": 2,
"messages": [
{
"status": "success",
"code": "OK",
"description": "",
"message_id": 100427,
"parts": 1
},
{
"status": "error",
"code": "SYSTEM_ERROR",
"description": "Vyskytla sa systémová chyba. Kontaktuje administrátora",
"message_id": 100428
}
]
}
<?xml version="1.0" encoding="UTF-8" ?>
<response>
<result>
<status>success</status>
<description></description>
<code>OK</code>
</result>
<messages count="2">
<message id="100427">
<status>success</status>
<code>OK</code>
<description></description>
</message>
<message id="100428">
<status>error</status>
<code>SYSTEM_ERROR</code>
<description>Vyskytla sa systémová chyba. Kontaktuje administrátora</description>
</message>
</messages>
</response>
Funkcia check_message#
Metóda: POST, GET
Endpoint: /check_message
Táto funkcia slúži na overenie stavu správy (stav doručenia).
Príklad POST requestu:
URL: https://smsapi.telekom.sk/json/check_message
Telo požiadavky:
V prípade, že overenie prebehlo úspešne:
<?xml version="1.0" encoding="UTF-8" ?>
<response>
<result>
<status>success</status>
<description></description>
<code>OK</code>
</result>
<message>
<status>Doručená</status>
<code>DELIVERED</code>
<deliveryDateTime>2017-01-01 10:45:00</deliveryDateTime> <!-- Tvar imestamp alebo prádzny reťazec v prípade, že správa ešte nebola doručená. -→
</message>
</response>
V prípade chyby (príklad s konkrétnou chybou):
Stavy parametra status
| code | status | Description |
|---|---|---|
| UNSENT | Neodoslaná | Správa ešte nebola spracovaná. |
| SCHEDULED | Plánovaná | Správa je načasovaná na neskoršie odoslanie. |
| QUEUED | Vo fronte | Správa bola prijatá a čaká na odoslanie. |
| SENDING | Odosiela sa | Správa sa aktuálne odosiela. |
| SENT | Odoslaná | Správa bola odoslaná do SMS centra. |
| DELIVERED | Doručená | Správa bola doručená adresátovi. |
| EXPIRED | Expirovaná | Časový limit na doručenie správy vypršal. |
| DELETED | Zmazaná | Správa bola odstránená z doručovacej fronty. |
| UNDELIVERABLE | Nedoručiteľná | Správu nie je možné doručiť. |
| DENIED | Zamietnutá | Správa bola zamietnutá SMS centrom. |
| IN_GROUP | V skupine | Správa je zaradená do kadenčnej skupiny. |
| BLACKLISTED | Blokovaná | Správa sa nachádza na blackliste a bola zablokovaná. |
| ERROR | Chyba | Správu nie je možné odoslať z dôvodu chyby. Systém sa pokúsi opätovne správu doručiť ešte 5 krát v priebehu 60 minút. |
| UNKNOWN | Neznámy | Správa bola odoslaná, ale nie je možné zistiť stav doručenia. |
Delivery status callback#
Táto funkcia pošle požiadavku s informáciami o zmenách v delivery statuse na Callback URL (aplikácia, alebo skript na strane zákazníka) definovanú v nastaveniach API kľúča.
Parametre v callback požiadavke
| Parameter | Typ | Popis |
|---|---|---|
| message_id | string | ID SMS správy vygenerovanej funkciou send_message |
| status | string | Status správy |
| addressFrom | string | Číslo odosielateľa správy |
| addressTo | string | Číslo adresáta správy |
| channel | string | Kanál cez ktorý bola správa odoslaná |
Stavy parametra status:
| Status | Popis |
|---|---|
| SCHEDULED | Správa je načasovaná na neskoršie odoslanie. |
| QUEUED | Správa bola prijatá a čaká na odoslanie. |
| SENDING | Správa sa aktuálne odosiela. |
| SENT | Správa bola odoslaná do SMS centra. |
| DELIVERED | Správa bola doručená adresátovi. |
| EXPIRED | Časový limit na doručenie správy vypršal. |
| DELETED | Správa bola odstránená z doručovacej fronty. |
| UNDELIVERABLE | Správu nie je možné doručiť. |
| DENIED | Správa bola zamietnutá SMS centrom. |
| IN_GROUP | Správa je zaradená do kadenčnej skupiny. |
| BLACKLISTED | Správa sa nachádza na blackliste a bola zablokovaná. |
| ERROR | Správu nie je možné odoslať z dôvodu chyby. Systém sa pokúsi opätovne správu doručiť ešte 5 krát v priebehu 60 minút. |
| UNKNOWN | Správa bola odoslaná, ale nie je možné zistiť stav doručenia. |
Spätná správa#
Spätné správy služba Omnichannel preposiela na adresu definovanú v časti Konto→Profil→Priradené čísla→Callback URL pre prijaté správy. Na zavolanie tejto adresy bude v prípade, ak ju nebude možné volať ihneď pre každú doručenú SMS vykonaných týchto 6 pokusov:
- Po 5 minútach od posledného pokusu
- Po 15 minútach od posledného pokusu
- Po 30 minútach od posledného pokusu
- Po 60 minútach od posledného pokusu
- Po 720 minútach od posledného pokusu
- Po 1440 minútach od posledného pokusu (posledný pokus)
Potom bude nedoručená SMS zahodená. Text správy je v znakovej sade UTF-8.
Príklad:
| Parameter | Typ | Popis |
|---|---|---|
| addressFrom | string | Číslo odosielateľa správy |
| addressTo | string | Číslo adresáta správy |
| timestamp | string | Dátum a čas prijatia SMS |
| text | string | Text SMS správy |