Jornada ConnVC
Jornada ConnVCCentral de Ajuda
Jornada ConnVC
Jornada ConnVCCentral de Ajuda
Trilhas Recursos APIs

Nada encontrado por aqui.

Conexões ▸
Visão Geral Conexões WhatsApp ▸
Oficial x Não Oficial Entenda a API Oficial Portfólio Empresarial (BM) Janela de Atendimento Mensagem Template Adicionar WhatsApp Oficial Trazer um Número da API Oficial de Outra Plataforma ⚡️ Gestão de Templates ⚡️ Limitador de Mensagens Concatenador de Mensagens Modo Híbrido (Coex + QR CODE) Chat Externo por Link Verificar agora e Reconectar ⚡️ Avisos da Meta na Conexão ⚡️ Adicionar WhatsApp QRCode ⚡️ Perfil do Número ⚡️ Adicionar WhatsApp sem aparelho celular ⚡️ Número bloqueado no WhatsApp
Instagram ▸
Direct Comentários Automação "Eu quero" Posts do Instagram
Telegram Web Chat Como Migrar Conexões Chat Externo
Configurações ▸
Opções em Configurações ▸
Armazenamento Remoto de Arquivos Cloudflare R2 em Armazenamento Remoto Hetzner Object Storage em Armazenamento Remoto
Avaliações em Configurações Gerenciamento de Expediente em Configurações Gerenciamento de Grupos em Configurações Gerenciamento de Chamadas em Configurações Configurações do Bot em Configurações Opções de Permissões e Visualização do Atendente Configurações de Sistema em Configurações Sons e Notificações em Configurações Transferências em Configurações Carteiras de Clientes em Configurações Logs e Monitoramento em Configurações Contatos e Campos Adicionais em Configurações Mensagem de Aniversário em Configurações Webhooks e Eventos em Configurações Autenticação em Dois Fatores em Configurações Token da Empresa em Configurações
Gerenciador de Arquivos Setores & Chatbot ▸
Visão Geral Setores & Chatbot Categorias de Setores Geral em Setores & Chatbot Mensagens em Setores & Chatbot Horários em Setores & Chatbot Integrações em Setores & Chatbot Menu de Setores na Conexão Setor Único com Fluxo Automático
Quadro de Atendimentos ▸
Visão Geral do Quadro de Atendimentos Colunas do Quadro de Atendimentos Quem Enxerga Cada Quadro Regras do Quadro de Atendimentos
Meu Perfil ▸
Status do Perfil Editar Perfil ou Alterar Senha Recuperar Senha
Chats / Tickets ▸
Chats – Visão Geral Ticket x Protocolo 💡 Aguardando x Atendendo 💡 Informações do Ticket Informações do Contato Novo Chat Abrir Chat por Link Personalizado Ações de Mensagem Ações do Ticket – Devolver ao Setor – Transferir Ticket – Encerrar Ticket – Nova Oportunidade – Videochamada com o Cliente Alertas Vermelhos no Chat Pesquisar Atendimentos Gestão de atendimentos
Atendimento Otimizado ▸
Automação ou Atendente Humano 💡 Mensagem de Ausência Mensagem de Encerramento Mensagem de Aniversário Mustaches Encerrar por Inatividade (Atendendo) Avise-me Siga-me Avaliações Carteira de Clientes Rodízio de Atendimento
Ligações ▸
Entendendo VoIP Entendendo PABX PABX -> Ramais PABX -> Ligação VoIP PABX -> WhatsApp (QR Code) Pro PABX -> WhatsApp Oficial Oficial
Relatório do Rodízio Contatos ▸
Visão Geral Contatos Adicionar Contato Editar Contato Excluir Contato Bloquear Contato Pesquisar Contato Iniciar Conversa com um Contato Importar Contatos (planilha) Importar Contatos (telefone) Exportar Contatos
Tarefas ▸
Adicionar Tarefa ao Ticket Excluir Tarefa Comentar Tarefa Compartilhar Tarefa Concluir Tarefa
Agendamentos ▸
Visão Geral Agendamentos Adicionar Agendamento Editar Agendamento Excluir Agendamento
Tags ▸
Visão Geral Tags Tags de Atendimento Tags de Encerramento Tags de CRM Editar Tag Excluir Tag Kanban de Tags Pixel Meta em Tags Remarketing em Tags
Equipe ▸
Visão Geral Equipe Tipos de Perfil Registro de Atividades Geral em Equipe Setores e Conexões em Equipe Permissões em Equipe VoIP / Chamadas em Equipe Limite de Atendimentos Simultâneos Ações sobre um Usuário Usuário Não Consegue Entrar na Plataforma
CRM ▸
Visão Geral do CRM Permissões CRM Funis do CRM ▸
Criar e Editar Funil ⚡️ Etapas do Funil ⚡️ Encadear para Outro Funil ⚡️ Quem Acessa o Funil ⚡️ Webhook do Funil ⚡️ Importar do CRM v1 ⚡️
Cadastros do CRM Produtos do CRM Oportunidade no CRM ▸
Criar Oportunidade ⚡️ Itens e Valor da Oportunidade ⚡️ Atividades da Oportunidade ⚡️ Comentários e Anexos da Oportunidade ⚡️ Ganhar, Perder e Devolver Oportunidade ao Funil ⚡️ Lista de Oportunidades ⚡️
Board de Oportunidades ▸
Copilot da Raia ⚡️
Propostas do CRM ▸
Gerar e Enviar Proposta ⚡️ Dados da Proposta ⚡️
Relatório de Vendas Ranking de Vendas Auditoria de Vendas Minha Evolução ▸
Prêmios e Resgates Unidades, Equipes e Metas
Leads de Anúncio
Respostas Rápidas ▸
Resposta Rápida Envio de Texto Resposta Rápida Envio de Mídia Resposta Rápida Envio de Contato Resposta Rápida Envio de Localização Resposta Rápida de Fluxo Editar Resposta Rápida Excluir Resposta Rápida Ideias de Respostas Rápidas
Chat Interno Gravações das Chamadas PDV ▸
Visão Geral PDV Permissões PDV Opções do PDV Produtos e Estoque do PDV Caixa do PDV Pedido na Conversa Pagamentos do Pedido Venda no Balcão Painel de Pedidos Entregas e Entregadores Pedidos do PDV Relatório do PDV Categorias do PDV
Campanhas ▸
Configurar Campanhas Fontes de Contatos para Campanhas Nova Campanha Nova Campanha API Oficial
Inteligência Artificial ▸
* Pré-Requisitos IA Transcrever Áudios Análise de Atendimento GPT Assistant ▸
Tipo Prompt Tipo Agente OpenAI GPT Assistant em Grupos Comandos GPT Assistant
FlowBuilder ▾
Visão Geral FlowBuilder Como o Fluxo Roda Categorias de Fluxos Automações Rápidas Editor de Fluxos ▸
Como Usar o Editor de Fluxos Verificar e Resumo do Fluxo Erros do Fluxo
Pontos de Entrada (Gatilho) ▸
Gatilho via Conexão Gatilho via Bloco Trocar de Fluxo Gatilho via Remarketing de Tag Gatilho via Resposta Rápida Gatilho via Campanha Gatilho via API Gatilho via Webhooks Trigger Gatilho via Comentário do Instagram Gatilho via Avaliação
Blocos ▾
Conteúdo Mensagem Pergunta Mensagem Variável Dados Mensagem Menu Mensagem Roteador Botões Mensagem Enviar figurinha Mensagem Contato Mensagem Enviar Localização Mensagem Carrossel de Produtos Mensagem Template Mensagem Link do Chat Externo Mensagem Avaliação do Atendimento Mensagem Webview Mensagem Responder Comentário Mensagem Intervalo Dados Msg Interna Dados Tag Dados Remover Tag Dados Oportunidade Dados Condição Roteador Pular para Roteador Switch (tags) Roteador Randomizador Roteador Horário de Expediente Roteador É Seguidor? Roteador Execução de Código JS Dados Integração HTTP Request Dados Integração Pixel Meta Dados Integração Asaas Financeiro Integração Setor Atendimento Finalização Operador Atendimento Finalização Rodízio Atendimento Finalização Roteador GPT Assistant (OpenAI) Atendimento Finalização Retornar último atendimento Finalização Encerrar Finalização Encerrar Mensagem Rápida Finalização Trocar Fluxo Finalização Typebot Finalização PDV (pedido no fluxo)
Gestão de Links ▸
Visão Geral Gestão de Links Adicionar Link Editar Link Excluir Link Relatório do Link
Integrações ▸
Token da Conexão Token OpenAI Access Token Meta n8n via Webhook n8n via Flowbuilder Token Asaas Chave Google Maps Access Token Mercado Pago
Perguntas Frequentes ▸
Como atualizar o cache
Problema / Solução ▸
Aguardando mensagem. Essa ação pode levar alguns instantes. API não funciona Conexão desconectada Conexão não lê o QR CODE Mensagem não aparece no Aguardando Ticket em Atendimento voltando para o Aguardando Missing Body in Payload
Aplicativo ▸
Como Instalar o PWA Notificações Push
Vídeos Contato para Suporte Atualizações ▸
Outubro 2026 ▸
29/10/2026 28/10/2026 27/10/2026 26/10/2026 22/10/2026 21/10/2026 20/10/2026 19/10/2026 18/10/2026 17/10/2026 16/10/2026 15/10/2026
Precisa de ajuda?
(34) 3316-8070
FlowBuilder › Blocos › Execução de Código JS

