L’unique changement cassant
Jasmin répond avec une chaîne dont vous extrayez un UUID. FireFlo répond avec un objet.Jasmin
FireFlo
{"message": "…"} aux mêmes codes de statut.
Accusés de livraison : proches, pas identiques
Les noms de champs suivent ceux de Jasmin, donc un récepteur qui litid et stat fonctionne sans
changement. Deux différences :
Un corps JSON, pas des champs de formulaire
Un corps JSON, pas des champs de formulaire
FireFlo poste
application/json. Un récepteur qui parse application/x-www-form-urlencoded doit
lire du JSON à la place.C’est le changement le plus susceptible d’être manqué, car le récepteur continue de renvoyer 200
tout en ne parsant rien.Il n'y a pas de champ `err`
Il n'y a pas de champ `err`
Jasmin en envoie un. Le résolveur de FireFlo reçoit seulement l’état de livraison et jamais de code
d’erreur, donc en émettre un signifierait l’inventer.
stat distingue toujours UNDELIV, REJECTD et EXPIRED, ce qui est l’information qui existe
réellement.dlr-level suit la signification de Jasmin — 1 la notification au niveau SMSC, 2 la
notification terminale, 3 les deux — et vaut 2 par défaut. Tout ce qui est hors de 1–3 est
un 400.
Deux comportements qui diffèrent
sms_count vaut "ND" parce que le crédit est de l’argent, et combien de messages il achète
dépend de leur destination. Plutôt que d’inventer un nombre, le champ dit qu’il n’est pas déterminé.
402 est un nouveau statut à gérer. Il n’est délibérément pas replié dans 403, où il serait
indiscernable d’un mauvais mot de passe. Mais un client qui traite tous les 4xx de la même façon le
réessayera pour toujours, ce qui ne peut aider.
Ce que vous n’avez pas à changer
- Chaque chemin :
/ping,/secure/send,/secure/sendbatch,/secure/balance,/secure/rate. Pas de préfixe de version. - HTTP Basic sur
/secure/*. - Underscore et hyphen sont interchangeables — avec
custom_tlvsqui garde son underscore, comme dans Jasmin. topeut être une chaîne ou un nombre, et un tableau dans un batch.globalsfusionné dans chaque message, les valeurs par-message gagnant.schedule_atdans les deux formes"3600s"et"YYYY-MM-DD HH:MM:SS".callback_url/errback_urlrecevantbatchId,to,status,statusText.- Il n’y a pas d’endpoint d’état de batch — ni dans Jasmin, ni ici.
Deux choses qui ne sont pas reprises
Pas de Celery et pas d’exigence de broker, ce qui est une simplification partout sauf sur la ligne ci-dessus.Un ordre de migration qui fonctionne
1
Changez l'extraction du messageId
Le seul changement cassant. Faites-le d’abord ; tout le reste fonctionne encore pendant que
vous le faites.
2
Passez votre gestionnaire d'accusés en JSON
Et confirmez-le en regardant vos propres logs, pas en vérifiant que les accusés renvoient 200.
Ils le feront de toute façon.
3
Ajoutez une branche 402
Alertez plutôt que de réessayer.
4
Revérifiez tout ce qui lit sms_count
Il vaut désormais toujours
"ND".5
Faites tourner les deux en parallèle sur une petite part
Comparez les taux de livraison en sachant que FireFlo rapporte le pire segment d’un long
message. Ses chiffres sont donc légitimement plus bas qu’une passerelle qui rapporte le premier.
Voir aussi
Vue d'ensemble de l'API
L’enveloppe, l’auth et les règles de nommage des champs en détail.
Accusés de livraison
La charge utile que FireFlo envoie, champ par champ.