API & automatizare
Cum trimit notificări automate din propriul sistem?
Automatizarea nu e „un buton de trimitere într-un for”. Un flux care rezistă în producție tratează patru lucruri: autentificarea, idempotența, reîncercările și statusul de livrare returnat asincron.
Răspuns scurt
Fluxul standard are trei pași: generezi credențiale, le schimbi pe un token, apoi apelezi endpointul canalului dorit.
- 1Generează în panoul de administrare o pereche de credențiale pentru API (identificator de client și secret).
- 2Schimbă credențialele pe un token de acces, printr-un apel de autentificare.
- 3Trimite mesajul cu un apel HTTP către endpointul canalului: SMS sau WhatsApp, cu token-ul în antetul de autorizare.
- 4Tratează răspunsul: păstrează identificatorul de mesaj returnat, ca să poți corela ulterior statusul de livrare.
- 5Fă apelurile idempotente pe partea ta: o reîncercare după un timeout nu trebuie să trimită de două ori același mesaj către client.
Ce trebuie tratat într-o integrare de producție
| Autentificare | Token cu durată limitată, reînnoit automat. Secretul nu se ține în codul aplicației web. |
|---|---|
| Idempotență | O cheie proprie per mesaj logic, ca o reîncercare să nu producă un al doilea SMS. |
| Reîncercări | Doar pentru erori temporare. Un număr invalid nu devine valid la a treia încercare, dar se taxează de fiecare dată. |
| Limitarea ratei | API-ul are o limită pe minut; fluxul tău trebuie să o respecte, nu să o descopere prin erori. |
| Statusul de livrare | Vine asincron. Corelează-l pe identificatorul de mesaj, nu presupune livrarea din codul de răspuns al apelului. |
| Separarea fluxurilor | Mesajele tranzacționale și cele comerciale merg pe căi distincte, cu verificări distincte de consimțământ. |
Exemple practice
Confirmare de comandă din magazinul propriu
La finalizarea comenzii, aplicația apelează endpointul de SMS cu numărul clientului și textul confirmării. Identificatorul de mesaj se salvează lângă comandă, pentru diagnostic ulterior.
Alertă de termen din propria bază de date
Un job zilnic selectează termenele care expiră în 14, 7 și 1 zi și trimite câte un mesaj. Cheia de idempotență include id-ul termenului și pragul, ca o repornire a jobului să nu dubleze alertele.
Cod de autentificare la login
Apel sincron, cu latență mică, pe canal tranzacțional. Codul are durată de viață scurtă, iar formularul limitează numărul de cereri pe număr.
Greșeli frecvente
Se ține secretul în frontend
Credențialele de API aparțin serverului. Expuse în browser sau într-o aplicație mobilă, pot fi folosite de oricine le extrage.
Reîncercare fără cheie de idempotență
Un timeout de rețea urmat de o reîncercare trimite al doilea mesaj către client. La coduri OTP, asta invalidează primul cod și confuzează utilizatorul.
Se presupune livrarea din codul 200
Un răspuns de succes confirmă acceptarea mesajului, nu livrarea lui. Livrarea se confirmă separat, prin status.
Se reîncearcă și erorile permanente
Numerele invalide consumă buget la fiecare încercare. Separă erorile temporare de cele definitive și oprește-te la a doua categorie.
Se ignoră limitarea ratei
Un import care trimite mii de mesaje într-o buclă strânsă lovește limita și pierde mesaje. Coada trebuie ritmată de partea ta.
Cum te ajută 4notify
4notify expune un API extern pentru trimitere programatică, cu credențiale generate de tine în panou.
- →Credențialele se generează și se revocă din panou, per aplicație, deci o cheie compromisă nu cere schimbarea întregii integrări.
- →Token-ul de acces are durată limitată și scopuri pe canale, deci o cheie de SMS nu deblochează alte canale.
- →API-ul are limitare de rată explicită, iar fiecare trimitere întoarce un identificator de mesaj pe care se corelează statusul de livrare.
- →Consumul e contorizat per mesaj, iar un eșec de trimitere restituie creditul în loc să îl consume.