Execução de Código JS

Dados Integração
🔍

🧩 O bloco Execução de Código JS roda um trecho de JavaScript no meio do fluxo. Serve para tratar um dado antes de usá-lo, como limpar um CPF ou pegar o DDD do telefone, e para chamar uma API escrevendo a chamada à mão.

O que o código devolve no return pode ser guardado por um bloco Variável logo depois. Para chamar uma API sem escrever código, use o bloco HTTP Request.

🏷️ Categoria: Dados - Integração

📋Resumo Prático

➡️ Acesse o menu FlowBuilder Nativo e abra o fluxo no editor.

➡️ Clique no + e escolha Execução de Código JS.

➡️ Escreva o código, use Testar Código e clique em Adicionar.

➡️ Para guardar o resultado, ligue um bloco Variável logo depois.

Como configurar o bloco Execução de Código JS

Acesse o menu FlowBuilder Nativo → editar fluxo → + → Execução de Código JS

🔘 Tipo: MENU ou REQUISIÇÃO. Para chamar um link externo, como nos exemplos abaixo, use REQUISIÇÃO, que processa o código na hora.

🔘 Webhook (JS Script): o código JavaScript. O valor do return é o resultado do bloco.

🔘 Testar Código: executa o código num ambiente de teste. A janela mostra as variáveis que encontrou no código e pede um Payload de Teste (JSON) com valores para elas.

