Saltar para o conteúdo principal

Carga SFTP de Templates e Campanhas

Esta documentação orienta como usar os serviços automáticos de importação via SFTP para Templates e Campanhas no Robbu Maestro.

Configuração

A configuração de SFTP pode ser feita na seção Configurações > Empresa > Transferência de Arquivos A Gerente de Ambiente pode decidir se as assessorias poderão utilizar um SFTP próprio ou somente o gerenciado pela Robbu. Há duas formas de conectar um servidor SFTP ao Maestro:

SFTP Robbu

A Robbu disponibiliza um servidor SFTP gerenciado, pronto para uso imediato
  • Ao habilitar, o sistema fornece:
    • Servidor
    • Porta
    • Nome de usuário
    • Senha

SFTP Próprio

A própria empresa gerencia o seu SFTP.
⚠️ Atenção: Essa opção deve ser habilitada pela Gerente de Ambiente nas configurações de Ambiente
⚠️ Se algum parâmetro estiver em branco ou inválido, a importação será ignorada
Essa flexibilidade permite que cada empresa defina o modelo mais adequado ao seu nível de governança e requisitos de segurança.

Segurança

  • É fundamental manter as credenciais em segurança.
  • Garantir o correto uso de porta e endereço do servidor para estabelecer a conexão.
  • A proteção desses dados garante a integridade dos arquivos durante as transferências.

Diretórios

O Maestro utiliza a seguinte árvore de diretórios dentro do servidor SFTP
UsoCaminho SFTP
Templates a serem importados/maestro/templates
Campanhas a serem importadas/maestro/campaigns
Dentro de cada um dos diretórios acima, duas pastas serão criadas: /processed para identificar os arquivos importados com sucesso /error para identificar importações que não aconteceram e sinalizar qual foi o erro encontrado
⚠️ Estes diretórios são criados automaticamente após a conexão do servidor SFTP na tela de configuração, mas pode levar até 10 minutos para que esses diretórios apareçam.

Passo a passo

Importar campanhas

Siga as instruções abaixo para importar uma campanha para o Maestro usando o SFTP

Nome do arquivo

Não há uma nomenclatura específica a se seguir na importação de campanha, mas o nome do arquivo será o nome do Público importado, por isso recomendamos que seja um nome descritivo que possa identificar facilmente o mailing importado.
⚠️ É muito importante que o arquivo tenha um nome consistente com relação à extensão .csv.__ Verifique se a extensão não está duplicada, como em arquivo.csv.csv

Colunas do arquivo

As colunas abaixo são possíveis no arquivo
Descrição dos campos:
CampoObrigatórioDescrição
TIPO_DE_REGISTROTipo de contato (TELEFONE ou EMAIL).
VALOR_DO_REGISTROValor do contato (número com DDD ou e-mail).
CANALCanal da mensagem: whatsapp, email, sms ou rcs.
CODIGO_TEMPLATECódigo do template aprovado no Maestro (ex.: W0003, E0001).
CODIGO_TEMPLATE_EXTERNOCódigo externo do template (ex.: ID do template no sistema do cliente).
SEGMENTONome do segmento cadastrado no Maestro.
CPF_CNPJDocumento do cliente (para validações ou relatórios).
COD_CONTRATOCódigo do contrato do cliente.
REMETENTE⚠️ apenas WHATSAPPNúmero de envio no WhatsApp ou remetente configurado.
DATA_HORA_DISPAROData e hora de disparo no formato yyyy-MM-dd HH:mm:ss.
NOME_CLIENTENome do cliente para referência.
NOME_ARQUIVO_ANEXO❌ apenas EMAILArquivo inserido na mesma pasta do CSV no SFTP para ser adicionado como anexo em e-mail
SMS_FLASH❌ apenas SMSAtive para enviar mensagens de SMS Flash se a conta selecionada tiver essa opção disponível.
BROKER❌ apenas SMS/RCSNome do provedor cadastrado para forçar a saída do registro (ex.: Pontal, Classe A), exatamente como aparece em Configurações > Integração com provedores (sensível a maiúsculas/minúsculas e espaços). Vazio → roteamento por segmento. Demais canais ignoram o campo.
Var1…Var20Variáveis dinâmicas que alimentam os placeholders do template.
⚠️ Não é necessário que os campos estejam na ordem sugerida, mas os nomes das colunas devem ser exatamente como estão nesta documentação
Exemplo:

