NicoChatNicoChatDocumentaçãoBuscar na documentação…
Entrar

Função JavaScript

O NicoChat agora permite que seus usuários executem lógica de fluxo complexa usando a ação JavaScript. Os usuários podem escrever código JavaScript para montar diversos fluxos complexos e fórmulas que o NicoChat ainda não suporta nativamente.

2026-09-07

Selecionando o nó de ação JavaScript

Crie um bloco de nó de ação, clique em Ações avançadas e selecione o nó Função JavaScript.

Nó Função JavaScript

Uma função JavaScript funciona exatamente como uma função. Todos os parâmetros passam primeiro por parse no bloco JavaScript antes de poderem ser usados. A parte superior da ação é usada para a entrada.

Nome do parâmetro: adicione o nome da variável que você está passando por parse.

Valor do parâmetro: adicione o campo do contato que você quer passar por parse na função JavaScript.

Valor de Teste: adicione um valor de teste que pode ser usado aqui para rodar testes.

O bloco de função suporta várias bibliotecas JavaScript.

Essas bibliotecas JavaScript estendem a funcionalidade do bloco de função nativo.

Estas são as bibliotecas disponíveis, com a versão que o bloco carrega:

Biblioteca
Versão
Para quê
Lodash
4.17.21
utilitários de array, objeto e string: map, groupBy, cloneDeep
Collect.js
4.36.1
coleções encadeáveis, no estilo do Laravel
CryptoJS
4.2.0
hash e criptografia: MD5, SHA, HMAC, AES
Day.js
1.11.13
datas e horas com API leve — a escolha padrão para código novo
Compromise
14.14.0
NLP em inglês: extrai nomes, datas e substantivos de um texto
Chrono
2.6.1
lê data escrita em linguagem natural ("amanhã às 15h") e devolve um Date
Cheerio
1.0.0-rc.12
percorre e extrai dados de HTML com sintaxe de jQuery
jsonwebtoken
9.0.3
assina e verifica JWT
Jsrsasign
11.1.0
criptografia, certificados X.509 e JWS/JWT em JavaScript puro
libphonenumber-js
1.10.21
valida e formata número de telefone por país
Moment.js
2.30.1
datas e horas; o projeto está em modo legado, prefira o Day.js
Sentiment
5.0.2
pontua o sentimento de um texto, do negativo ao positivo

Marque no bloco as bibliotecas que o código vai usar — só as selecionadas ficam disponíveis na execução.

No bloco de função, você pode escrever seu código JavaScript.

Depois de escrever o código, você sempre precisa retornar o valor, porque o bloco de função funciona como uma função comum.

Observação: métodos nativos de JavaScript que exigem um navegador, como o console.log, não funcionam no nó Função JavaScript.

Você pode mapear os resultados do seu código para atualizar determinados campos do contato.

Observação: ao manipular JSONs, todos eles precisam passar por parse antes de serem usados dentro do código.

Como os parâmetros chegam ao código

Todo valor de parâmetro chega ao código como texto, mesmo quando a variável guarda um número, uma lista ou um JSON. Antes de percorrer um array ou ler as chaves de um objeto, converta com JSON.parse.

js
// carrinho chega como texto: '[{"preco":30,"qtd":2},{"preco":15,"qtd":1}]'
const itens = JSON.parse(carrinho);

return {
  total: itens.reduce(function (s, i) { return s + i.preco * i.qtd; }, 0),
  quantidade: itens.length
};

O nome do parâmetro já existe como variável dentro do código — não declare de novo. Escrever const carrinho = ... para um parâmetro chamado carrinho quebra a execução.

O código não resolve {{variável}}: o que está escrito no editor vale como texto literal. Os dados do contato entram apenas pelo campo Valor do parâmetro, e é lá que a variável é substituída.

O retorno e o mapeamento

O que a função devolve é entregue dentro de result. No mapeamento, a chave total de um objeto retornado tem o caminho $.result.total — se você escrever só total ou $.total, o NicoChat completa para a forma certa.

Retorno no código
Caminho no mapeamento
O que é salvo
return 45;
$.result
o número 45
return { total: 45 };
$.result.total
o número 45
return ['a', 'b'];
$.result[0]
o texto a
return { itens: [...] };
$.result.itens
a lista inteira, em JSON

Mapear $.result sozinho salva o objeto ou o array inteiro em uma única variável. Para gravar cada pedaço em um campo diferente, retorne um objeto e mapeie chave por chave.

Limites do bloco

  • Sem acesso à rede. Para chamar uma API, use o bloco Solicitação Externa (API) e traga o resultado para cá.
  • Tempo de execução curto, em torno de 5 segundos. Laço infinito ou processamento pesado é interrompido.
  • eval não é permitido.
  • Nada que dependa do navegador: console.log, document e window não existem aqui.

Trabalhar com JSON

Não existe um bloco dedicado a manipular JSON no NicoChat: somar, contar, achar o maior valor, extrair uma chave ou remover um item é trabalho para este bloco. Depois do JSON.parse, é JavaScript comum.

O que você quer
Como fazer
Somar ou contar
reduce e length
Maior ou menor valor
Math.max e Math.min sobre um map
Extrair uma coluna da lista
map
Listar as chaves de um objeto
Object.keys
Pegar um item pelo valor de uma chave
find
Remover itens por uma condição
filter

Os dois lugares onde se escreve JavaScript

Além deste bloco, há JavaScript no pré-processamento do bloco Solicitação Externa (API). Os dois não se comportam igual, e trocar um pelo outro é a causa mais comum de mapeamento vazio.

Função JavaScript
Pré-processamento da API
Entrada
os parâmetros que você declara, sempre como texto — JSON precisa de JSON.parse
a variável payload, com a resposta da API já pronta para uso
Retorno
vai para result — mapeie $.result.<chave>
fica na raiz — mapeie $.<chave>
Para quê
transformar dados que já estão no fluxo
tratar a resposta de uma API antes de mapear