🔲 Para finalizar, clique em Adicionar.

Os trechos entre {{...}} são substituídos pelos dados do atendimento quando o fluxo roda, e as variáveis do fluxo entram como %nome_da_variavel%. A variável do fluxo é trocada pelo valor dentro do próprio código, antes de ele rodar.

Como guardar o resultado numa variável

Ligue um bloco Variável logo depois da Execução de Código JS: ela grava o que o código devolveu no return.

Devolva no return um texto ou um número. Um objeto devolvido direto, como return { nome: 'Ana' }, aparece como [object Object] quando a variável é usada numa mensagem. Para guardar um JSON inteiro, devolva o JSON como texto, com return JSON.stringify(dados);.

Para usar um campo de um JSON guardado numa variável, escreva o campo depois de um ponto, direto na mensagem: %dados.nome%, e um campo dentro de outro, %dados.cidade.nome%. Dentro de um segundo bloco Execução de Código JS, o JSON.parse também lê a variável e devolve só o campo:

const d = JSON.parse('%dados%');
return d.nome;

O mesmo JSON.parse lê a resposta de um HTTP Request guardada em Variável Única, como JSON.parse('%httpResponse%').

Exemplo: chamar uma API da própria plataforma

// definir
let endpoint = "https://{{backendURL}}/api/url";
let method = "POST";
let payload = {
  "number": "{{number}}",
  "contactId": "{{contact_id}}",
  "name": "{{name}}",
  "firstName": "{{firstName}}",
  "ticketId": "{{ticket_id}}",
  "protocol": "{{protocol}}",
  "queueId": "{{queue}}",
  "userName": "{{user}}",
  "connectionName": "{{connection}}",
  "companyName": "{{name_company}}",
  "backendURL": "{{backendURL}}",
  "token": "{{connection_token}}",
  "dataHora": "{{data_hora}}"
  // apague ou insira outros payloads desejados aqui
};
let authorization = "{{connection_token}}";
// estrutura
try {
    const response = await axios({
      url: endpoint,
      method: method,
      headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + authorization
      },
      data: payload,
      maxBodyLength: Infinity
    });
    return JSON.stringify(response.data, null, 2);
} catch (error) {
    return "Algo deu errado: " + error.message;
}

O código monta o endereço com {{backendURL}}, envia os dados do atendimento e devolve a resposta como texto:

  • {{number}} — telefone do contato
  • {{contact_id}} e {{ticket_id}} — identificadores do contato e do atendimento
  • {{name}} e {{firstName}} — nome completo e primeiro nome do contato
  • {{protocol}} — protocolo do atendimento
  • {{connection_token}} — token da conexão, usado na autorização

