O formato do remetente determina se as respostas têm um endereço. Um número SMS elegível pode receber uma mensagem; um nome alfanumérico não pode.
A distinção parece um recurso que você ativa. Na verdade, é mais parecida com uma propriedade física do que você usou para enviar, com uma política por país aplicada por cima.
O que torna um remetente unidirecional?
Não ter um endereço por trás dele.
Uma resposta é uma mensagem endereçada a quem enviou a última. Quando o remetente era um número, esse endereço existe e o aparelho pode usá-lo. Quando o remetente era um sender ID alfanumérico, não há número para endereçar, e o próprio modelo do Bird registra essa ausência diretamente: o código de país desse remetente é null, descrito como "the country of the number this sender sends from", e ele não carrega um number id porque "an alphanumeric sender has no number behind it".
Então o primeiro corte é estrutural. Códigos longos, números toll-free e short codes podem receber. Um remetente alfanumérico não pode, em nenhum país, sob nenhum registro.
O segundo corte é por país. Cada tipo de remetente que um destino suporta informa um direction de one_way ou two_way, então um tipo de número que aceita respostas em um destino pode ser somente envio em outro. A política SMS do país também tem seu próprio flag is_two_way_supported. Ambos são valores por destino que mudam, então são publicados em destinos SMS em vez de listados aqui; cada página de destino informa se o envio bidirecional é suportado.
Como uma resposta chega à minha aplicação?
Como um evento, enviado a você, com a mensagem já armazenada.
Quando um assinante envia uma mensagem para um dos seus números, Bird armazena a mensagem junto com seus envios e emite sms.received. O payload carrega o corpo, a divisão em segmentos, ambos os números e a operadora quando a operadora a reporta. Não há nada para consultar.
Uma coisa acontece antes de esse evento chegar a você, e ela muda o que você deve fazer no handler. Bird avalia a resposta contra as regras de palavras-chave daquele número primeiro. Uma palavra-chave de parada reconhecida registra uma supressão de remetente-e-assinante e envia a confirmação de opt-out, e ainda assim emite sms.received. Então uma mensagem de entrada que era um opt-out chega ao seu endpoint parecendo qualquer outra mensagem de entrada, já processada.
A consequência para o seu código: não trate todo sms.received como um turno de conversa. Alguns deles são opt-outs que Bird já processou, e reenviar qualquer coisa em resposta a um deles é o erro que esse padrão convida. O que é uma palavra-chave STOP cobre quais palavras-chave são reconhecidas, onde, e o que acontece em um país fora do catálogo.
De qual remetente eu respondo?
Use o número que a pessoa contatou quando ele ainda for elegível, para que a resposta continue reconhecível. Seu aplicativo envia pelo endpoint público SMS com as verificações habituais de remetente, destino e destinatário.
As confirmações de palavras-chave integradas de Bird têm um contexto de resposta interno separado. Esse contexto não é um campo que sua solicitação API pode reivindicar. Ele não permite uma resposta conversacional nem que uma campanha ignore registro, acesso ao destino ou o opt-out de uma pessoa.
Antes de responder, classifique a mensagem recebida. Uma solicitação de STOP ou de ajuda deve seguir seu fluxo de tratamento aplicável, em vez de disparar uma resposta automatizada não relacionada. Requisitos de remetente e tratamento de palavras-chave descrevem as verificações relevantes.
O que o envio bidirecional me custa que o unidirecional não custa?
Quatro coisas, nenhuma delas opcional depois que você aceita respostas.
- Um endpoint que verifica e processa eventos de forma confiável. Mensagens de entrada são enviadas por push; leve em conta tentativas repetidas e entregas duplicadas. Tratamento de webhooks cobre assinaturas, tentativas repetidas e replay. A identidade do evento está no header
webhook-id, fora do corpo. Use esse valor como sua chave de deduplicação. - Um número em cada destino que precise de um. Um remetente alfanumérico não pode fazer parte de um programa bidirecional, então uma campanha que os mistura precisa de um plano para os destinos onde apenas o nome está disponível. Usar envio unidirecional também não é uma forma de escapar da obrigação: um regime que concede o direito de opt-out pode exigir que um remetente unidirecional informe que respostas não funcionam e ofereça outra via, o que o que é o TCPA detalha.
- Tratamento das mensagens que você não projetou para receber. Pessoas respondem a notificações. Algumas dessas respostas são perguntas, algumas são opt-outs e algumas não são nenhuma das duas.
- Leitura do lado de entrada dos seus próprios números. Bird reporta o volume de entrada separadamente do de saída, então um programa bidirecional tem um segundo conjunto de números para monitorar.
Se nada disso se aplica, envio unidirecional não é um rebaixamento. É o compromisso menor, e um remetente alfanumérico garante um nome reconhecível no campo de remetente nos destinos que o suportam. Qual tipo de remetente devo usar traz a comparação completa, e envio bidirecional via SMS cobre o que Bird oferece para o lado de resposta.
Em resumo
Unidirecional é uma propriedade do remetente, não uma configuração.
Um nome não tem endereço, então nada pode ser enviado de volta a ele. Um remetente numérico ainda precisa de capacidade SMS e de uma rota de entrada; um remetente alfanumérico não pode receber respostas.
Um destino pode ser unidirecional para um tipo que ele normalmente suporta.
Cada tipo de remetente que um país suporta reporta sua própria direção, então o mesmo tipo de número pode ser bidirecional em um destino e unidirecional em outro.
Uma resposta chega como um evento, não como uma consulta.
Bird armazena a mensagem de entrada e emite
sms.receivedcom o corpo, a divisão em segmentos, ambos os números e a operadora quando a operadora a reporta.Sua resposta via API é um envio com suas próprias verificações.
Use um remetente elegível e respeite a solicitação do destinatário. Confirmações internas de palavras-chave não concedem ao seu aplicativo uma isenção de registro ou de supressão.