Fluxo de processamento

  1. Faça upload do arquivo .csv em /maestro/campaigns
  2. Um serviço rotineiro roda a cada 10 minutos e executa:
    • Cria diretórios processed e error se não existirem.
    • Busca arquivos .csv ainda não importados
  3. Durante a importação, algumas validações são executadas:
    • Nome do arquivo segue o padrão?
    • Cada linha do CSV cumpre as regras do ambiente?
      • Segmentos existem e assessoria possui permissão de acesso?
      • Templates estão aprovados?
      • Horários de saída são válidos?
      • Quando a coluna BROKER é informada (SMS/RCS): o nome corresponde a um provedor cadastrado e há perfil compatível com o segmento? Nome inválido ou provedor sem perfil rejeita o arquivo inteiro.
  4. Importação:
    • Cria um arquivo {nome original}_EXCEPTIONS.csv com todos os contatos que não foram processados pois quebraram regras.
      • Este arquivo contém a cópia da linha original com uma coluna adicional Motivo Falha exibindo o porquê do contato não ter sido processado
    • Há provedor para o canal configurado?
      • Se não, apenas cria um arquivo {nome original}_created.csv na pasta /processed com todos os contatos que foram processados
      • Se sim, cria os disparos e depois cria um arquivo {nome original}_VALIDATED.csv na pasta /processed com todos os contatos que foram processados
    • Os arquivos de anexos (se houver) são destruídos após o envio
  5. Se houver falha no arquivo inteiro
    • Gera {nome do arquivo original}_errorDetail.txt com mensagem de erro na pasta /error

Importar templates

Siga as instruções abaixo para importar templates para o Maestro usando o SFTP

Nome do arquivo

O nome do arquivo deve seguir a seguinte nomenclatura:
  • nome do segmento: nome exato do segmento configurado (Maestro/Segmentos).
  • canal: email | sms | whatsapp | rcs (case-insensitive).
  • nome da WABA (opcional, apenas WhatsApp): descrição da WABA.
  • data: data de referência com formato yyyyMMdd (ex: 20250531).
Exemplos
  • retail_email_20250510.csv
  • finance_sms_20250101.csv
  • store_whatsapp_MinhaWaba_20250320.csv

Colunas do arquivo

⚠️ Não é necessário que os campos estejam na ordem sugerida, mas os nomes das colunas devem ser exatamente como estão nesta documentação
As colunas abaixo são possíveis no arquivo: Templates WhatsApp:
CampoObrigatórioDescrição
TEMPLATE_NAME✅ (criação)Nome único do template (sem espaços, usar _ se necessário).
LANGUAGE✅ (criação)Idioma no formato pt_BR, en_US, etc.
CATEGORY✅ (criação)Categoria: MARKETING, UTILITY, AUTHENTICATION.
HEADER_TEXTTexto do cabeçalho (opcional).
BODY_TEXT✅ (criação)Texto do corpo da mensagem.
FOOTER_TEXTTexto do rodapé (opcional).
REPLYBUTTON_1Texto do botão de resposta rápida 1.
REPLYBUTTON_2Texto do botão de resposta rápida 2.
REPLYBUTTON_3Texto do botão de resposta rápida 3.
URL_BUTTONURL do botão de ação (se existir).
URL_BUTTON_TEXTTexto exibido no botão de URL.
TEMPLATE_STATUSStatus da revisão: APROVADO ou REJEITADO.
REASONSMotivos de reprovação separados por |. Cada motivo deve estar cadastrado no Maestro.
TEMPLATE_CODECódigo do template no Maestro. Usado para identificar o template na revisão.
EXTERNAL_CODEIdentificador externo do template (ex.: ID no sistema do cliente). Deve ser único.
Exemplo:
Templates de E-mail:
CampoObrigatórioDescrição
TEMPLATE_NAME✅ (criação)Nome único do template (sem espaços, usar _ se preciso).
SUBJECT✅ (criação)Assunto do e-mail.
BODY_HTML✅ (criação)Conteúdo do corpo em HTML (inline).
TEMPLATE_STATUSStatus da revisão: APROVADO ou REJEITADO.
REASONSMotivos de reprovação separados por |. Cada motivo deve estar cadastrado no Maestro.
TEMPLATE_CODECódigo do template no Maestro. Usado para identificar o template na revisão.
EXTERNAL_CODEIdentificador externo do template (ex.: ID no sistema do cliente). Deve ser único.
Exemplo:
Templates de SMS:
CampoObrigatórioDescrição
TEMPLATE_NAME✅ (criação)Nome único do template (sem espaços, usar _ se preciso).
TEXT_BODY✅ (criação)Texto do corpo do SMS, pode conter variáveis dinâmicas (ex.: {{1}}).
TEMPLATE_STATUSStatus da revisão: APROVADO ou REJEITADO.
REASONSMotivos de reprovação separados por |. Cada motivo deve estar cadastrado no Maestro.
TEMPLATE_CODECódigo do template no Maestro. Usado para identificar o template na revisão.
EXTERNAL_CODEIdentificador externo do template (ex.: ID no sistema do cliente). Deve ser único.
Exemplo:
Templates de RCS:
CampoObrigatórioDescrição
TEMPLATE_NAME✅ (criação)Nome único do template (sem espaços, usar _ se preciso).
MESSAGE_TYPETipo da mensagem RCS: Texto simples, Sugestão ou RichCard.
MESSAGETexto do corpo da mensagem. Pode conter variáveis dinâmicas (ex.: {{1}}).
TITLETítulo do cartão. Usado principalmente em RichCard.
FALLBACKTexto alternativo exibido quando o dispositivo/operadora do destinatário não suporta o recurso RCS.
SUGGESTION_x_TITLETexto exibido no botão de sugestão x (1 a 4).
SUGGESTION_x_TYPETipo da ação da sugestão x: Resposta rápida, Abrir URL, Ligar, Criar evento, Compartilhar localização ou Ver localização.
SUGGESTION_x_VALUEValor da ação correspondente ao tipo (ex.: URL para Abrir URL, telefone para Ligar). Fica vazio quando o tipo for Resposta rápida.
TEMPLATE_STATUSStatus da revisão: APROVADO ou REJEITADO.
REASONSMotivos de reprovação separados por |. Cada motivo deve estar cadastrado no Maestro.
TEMPLATE_CODECódigo do template no Maestro. Usado para identificar o template na revisão.
EXTERNAL_CODEIdentificador externo do template (ex.: ID no sistema do cliente). Deve ser único.
⚠️ Regra específica do RCS: via importação, os templates dos tipos Texto simples e Sugestão podem ser criados e revisados. O template do tipo RichCard é apenas revisado; isso significa que o template RichCard importado já deve existir no Maestro.
Exemplo:

