Orquestração de canais

Em pré-visualização

Comece com os nossos padrões. Altere apenas o que precisar.

Configure em:
Cursor

Disponibilidade de canais, regras de remetentes e regulamentações variam por país, e acertar tudo isso leva anos de trabalho. O Bird entrega isso como uma configuração base por país: quais canais funcionam onde, quais remetentes são permitidos e padrões de código sensatos. As suas definições são aplicadas por cima. Você altera uma coisa para um país; tudo o que não tocar herda da camada abaixo. Isso é roteamento por país como um recurso de primeira classe da API — o controle que a maioria das APIs de verificação não oferece.

verify.ts
200 · pending
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

// Send the code, then check it by recipient.
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
}).safe();

const { data } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();

Você herda os padrões do Bird e constrói sobre eles.

Cada verificação na Bird Verify API resolve as suas definições através de uma cascata. Na base está uma configuração por país que o Bird mantém a partir de anos de experiência com email e SMS — por isso, antes de configurar o que quer que seja, uma verificação já é encaminhada de forma sensata em todos os países. A sua configuração e as substituições por país sobrepõem-se por cima, e uma opção por pedido pode ajustar uma chamada individual. Nunca parte do zero, e só é responsável pelas decisões que realmente quer tomar.

A cascata de valores.

A camada mais alta que define um valor prevalece; qualquer coisa que você não definir herda da camada abaixo.

  1. 01

    Opções por requisição.

    Campos na chamada de criação (tamanho do código, preferência de canal, idioma) prevalecem para aquela verificação específica. A substituição mais leve e mais local.

  2. 02

    As suas substituições por país.

    Altere a ordem dos canais ou um remetente para um país. Uma substituição é mesclada: ela altera apenas os campos que você definir, e o restante daquele país continua herdando da camada abaixo.

  3. 03

    Os seus padrões de configuração.

    O seu plano global e regras de código: a ordem dos canais, comprimento do código, TTL e tentativas que pretende em todo o lado onde não definiu uma substituição por país.

  4. 04

    Base por país do Bird.

    A camada inferior: os padrões por país do próprio Bird, criados a partir da operação de e-mail e SMS em escala. Tudo o que você não definir herda desta camada, então uma verificação sempre resolve para um plano adequado.

Substitua um país, herde o resto.

Defina o seu plano uma vez e altere apenas os países que precisam de algo diferente. Aqui o Brasil começa com WhatsApp, depois SMS; todos os outros países continuam herdando dos seus padrões e da base do Bird.

orchestration.ts
200
// Your app-wide default plan.
await bird.verify.verifications.configurations.update("vfc_login", {
  channels: [
    { channel: "email", state: "enabled" },
    { channel: "sms", state: "enabled" },
  ],
}).safe();

// Override one country; the rest inherits.
await bird.verify.verifications.configurations.countries.upsert("vfc_login", "BR", {
  channels: [
    { channel: "whatsapp", state: "enabled" },
    { channel: "sms", state: "enabled" },
  ],
}).safe();

O que uma verificação resolve.

Um número brasileiro sob esta configuração resolve através da cascata. A substituição do BR ordena WhatsApp e depois SMS, ambos estão disponíveis, e a verificação reporta o plano ordenado que será usado, com o seu id tipado vrf_.

resolved.ts
200
const { data } = await bird.verify.verifications.create({
  configuration_id: "vfc_login",
  to: { phone_number: "+5511998765432" }, // Brazil
}).safe();

// Resolved through the cascade + availability/kill-switch ceilings:
// {
//   id:           "vrf_01k2m9q8e7fh3v0b7m4d2a9xzt",
//   status:       "pending",
//   channels:     [{ channel: "whatsapp" }, { channel: "sms" }],
//   last_channel: "whatsapp"
// }

Dois limites acima da cascata.

A cascata decide os valores por defeito. Dois filtros decidem o que é permitido. Eles limitam o plano resolvido em vez de fornecer valores que se propagam:

