SMS

O que é um SMSC?

Um SMSC é um serviço de rede que armazena mensagens de texto e as encaminha para entrega.

Um texto pode chegar depois que o telefone se reconecta, mesmo que o remetente o tenha enviado antes.

O que significa armazenar e encaminhar?

O centro de mensagens salva um texto antes de tentar entregá-lo ao telefone.

A aceitação pela rede não confirma que o telefone recebeu o texto. Um telefone desligado ou inacessível pode deixar a mensagem em espera. Reconectar o telefone torna possível uma nova tentativa de entrega. A mensagem precisa continuar elegível para essa tentativa.

A especificação 3GPP 23.040 descreve o papel do centro em SMS.

Por quanto tempo uma mensagem pode esperar?

A rede pode fazer novas tentativas de entrega enquanto a janela de entrega da mensagem permanece aberta. Essa janela é chamada de período de validade.

O padrão SMS permite que remetentes informem um período de validade. Seu provedor decide se você pode defini-lo por meio da API dele.

A entrega pode resultar em expiração quando essa janela se fecha. Um relatório de expiração não significa que a solicitação de envio original falhou.

Em um fluxo sensível ao tempo, o prazo da própria aplicação ainda precisa ser aplicado. Se um código de verificação é válido por dez minutos e chega após quatro horas, seu servidor deve rejeitá-lo. Um texto atrasado não deve estender o tempo de vida da ação que ele descreve.

Onde o centro se posiciona em relação à minha aplicação?

Sua aplicação pode alcançar um centro de mensagens por meio de um provedor de mensagens, em vez de gerenciar a conexão com a operadora diretamente.

Provedores usam SMPP para enviar textos a centros de mensagens, diretamente ou por meio de outros serviços de roteamento. A referência SMPP descreve essas conexões.

Seu provedor pode confirmar uma solicitação antes de o próximo serviço de rede aceitá-la. O centro de mensagens pode então aceitar o texto antes de o telefone recebê-lo. Cada confirmação descreve uma etapa do percurso.

Aceito, mas não entregue explica como essas etapas aparecem em uma aplicação.

O que posso observar pelo Bird?

Você pode inspecionar a transferência para a operadora e a entrega reportada sem se conectar a um centro de mensagens.

O campo sent_at da resposta da mensagem registra quando Bird entrega a mensagem à operadora. delivered_at registra a entrega confirmada. Ambos os campos contêm um timestamp ou null. A ausência de um horário de entrega não significa que o telefone rejeitou o texto.

O endpoint de envio de Bird rejeita validity_period com HTTP 422 SMSUnsupportedFeature. Você não pode definir a janela de retenção da operadora por meio desse campo. A resposta não retorna esse campo.

Bird emite sms.expired quando a operadora reporta expiração. Um recibo em buffer, ou seja, quando a operadora retém o texto, não produz mudança pública de status. Recibos de entrega explica quais relatórios da rede chegam à sua aplicação.

O que isso muda em um fluxo de envio?

Sua aplicação precisa tratar a entrega como um evento posterior, com um resultado separado do envio.

Mantenha um resultado pendente distinto de uma falha. Aplique prazos para códigos de verificação e outras ações sensíveis ao tempo na sua aplicação. Use um recibo de entrega como o relatório da rede sobre a entrega. Ele não prova que alguém leu o texto.

Em resumo

  1. Aceitação e entrega são etapas separadas.

    Um centro de mensagens pode aceitar um texto antes de o telefone do destinatário ficar acessível.

  2. O armazenamento dá à entrega outra oportunidade.

    Um texto em espera pode chegar depois que o telefone se reconecta, desde que a janela de entrega ainda esteja aberta.

  3. A janela de entrega é finita.

    A rede pode reportar expiração quando o período de espera termina.

  4. Sua integração não precisa se conectar diretamente.

    Um provedor de mensagens pode gerenciar a conexão entre sua aplicação e a rede da operadora.

Construa na mesma rede.

Uma chave de API de teste é sua imediatamente. A produção é desbloqueada quando adicionar um método de pagamento e verificar um remetente.

Sua próxima ideia.
Pronta para conectar.