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 com anos de experiência em e-mail e SMS — então, antes de você configurar qualquer coisa, uma verificação já é roteada de forma adequada em todos os países. A sua configuração e substituições por país são aplicadas por cima, e uma opção por requisição pode ajustar uma única chamada. Você nunca começa 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 e regras de código para toda a aplicação — a ordem dos canais, tamanho do código, TTL e tentativas que você quer em todos os lugares 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 padrões. Dois filtros decidem o que é permitido — eles limitam o plano resolvido em vez de fornecer valores que herdam para baixo:

Disponibilidade por país. Você só pode ativar canais que o Bird realmente oferece naquele país. Ativar um que não é suportado lá é 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 — você não precisa informá-lo. Defina uma rota para um país e ela substitui a ordem e os remetentes naquele local.

  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?+
É como 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 padrão da sua configuração, depois a base por país da Bird. O nível mais alto que define um valor prevalece, e tudo o que não definir passa 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 restante continua a herdar da sua configuração e da base da Bird, por isso uma substituição é uma alteração pequena e direcionada, não 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