Disponibilidade por país. Só pode ativar canais que o Bird realmente oferece num país. Ativar um que não suportamos nesse país é uma operação sem efeito, não uma falha silenciosa: a disponibilidade é uma interseção, nunca uma substituição.

Interruptor global. Quando um provedor tem um incidente, o Bird pode desativar um canal em todos os lugares de uma vez. A sua configuração não é alterada; o plano resolvido simplesmente recorre ao próximo canal e é restaurado quando o interruptor é liberado.

Roteamento que você define, não um ticket que você abre.

Resolvido por verificação, retornado na resposta.

  1. 01

    Rotas por país, pelo número.

    O país é derivado do número E.164 do destinatário. Não precisa de o indicar. Defina uma rota para um país e esta substitui a ordem e os remetentes nesse país.

  2. 02

    Ative e desative canais.

    Cada canal possui um estado ativado/desativado, para que você possa desligar um canal para um país sem perder a sua posição no plano.

  3. 03

    O plano resolvido está na resposta.

    Cada verificação reporta os canais ordenados para os quais resolveu, então o que a cascata decidiu nunca é um mistério.

  4. 04

    O failover automático está sendo implementado.

    O avanço orientado por entrega através do plano (tentar o próximo canal quando um não chega) está sendo implementado à medida que o status de entrega é disponibilizado. O plano já é resolvido e retornado hoje.

FAQ sobre orquestração de canais

O que é a cascata de configuração?
É assim que as definições de uma verificação são resolvidas: opções por pedido, depois as suas substituições por país, depois os valores por defeito da sua configuração e, por fim, a base por país do Bird. O nível mais alto que define um valor prevalece, e tudo o que deixar por definir propaga-se para o nível abaixo — assim, só configura o que quer alterar.
O que me oferece a base por país da Bird?
Um ponto de partida sensato em todos os países, sem qualquer configuração: quais canais vale a pena tentar, quais remetentes são permitidos e padrões de código razoáveis, mantidos pela Bird com base em anos de experiência com email e SMS. Constrói em cima disso em vez de redescobrir tudo.
Uma substituição por país substitui o plano inteiro?
Não. É uma fusão. Define os campos que diferem para esse país e o resto continua a herdar da sua configuração e da base do Bird — por isso, uma substituição é uma alteração pequena e direcionada em vez de uma re-especificação completa.
Posso ativar um canal que a Bird não oferece num país?
Não. A disponibilidade por país é um teto, não um padrão: só pode ativar o que a Bird suporta nesse país. Ativar um canal indisponível é uma operação sem efeito em vez de uma falha silenciosa, para que um plano nunca prometa um canal que não consegue realmente enviar.
Como é determinado o país?
A partir do número de telefone E.164 do destinatário, no momento da resolução. Não precisa de passar um país; a Bird deriva-o e aplica a rota correspondente. O email é independente do país.
De quem é que os meus utilizadores veem o código?
Authifly, a marca de verificação da Bird. É a identidade em cada código que os seus utilizadores recebem: o email chega de otp@verify.authifly.com ou do seu próprio domínio verificado, e SMS e WhatsApp têm a marca Authifly. authifly.com é uma página pública que assegura aos destinatários que a Authifly envia códigos de uso único legítimos em nome de uma empresa. A Bird é a plataforma sobre a qual constrói; a Authifly é o que o destinatário vê.

O controlo por país que nenhuma outra API de verificação lhe oferece.

A orquestração é uma capacidade do Bird Verify: os canais, o código e os limites vêm incluídos, nos mesmos dois endpoints.

Comece com um canal.
Adicione os outros quando estiver pronto.

Uma chave API de teste é sua imediatamente. A produção é desbloqueada quando você adiciona um método de pagamento e verifica um remetente.

Usa Claude Code, Cursor ou Codex? Copie um prompt de configuração e o seu agente instala o Bird CLI e as skills por si. Escolha o seu:

Cursor