Sign inGet Started

Templates SMS

Um template é uma mensagem reutilizável que você envia por referência, fornecendo valores como um código de verificação de uso único ou número de pedido. Os templates system integrados do Bird cobrem mensagens de autenticação e transacionais. A criação de templates no espaço de trabalho está em preview API; o dashboard continua exibindo o catálogo integrado.
Um template fornece a categoria de mensagem usada nas verificações de conformidade do destino. Templates integrados também selecionam o remetente para o destino, então você omite from. Templates de espaço de trabalho exigem seu próprio remetente, assim como um envio de texto livre.
A página Templates em SMS lista os templates integrados. Pesquise por nome ou filtre por status e categoria.
A aba Templates SMS: uma caixa de busca com filtros de Status e Category acima de uma tabela de templates, cada linha mostrando um nome, um status Active, uma categoria, um chip de idioma EN e um escopo System, nas colunas Name, Status, Category, Language, Scope e Updated.
Cada linha mostra os campos necessários para escolher e enviar um template:
  • Name: o nome de exibição do template e seu slug (por exemplo bird_order_confirmation). O slug é o identificador que você passa ao enviar; ele é fixado na criação.
  • Status: templates integrados estão Active e prontos para envio. Templates de espaço de trabalho ficam em Draft até serem publicados, depois Active. Trate o campo de status compartilhado como um conjunto aberto.
  • Category: a classificação de conteúdo (transactional, marketing ou authentication) aplicada às mensagens enviadas a partir do template.
  • Language: os idiomas em que o template está disponível, como tags BCP 47. Os primeiros são exibidos como chips, com um overflow +N quando o template é localizado em muitos idiomas.
  • Scope: System para templates integrados do Bird. Workspace identifica templates que você cria através do preview API.
  • Updated: quando o template foi alterado pela última vez. Templates integrados não exibem data.

O que há em um template

Além do nome, categoria e idiomas, cada template define as variáveis que preenche no momento do envio. Uma variável tem key, type, flag required e uma constraint legível. Templates integrados têm slots tipados; templates de espaço de trabalho inferem slots genéricos text e aceitam valores de parâmetro escalares. Uma variável sensitive é substituída no conteúdo armazenado da mensagem. As filas de transporte ainda carregam o texto necessário para a entrega. Forneça todas as variáveis obrigatórias e nenhuma chave não declarada.
Um template é disponibilizado em um ou mais idiomas, e seu default_language é o que um envio recebe quando não especifica nenhum. Solicite um idioma em que o template não está disponível e Bird faz fallback: primeiro para uma forma mais ampla do mesmo idioma, depois para o idioma padrão, porque templates SMS definem on_missing_language como fallback. Templates integrados usam language_source_required: false. Templates de espaço de trabalho podem exigir um idioma ou definir on_missing_language: fail; essas políticas entram em vigor imediatamente, enquanto alterações de conteúdo e de idioma padrão entram em vigor na publicação.

Listando templates a partir da API

GET /v1/sms/templates retorna uma página paginada por cursor de resumos de templates. Siga next_cursor usando starting_after até que seja null; uma página não é o catálogo inteiro. A leitura de templates requer uma chave API com o escopo sms_management, que é separado do escopo sms usado por um envio. Filtre por scope, category, status ou language, ou pesquise com q:
for await (const tpl of bird.smsTemplates.list({ scope: "system" })) {
  console.log(tpl.id, tpl.slug);
}
Os resumos de templates contêm identidade, categoria, status, idiomas disponíveis e referências de versão draft/live. Eles omitem texto-fonte e variáveis. Busque um template por slug ou ID com GET /v1/sms/templates/{template_ref}. Use seu draft_version_id para inspecionar conteúdo editável do espaço de trabalho, ou seu live_version_id para inspecionar o que os envios usam. Um novo template de espaço de trabalho não tem versão live até a publicação.
Leia a versão selecionada através de GET /v1/sms/templates/{template_ref}/versions/{version_id}. A resposta contém variáveis e um mapa de conteúdo indexado por idioma. Para buscar um idioma, anexe /languages/{language}. O filtro language da lista corresponde ao conteúdo publicado; idiomas somente em draft não correspondem.
Templates integrados expõem uma única versão somente leitura. Seu ID estável identifica a entrada no catálogo; seu hash de conteúdo distingue atualizações de fonte. Versões publicadas de espaço de trabalho preservam histórico imutável. Listas de versões também usam paginação por cursor e omitem texto-fonte.