Fluxo de processamento

  1. Faça upload do .csv em /maestro/templates
  2. Um serviço rotineiro roda a cada 10 minutos e executa:
    • Cria diretórios processed e error se não existirem.
    • Busca arquivos .csv ainda não importados
  3. Durante a importação, algumas validações são executadas:
    • Nome do arquivo segue o padrão?
    • Segmento existe e assessoria possui permissão de acesso?
    • Campos obrigatórios para o cenário identificado estão presentes?
  4. Importação — o comportamento varia conforme os campos informados (veja Fluxos abaixo).
  5. Move o .csv para:
    • /processed em caso de sucesso.
    • /error em caso de falha.
      • Gera {nome do arquivo original}_errorDetail.txt com mensagem de erro.

Fluxos

O comportamento do Maestro para cada linha do arquivo é determinado pela combinação de campos presentes:
SituaçãoAção do Maestro
Template não existe + TEMPLATE_STATUS ausenteCria o template
Template não existe + TEMPLATE_STATUS informadoCria e revisa
Template existe + TEMPLATE_STATUS informadoApenas revisa
Template existe + TEMPLATE_STATUS ausenteErro
⚠️ RCS: templates com MESSAGE_TYPE igual a Texto simples ou Sugestão seguem a tabela acima (criação e revisão). Já o tipo RichCard é apenas revisado — não é criado pela importação.
Identificação do template existente — o Maestro busca pelo template na seguinte ordem:
  1. TEMPLATE_CODE (código interno do Maestro)
  2. EXTERNAL_CODE (identificador externo)
  3. Se nenhum dos dois for informado → novo template será criado

Regras

  • TEMPLATE_STATUS: aceita apenas APROVADO ou REJEITADO.
  • REASONS: obrigatório quando TEMPLATE_STATUS=REJEITADO. Informe ao menos um motivo; motivos múltiplos devem ser separados por |.
  • Cada motivo informado em REASONS deve estar previamente cadastrado no Maestro.
  • O template existente deve estar com status Em Revisão para ser revisado.
  • EXTERNAL_CODE deve ser único por empresa.
  • Se qualquer linha do arquivo contiver erro, nenhuma linha é processada.

FAQ

Não. O arquivo será rejeitado e movido para a pasta error com um _errorDetail.txt.
Não. O sistema os cria automaticamente quando não existirem.
Não. Arquivos em processed não são reprocessados. Para enviar novamente, gere um novo .csv.
A cada 10 minutos, via rotina automática.