A única mudança incompatível
O Jasmin responde com uma string de onde você extrai um UUID. O FireFlo responde com um objeto.Jasmin
FireFlo
{"message": "…"} nos mesmos códigos de status.
Recibos de entrega: parecidos, não idênticos
Os nomes de campos seguem os do Jasmin, então um receptor que lêid e stat funciona sem
alterações. Duas diferenças:
Um corpo JSON, não campos de formulário
Um corpo JSON, não campos de formulário
O FireFlo envia POST como
application/json. Um receptor que faz parse de
application/x-www-form-urlencoded precisa ler JSON.Essa é a mudança mais fácil de passar batida, porque o receptor continua retornando 200 enquanto
não faz parse de nada.Não existe um campo `err`
Não existe um campo `err`
O Jasmin envia um. O resolver do FireFlo recebe apenas o estado de entrega e nunca um código de
erro, então emitir um seria inventá-lo.
stat ainda distingue UNDELIV, REJECTD e EXPIRED, que é a informação que de fato existe.dlr-level segue o significado do Jasmin: 1 a notificação em nível SMSC, 2 a terminal, 3
ambas. O padrão é 2. Qualquer coisa fora de 1–3 é 400.
Dois comportamentos diferentes
sms_count é "ND" porque o crédito é dinheiro, e quantas mensagens ele compra depende de onde
elas vão. Em vez de inventar um número, o campo diz que não está determinado.
402 é um status novo para tratar. Deliberadamente não foi juntado ao 403, onde seria
indistinguível de senha errada. Mas um cliente que trate todo 4xx igualmente vai repeti-lo para
sempre, e isso não pode ajudar.
O que você não precisa mudar
- Todos os caminhos:
/ping,/secure/send,/secure/sendbatch,/secure/balance,/secure/rate. Sem prefixo de versão. - HTTP Basic em
/secure/*. - Sublinhado e hífen são intercambiáveis, com
custom_tlvsmantendo o sublinhado, como no Jasmin. topode ser string ou número, e um array em um batch.globalsmesclado em cada mensagem, com os valores por mensagem vencendo.schedule_atnos formatos"3600s"e"YYYY-MM-DD HH:MM:SS".callback_url/errback_urlrecebendobatchId,to,status,statusText.- Não existe endpoint de status de batch, nem no Jasmin nem aqui.
Duas coisas que não são transferidas
Sem Celery e sem exigência de broker, o que é uma simplificação em todo lugar exceto na linha acima.Uma ordem de migração que funciona
1
Mude a extração do messageId
A única mudança incompatível. Faça primeiro; todo o resto continua funcionando enquanto você
faz.
2
Troque seu handler de recibos para JSON
E confirme olhando seus próprios logs, não checando se os recibos retornam 200. Eles retornam
das duas formas.
3
Adicione um branch para 402
Alerte em vez de repetir.
4
Revise qualquer código que lê sms_count
Ele agora é sempre
"ND".5
Rode os dois em paralelo em uma parcela pequena
Compare taxas de entrega sabendo que o FireFlo reporta o pior segmento de uma mensagem
longa, então seus números são legitimamente menores que um gateway que reporta o primeiro.
Relacionados
Visão geral da API
O envelope, a autenticação e as regras de nomes de campo em detalhes.
Recibos de entrega
O payload que o FireFlo envia, campo a campo.