Criação no espaço de trabalho em preview API

Use uma chave API com acesso de escrita sms_management. Envie solicitações JSON para o host regional API da sua chave, com Authorization: Bearer <API_KEY> e Content-Type: application/json. Atribua a cada mutação sua própria Idempotency-Key; reutilize essa chave apenas ao tentar novamente a mesma solicitação.
  1. Crie o template com POST /v1/sms/templates e {"slug":"order-shipped","category":"transactional"}. A resposta 201 contém id e draft_version_id; o template começa com um rascunho em inglês em branco. Salve ambos os IDs para as próximas chamadas.
  2. Salve o texto com PUT /v1/sms/templates/{id}/versions/{draft_version_id}/languages/en e {"text":"Your order {{ order_number }} has shipped."}. A resposta 200 inclui draft_revision.
  3. Publique com POST /v1/sms/templates/{id}/versions/{draft_version_id}/submit, passando essa revisão como {"expected_revision":1} (substitua 1 pelo valor retornado). Uma resposta 200 com valid: true identifica a versão publicada. Uma 422 reporta conteúdo de rascunho inválido; corrija os problemas de idioma retornados e envie novamente com uma nova chave de idempotência.
A publicação exige texto não vazio e as mesmas variáveis em todos os idiomas. Ela entra em vigor de forma síncrona, sem aprovação do provedor. A API também suporta preview, duplicação, redefinição do rascunho para o conteúdo live e rollback para uma versão publicada. A edição pelo dashboard não está disponível.
Leia a revisão atual antes de atualizar as configurações do template ou fazer rollback. Salvamentos de idioma também podem incluir um guard de revisão; um guard desatualizado retorna 409. O preview usa a versão selecionada e os parâmetros para reportar texto renderizado, idioma resolvido, codificação e contagem de segmentos antes do envio.

Enviando com um template

Defina o objeto template do envio em vez de text. Omita category e media_urls. Para o template integrado abaixo, omita from também. Um template de espaço de trabalho requer from e precisa ter uma versão publicada.
Um template integrado de autenticação também seleciona a marca compartilhada do remetente: bird_otp_verification_ttl usa Authifly, enquanto bird_otp_verification_ttl_bird_verify usa Bird Verify. O destino determina se o remetente aparece como nome de marca, short code ou número de telefone.
Envie um template integrado:
await bird.sms.send({
  to: "+14155550100",
  template: { slug: "bird_otp_verification", parameters: { code: "123456" } },
});
slug é o handle do template no catálogo (você pode identificar um template pelo id em vez disso). language seleciona o corpo localizado; omita-o para o idioma padrão do template. parameters fornece um valor para cada variável do template, indexado pelo nome da variável. Uma variável obrigatória ausente, uma chave não declarada, um valor que não corresponde à restrição da variável ou um objeto parameters acima de 16 KB serializado é rejeitado com 422.
A resposta 202 inclui o from selecionado, categoria do template, IDs de template e versão, hash de fonte e idiomas solicitados/resolvidos. O texto de mensagens de autenticação é retornado como **REDACTED**. Mensagens aceitas retêm o conteúdo renderizado e a versão selecionada mesmo que você publique, faça rollback ou exclua o template posteriormente.
Todo o restante do envio (o destinatário, tags, metadados, a lista de destinos permitidos e o modelo assíncrono 202) funciona exatamente como em um envio de texto livre.

Próximos passos

  • Enviando SMS: adicione o campo template ao payload de envio.
  • Log de SMS: encontre uma mensagem enviada e acompanhe seu ciclo de vida.
  • Eventos: receba os eventos de entrega de cada mensagem.
  • Enviar um SMS com um template: um vídeo que envia um dos templates pré-aprovados a partir de um terminal