Nic nenalezeno

Potvrzení o doručení a příchozích zprávách

Co na vaši adresu chodí

BulkGate hlásí zpětně dvě věci: jak dopadly vaše odeslané zprávy a co vám lidé odpověděli. Obojí dorazí jako HTTP požadavek na adresu, kterou máte nastavenou.

Co dorazí Jak to poznáte
Potvrzení o doručení Parametr status s kódem stavu a smsID odeslané zprávy
Příchozí SMS nebo odpověď Parametr status s hodnotou 10, odesílatel v from a text v message

Požadavek chodí metodou HTTP GET — hodnoty tedy najdete v query stringu.

Tip

Při velkých objemech se vyplatí hromadná varianta: místo požadavku na každou zprávu dorazí jeden požadavek metodou POST s polem záznamů ve formátu JSON. Popisuje ji Hromadné potvrzení o doručení.

Kde se adresa nastavuje

Adresu si nastavíte sami v detailu své aplikace — na kartě Nastavení v části Web hooky u dlaždice Potvrzení o doručení. Do pole URL pro doručenky v okně, které se otevře, patří adresa začínající http:// nebo https://.

Okno Nastavení potvrzení o doručení s vypnutým hromadným zasíláním

Důležité

Zaškrtávátko Zasílat doručenky hromadně nechte vypnuté — s ním se způsob doručení změní na dávky metodou POST a platí Hromadné potvrzení o doručení.

Celý postup včetně ostatních voleb popisuje stránka Webhooky.

Parametry potvrzení o doručení

Parametr Hodnota
status Kód stavu zprávy — viz stavy doručení
smsID Jednoznačné ID zprávy
price Cena zprávy v kreditech
channel Kanál, kterým zpráva šla (sms, viber, whatsapp, rcs a další)
date Čas odeslání a doručení oddělený středníkem v časové zóně CET

Hodnota date má tvar RRMMDDHHMM;RRMMDDHHMM — například 1812141317;1812141318 znamená odesláno 14. 12. 2018 v 13:17 a doručeno o minutu později.

Parametry příchozí zprávy

Když má status hodnotu 10, nejde o doručenku, ale o zprávu od příjemce. Dorazí s jinou sadou parametrů:

Parametr Hodnota
status Vždy 10
from Telefonní číslo odesílatele
to Telefonní číslo příjemce, tedy vaše číslo
message Text zprávy v kódování UTF-8
channel Kanál, kterým zpráva přišla
smsdetails Podrobnosti včetně použitého protokolu a času přijetí

Stavy doručení

Kód Význam
1 Zpráva byla doručena
2 Zpráva čeká ve frontě na straně operátora — příjemce je momentálně nedostupný a doručení se zkusí znovu
3 Zprávu se nepodařilo doručit — příjemce je neznámý nebo trvale nedostupný
10 Příchozí zpráva nebo odpověď, ne doručenka
13 Zpráva byla přečtena (jen Viber)
Poznámka

Stav 2 není konečný — na tutéž zprávu vám později dorazí další požadavek s výsledným stavem. Počítejte s tím, že smsID uvidíte víckrát.

Ukázka zpracování

Skript rozliší doručenku od příchozí zprávy podle status a obojí zapíše do vlastního logu:

<?php declare(strict_types=1); const STATUS = [ 1 => 'doručeno', 2 => 'čeká u operátora', 3 => 'nedoručeno', 13 => 'přečteno', ]; $status = filter_input(INPUT_GET, 'status', FILTER_VALIDATE_INT); function log_line(string $file, string $message): void { file_put_contents( __DIR__ . "/$file.log", '[' . date('Y-m-d H:i:s') . '] ' . $message . PHP_EOL, FILE_APPEND ); } if ($status === 10) // příchozí zpráva { $from = filter_input(INPUT_GET, 'from') ?? ''; $message = filter_input(INPUT_GET, 'message') ?? ''; log_line('inbox', sprintf('Od: [%s] Zpráva: [%s]', $from, $message)); } else if (isset(STATUS[$status])) // potvrzení o doručení { $sms_id = filter_input(INPUT_GET, 'smsID') ?? ''; $price = filter_input(INPUT_GET, 'price', FILTER_VALIDATE_FLOAT) ?: 0.0; log_line('delivery', sprintf('Zpráva [%s]: %s, cena %.4f', $sms_id, STATUS[$status], $price)); } else { http_response_code(400); exit; }
Upozornění

Adresa musí odpovědět rychle a stavovým kódem 200. Pomalé nebo chybující zpracování zdržuje doručování dalších hlášení — náročnou práci proto odložte na frontu a požadavek rovnou potvrďte.

Byla tato stránka užitečná?