Proč je těžké hromadně poslat SMS?
Může se zdát zvláštní, co je těžkého na odeslání většího množství SMS zpráv (řekněme například 100 000 SMS zpráv).
V zásadě existují vždy dvě možnosti. Odesílání strojově a odesílání z webové administrace.
Strojové odesílání
Strojové odesílání je většinou nejjednodušší způsob, jak odeslat SMS zprávy. V praxi získáte API klíč a následně si vytvoříte vlastní skript, který bude odesílat SMS zprávy.
Nejčastěji máte vlastní DB zákazníků a chcete jim poslat SMS zprávu s nějakým obchodním sdělením (např. v rámci Black Friday nebo Vánoční nabídky).
Na co si dát pozor?
-
Nejčastější chybou je testování, které omylem odešle zprávu na všechny telefony ve vaší DB. Může se to zdát nepravděpodobné ale v praxi se to stává velmi často i větším hráčům. Naposledy např. Alza odeslala stovky tisíc Push Notifikací svým zákazníkům s textem "Stress Test Title".
-
Další častou chybou je zacyklení odesílání. Pokud příjemce vyberete z databáze a následně na ně odesíláte zprávu, tak v případě, skript na odesílání nestihne doběhnout, začínáte při novém pokusu o odesílání znovu od začátku. Správné řešení je nejprve označit příjemce jako zprávy na které se bude odesílat a až po potvrzení odeslání zprávy, označit příjemce jako ty, které se již odeslaly.
-
Timeoutování při odesílání: Pokud je běžná doba odpovědi API 100ms, tak pro 100 000 SMS zpráv to znamená 10 000 sekund. To je 2,7 hodiny. Pokud by bylo možné odesílat 10 zpráv v jednom požadavku, tak se doba zkrátí na 10 000 požadavků a hruba 1000 sekund což je přibližně 16 minut. Takové časy jsou již relativně přijatelné, ale problém je v tom, že běžná konfigurace webového serveru pracuje s limity okolo 60 sekund na běh skriptu (např. Cloudflare podporuje maximálně 30 sekund). V takovém případě se můžete dostat do situace, kdy nevíte jaké zprávy se odeslaly a které ne.
Pokud použijete naše API pro hromadné odesílání, kde odesíláte až 100 zpráv v jednom požadavku, tak to pouze 1000 požadavků což by mělo trvat přibližně 100 sekund.
- Timeoutování API: V praxi se také můžete dostat do situace, kdy API přestane odpovídat nebo odpověď od serveru timeoutuje (je delší než 30-60 sekund). V takovém případě se opět můžete dostat do situace, kdy nevíte jaké zprávy se odeslaly a které ne a je velmi složité často rekonstruovat správný stav.
Celou řadu potenciálních problémů za váš vyřešíme:
- Duplicitní zprávy automaticky filtrujeme (v rámci časového slotu o velikosti 10-20 minut).
- Pokud použijete hromadné odesílání - zaslání 100 000 zpráv bude otázka jednotek minut, ale i v takovémto případě budete generovat řádově tisíce HTTP požadavků což může být problematické.
- Zvažte využití funkce Bulk upload
Bulk upload - nahrání souboru na server
Na svém serveru vygenerujte JSONL soubor (pozor, nejedná se o JSON soubor, ale o formát JSONL který obsahuje jednotlivé JSON objekty oddělené novým řádkem).
Tento soubor by měl obsahovat JSON řádky s běžnou strukturou dle naší dokumentace JSON API. Následně využijte metodu API "upload", která vám vygeneruje unikátní URL na kterou můžete nahrát připravený JSONL soubor.
100 000 zpráv v JSONL souboru může mít velikost kolem 15 MB. Díky tomu, že soubor budete nahrávat ze serveru, tak můžete očekávat, že nahrávání bude trvat jen jednotky sekund.
V tomto případě, máte kontrolu nad tím že soubor obsahuje ty kontakty, které potřebujte a také máte snadnou cestu k nahrání souboru na náš server. V praxi na to použijete jen jeden HTTP požadavek. Navíc máte jistotu, že jste předali všechny kontakty (nebo žádné, pokud by došlo k chybě při nahrávání).