IOSOR Ghiduri
Webhook-uri SMS de intrare: reîncercări, ordinea evenimentelor, și idempotență la recepție
Un ghid de construcție pentru echipele B2B care gestionează SMS-uri de intrare: de ce apar reîncercările, de ce ordinea evenimentelor nu este garantată, și cum să faceți endpoint-ul dumneavoastră de recepție idempotent în loc să duplicați conversațiile și gestionarea STOP.
Fiecare handler pentru mesajele primite se lovește inevitabil de trei mari provocări: webhook-uri duplicate, evenimente sosite într-o ordine incorectă și procesarea repetată a comenzilor de tip STOP. Aceste situații nu sunt erori, ci comportamentul firesc al oricărui sistem de livrare de tipul cel puțin o dată. Endpoint-ul dumneavoastră de recepție trebuie să fie proiectat special pentru a gestiona nativ reîncercările și idempotența încă din prima zi.
De ce webhook-urile reîncearcă deloc
Un furnizor de webhook nu poate ști cu certitudine dacă endpoint-ul dumneavoastră a procesat o livrare. Serverul dumneavoastră poate returna un 200 după ce a comis într-o bază de date care apoi este anulată; un load balancer poate pierde răspunsul pe drumul de întoarcere chiar dacă handler-ul dumneavoastră a avut succes; o implementare poate reporni procesul dumneavoastră în mijlocul unei cereri.
Cele trei moduri de eșec pentru care trebuie să proiectați
| Mod de eșec | Ce se întâmplă | Ce se strică dacă îl ignorați |
|---|---|---|
| Livrare duplicată | Același ID de eveniment sosește de 2+ ori | Răspunsuri numărate dublu, procesare STOP duplicată, fire de conversație duplicate |
| Evenimente în afara ordinii | Un eveniment cu marcaj temporal ulterior sosește înainte de unul anterior | Un status "delivered" este suprascris înapoi la "sent" |
| Eșec |
Idempotență: singura proprietate care rezolvă toate trei
Un endpoint de recepție idempotent produce aceeași stare finală indiferent de câte ori este livrat același eveniment. Mecanismul este simplu și bine înțeles: fiecare eveniment de intrare poartă un ID unic de eveniment; înainte de procesare, verificați dacă ați înregistrat deja acel ID; dacă da, returnați succes imediat fără reprocesare. 1.
Ordinea evenimentelor: de ce "ultima scriere câștigă" este periculos
Evenimentele webhook pentru același mesaj nu sunt garantate să sosească în ordinea în care s-au întâmplat. O reîncercare a unui eveniment anterior "queued" poate sosi după un eveniment ulterior "delivered" din cauza jitter-ului de rețea, coadă pe partea furnizorului, sau propriul dumneavoastră pool de workeri care procesează cereri în afara ordinii.
STOP, HELP, și alte cuvinte cheie de intrare necesită aceeași disciplină
Cuvintele cheie de intrare critice pentru conformitate merită cea mai strictă idempotență dintre toate. Un STOP duplicat nu ar trebui niciodată să înregistreze de două ori un eveniment de opt-out sau să trimită două răspunsuri de confirmare. Un HELP duplicat nu ar trebui niciodată să declanșeze două mesaje separate de informații de suport către același număr în același minut.
Începeți cu IOSOR
Trageți jurnalele webhook inbound de săptămâna trecută și numărați ID-urile de eveniment venite de mai multe ori. Reluați un dublu și o pereche în afara ordinii (failed, apoi delivered). Receptorul păstrează un efect: un rând inbox, o scriere STOP, o atingere de portofel. Last-write-wins care anulează STOP pică. Este idempotență la primire și ordine de reîncercări, nu validare de semnătură și nu lacăt de gateway înainte de coadă.
- Săptămâna pilot inbound: Verificări MO live pe DID-ul închiriat
- politica cuvintelor STOP și HELP
- Credențiale sandbox care nu ard Live debit
Rezumat IOSOR
Webhook-urile inbound reîncearcă. Idempotența la primire e singurul răspuns sigur; ordinea nu e promisiune.
Faceți: cheiați evenimentul și ignorați geamănul. Nu faceți: last-write-wins pe STOP nici două debite pentru același eveniment.
A fost util acest ghid?
Ghiduri conexe
- Configurarea declanșatoarelor SMS pentru apeluri vocale inbound ratate
Aflați cum să configurați declanșatoare SMS automate pentru apeluri vocale inbound ratate și semnale de ocupat în consola CPaaS white-label IOSOR.
- Buffer pentru procesarea webhook-urilor inbound împotriva vârfurilor de latență a operatorilor
Aflați cum să configurați regulile de buffer inbound IOSOR pentru a vă proteja webhook-urile împotriva întârzierilor de livrare, vârfurilor de concurență și erorilor de timeout.
- Sincronizarea cuvintelor cheie de dezabonare în conturi multi-tenant în IOSOR
Stăpâniți sincronizarea dezabonărilor multi-tenant în IOSOR. Aflați cum cuvintele cheie de oprire gestionează supresiile globale izolând sub-conturile.