Přeskočit na hlavní obsah

Proč je těžké hromadně poslat SMS?

· 3 minuty čtení

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í).