Exemplo: chamar uma API ou URL externa

// definir
let endpoint = "https://enderecoExterno";
let method = "POST";
let payload = {
  "number": "{{number}}",
  "contactId": "{{contact_id}}",
  "name": "{{name}}",
  "firstName": "{{firstName}}",
  "ticketId": "{{ticket_id}}",
  "protocol": "{{protocol}}",
  "queueId": "{{queue}}",
  "userName": "{{user}}",
  "connectionName": "{{connection}}",
  "companyName": "{{name_company}}",
  "backendURL": "{{backendURL}}",
  "token": "{{connection_token}}",
  "dataHora": "{{data_hora}}"
  // apague ou insira outros payloads desejados aqui
};
// estrutura
try {
    const response = await axios({
      url: endpoint,
      method: method,
      headers: {
        'Content-Type': 'application/json'
      },
      data: payload,
      maxBodyLength: Infinity
    });
    return JSON.stringify(response.data, null, 2);
} catch (error) {
    return "Algo deu errado: " + error.message;
}

Igual ao anterior, mas o endereço é o do seu sistema e a chamada vai sem o token da plataforma.

Exemplos de tratamento de dados

Guardar um texto

let dados = "Meu nome é João";
return dados;

Pegar o DDD do contato

let meuNumero = "{{number}}";
const ddd = parseInt(meuNumero.substring(2, 4), 10);
return ddd;

Limpar e validar um CPF

function tratarEValidarCPF(valor) {
    let cpf = String(valor).replace(/\D/g, '');
    if (cpf.length !== 11 || /^(\d)\1{10}$/.test(cpf)) {
        return "CPF inválido!";
    }
    function validarDigito(base) {
        let soma = 0;
        let peso = base.length + 1;
        for (let i = 0; i < base.length; i++) {
            soma += parseInt(base[i]) * peso--;
        }
        let resto = soma % 11;
        return resto < 2 ? 0 : 11 - resto;
    }
    const digito1 = validarDigito(cpf.substring(0, 9));
    const digito2 = validarDigito(cpf.substring(0, 10));
    if (digito1 !== parseInt(cpf[9]) || digito2 !== parseInt(cpf[10])) {
        return "CPF inválido!";
    }
    return cpf.replace(/(\d{3})(\d{3})(\d{3})(\d{2})/, "$1.$2.$3-$4");
}
return tratarEValidarCPF("%cpf_tratar%");

O exemplo do CPF lê a variável %cpf_tratar%, guardada antes por um bloco Variável, e devolve o CPF formatado ou CPF inválido!.

Formatar um CNPJ

function tratarCNPJ(mensagem) {
    let cnpj = String(mensagem).replace(/\D/g, '');
    if (cnpj.length !== 14) {
        return "CNPJ inválido! Certifique-se de que digitou corretamente.";
    }
    return cnpj.replace(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/, "$1.$2.$3/$4-$5");
}
return tratarCNPJ("%resposta_cnpj_lead%");

Tirar as marcações HTML de um texto

function removeHTML(htmlString) {
    return String(htmlString).replace(/<[^>]*>/g, '');
}
return removeHTML("<p>Olá, <b>flowbuilders</b>!</p>");
❔Dúvidas Comuns

Qual a linguagem aceita pelo bloco Execução de Código JS? JavaScript.

Como guardo o resultado do bloco Execução de Código JS? Com um bloco Variável logo depois. A Variável grava o que o código devolveu no return.

Posso usar uma variável do fluxo dentro do código da Execução de Código JS? Pode. Escreva %nome_da_variavel% no código, como em JSON.parse('%dados%'): a variável é trocada pelo valor antes de o código rodar.

Posso chamar um endpoint da própria plataforma no bloco Execução de Código JS? Pode, inclusive usando os dados do atendimento entre {{...}} e as variáveis do fluxo entre %...%.

Prefiro não escrever código. Como chamo uma API? Use o bloco HTTP Request, que monta a chamada pelos campos da janela.

✖️Erros Comuns

[object Object] no texto: a mensagem mostra [object Object] no lugar do resultado. O código devolveu um objeto no return. Solução: devolva só o valor que vai usar, como return dados.nome, ou o JSON como texto, com return JSON.stringify(dados);.

← AnteriorÉ Seguidor? Próximo →HTTP Request