Diretrizes do template
O arquivo de origem deve ser criado seguindo estas especificações:Formato do arquivo
Apenas arquivos com a extensão.CSV são suportados.
Cabeçalho
A primeira linha do arquivo deve definir os nomes das colunas (cabeçalho). Siga estas regras para o cabeçalho:- Evite espaços em branco nos nomes das colunas.
- Não use caracteres especiais ou marcas de pontuação (ex.:
!, $, %, &, *, etc.). - Use apenas letras, números e underscores (
_) se necessário.
phone_number, customer_name, order_amount
Incorreto: phone number, customer-name!, order#amount
Primeira coluna
A primeira coluna deve conter o identificador de cada destinatário: um número de telefone ou um BSUID. Para números de telefone, é obrigatório incluir o código internacional sem o símbolo+ (por exemplo, para um número no Equador, escreva PHONE_NUMBER).
Não é possível usar BSUID para enviar plantillas da categoria AUTHENTICATION (OTP); esse destinatário deve ser enviado como número de telefone. Se uma linha com BSUID apontar para uma plantilla AUTHENTICATION, essa linha é omitida do envio sem afetar o restante do arquivo.
Colunas restantes
As outras colunas serão usadas para os valores dinâmicos dos parâmetros (personalização do template).Exemplo
Se o seu template contém o seguinte conteúdo:O arquivo CSV deve ser codificado em UTF-8.
Enviar HSM a partir de arquivo
Opções de upload de arquivo
Há duas formas de fornecer o arquivo CSV com informações dos destinatários:- Usando uma URL pública: Você pode fornecer a URL para o arquivo CSV que está disponível publicamente. Neste caso, o corpo da requisição deve estar no formato JSON.
-
Fazendo upload do arquivo: Alternativamente, você pode anexar o arquivo CSV diretamente à requisição. Neste caso, o corpo da requisição deve estar no formato
multipart/form-data.
Parâmetros do corpo
Exemplos de requisição
Por método de envio do arquivo
Enviar a partir de URL pública (JSON)
Enviar a partir de URL pública (JSON)
Enviar com arquivo anexado (multipart/form-data)
Enviar com arquivo anexado (multipart/form-data)
Por tipo de template
Cada exemplo usa um arquivo CSV publicado emfileUrl cujas colunas correspondem às indicadas em params.
Texto
Texto
Template:
Olá {{1}}, seu pedido {{2}} já está a caminho.Imagem
Imagem
Vídeo
Vídeo
Documento
Documento
Carrossel
Carrossel
Cada card define seu próprio recurso de mídia em
mediaUrl e seus botões em buttonParameters. O campo cardIndex indica a qual card cada botão pertence, começando em 0.Por cenário
Estes exemplos mostram o corpo JSON da requisição. Envie-o ao mesmo endpoint com o cabeçalhoContent-Type: application/json.
Botões de resposta rápida que ativam um workflow
Botões de resposta rápida que ativam um workflow
Cada botão com
payload.type igual a edge leva o destinatário ao workflow indicado em skillId. O texto de action deve corresponder ao texto do botão no template.Botão de URL dinâmica
Botão de URL dinâmica
O sufixo da URL é obtido da coluna do CSV indicada em
payload.param. Por exemplo, se o template define a URL https://solicitacoes.example.com/{{1}}, cada destinatário recebe seu próprio link.Parâmetro no cabeçalho
Parâmetro no cabeçalho
Para templates com uma variável no cabeçalho de texto, indique a coluna do CSV em
headerParameters.Direcionar a resposta para um workflow
Direcionar a resposta para um workflow
Com
actions.setSkill, a resposta do destinatário é direcionada ao workflow indicado.Salvar dados do CSV na memória e no CRM
Salvar dados do CSV na memória e no CRM
Use
{nome_coluna} como valor para obter o dado dessa coluna do CSV. setMemoryParams salva os valores na memória do usuário, e crmParams os salva nos campos do CRM.Envio agendado
Envio agendado
Com
date, você agenda a campanha para uma data e hora em UTC.Respostas do envio
200 - Resposta bem-sucedida
200 - Resposta bem-sucedida
400 - Requisição Inválida
400 - Requisição Inválida
401 - Não Autorizado
401 - Não Autorizado
422 - Entidade não processável
422 - Entidade não processável
Estrutura de params
Cada elemento no arrayparams é um objeto que contém:
- param: Número do parâmetro no template (1, 2, 3…).
- column: Nome da coluna no arquivo CSV da qual os valores serão extraídos.
headerParameters usa a mesma estrutura, mas aceita apenas um elemento.
Estrutura de buttonParameters
Cada elemento do array configura um botão do template. Resposta rápida (QUICK_REPLY):
- payload.type: Destino do botão.
edgeativa um workflow eflowativa um flow. - payload.action: Texto do botão. Deve corresponder ao texto definido no template.
- payload.skillId: ID do workflow ativado. Obrigatório quando
payload.typeéedge. - payload.flowId: ID do flow ativado. Obrigatório quando
payload.typeéflow. - payload.cardIndex: Posição do card ao qual o botão pertence, começando em
0. Somente para carrosséis.
URL):
- param: Número do parâmetro da URL no template.
- payload.param: Coluna do CSV com o valor que completa a URL.
Estrutura de cards
Cada card do carrossel é um objeto com:- mediaUrl: URL pública da imagem ou do vídeo do card.
- params: Parâmetros do corpo do card, com a mesma estrutura de
params. Use um array vazio se o card não tiver parâmetros. - buttonParameters: Botões do card. Cada
payloaddeve incluircardIndex.