> For the complete documentation index, see [llms.txt](https://help.hyperflow.global/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.hyperflow.global/docs/builder-hyperflow/gerenciamento-de-aplicativos/fluxos/acao/executar-codigo.md).

# Executar código

![](/files/ea27dda2b2dcd61156472e24f3f084e4ecc8ce97)

![](/files/06fea95b29ea54243d499dd682737c3a9b931cf4)

![](/files/43bff7955a266f37e566cc0e98efdd0f6dccfd1c)

## ⚡ Executar Código

O módulo **Executar Código** permite adicionar funções JavaScript personalizadas diretamente no seu fluxo. Use-o para aplicar regras de negócio, formatar dados, fazer cálculos ou transformar informações antes de enviá-las para o próximo passo do atendimento.

**📷 Inserir print:** visão geral do módulo Executar Código posicionado no canvas do fluxo, com as duas conexões de saída visíveis

***

### 📍 Como acessar

1. No menu lateral, clique em **Gerenciamento de aplicativos**.
2. Clique em **Fluxos** e abra o fluxo que deseja editar.
3. No painel lateral esquerdo, localize a categoria **Ação**.
4. Arraste o módulo **Executar Código** para o canvas do fluxo.

**📷 Inserir print:** painel lateral esquerdo com a categoria Ação expandida e o módulo Executar Código visível

***

### 🧩 Conhecendo o módulo

#### 1️⃣ Editor de código

Ao clicar no módulo no canvas, um painel de configuração será exibido. Nele você encontra um editor de código onde escreve a função JavaScript que será executada quando o fluxo chegar a esse passo.

**📷 Inserir print:** painel de configuração do módulo aberto com o editor de código em evidência

O editor oferece:

* Realce de sintaxe para facilitar a leitura do código
* Identação automática ao pressionar Enter
* Salvamento automático das alterações

O código deve seguir o seguinte formato:

```javascript
(input, user, flow, env) => {
  // escreva sua lógica aqui
  return resultado;
}
```

{% hint style="info" %}
O comando `return` é obrigatório. O valor retornado pela função é o que será enviado para o próximo módulo do fluxo. Sem ele, nenhum dado seguirá adiante.
{% endhint %}

***

#### 2️⃣ Variáveis disponíveis no código

Dentro do código, você tem acesso a quatro variáveis que o fluxo passa automaticamente para a função:

**📷 Inserir print:** editor com exemplo de código usando as variáveis input, user, flow e env

| Variável | O que contém                                                                         |
| -------- | ------------------------------------------------------------------------------------ |
| `input`  | Dados de entrada que chegaram ao módulo neste passo do fluxo                         |
| `user`   | Informações do usuário em atendimento: nome, identificador, dados extras cadastrados |
| `flow`   | Variáveis e contexto do fluxo em andamento                                           |
| `env`    | Variáveis de ambiente configuradas na plataforma                                     |

{% hint style="warning" %}
Essas variáveis são **somente leitura** — você não pode alterá-las diretamente. Para transformar os dados, crie novas variáveis locais dentro do código e retorne o resultado com `return`.
{% endhint %}

***

#### 3️⃣ Ferramentas disponíveis no código

Você pode usar as seguintes ferramentas diretamente no código, sem precisar instalar ou importar nada:

**📷 Inserir print:** editor com exemplo de uso de ferramentas disponíveis (ex.: formatação de data com moment)

| Ferramenta                   | Para que serve                                                  |
| ---------------------------- | --------------------------------------------------------------- |
| `moment` e `moment-timezone` | Trabalhar com datas e horários, incluindo fusos horários        |
| `_` (Lodash)                 | Manipular listas, objetos e textos de forma simplificada        |
| `uuid`                       | Gerar identificadores únicos para registros                     |
| `Intl`                       | Formatar números, datas e valores monetários por região         |
| `console.log()`              | Registrar mensagens para facilitar a identificação de problemas |

***

#### 4️⃣ Saídas do módulo

O módulo possui duas saídas que direcionam o fluxo dependendo do resultado da execução:

**📷 Inserir print:** módulo no canvas com as duas conexões de saída (Sucesso e Erro) visíveis e conectadas a outros módulos

**🎯 Propósito**

Definir o caminho que o fluxo vai seguir dependendo se o código foi executado com sucesso ou se ocorreu um problema.

**✅ Como fazer na tela**

Conecte cada saída ao próximo módulo de acordo com o cenário desejado:

1. Arraste a conexão da saída **Sucesso** para o módulo que deve continuar o fluxo quando tudo correr bem.
2. Arraste a conexão da saída **Erro** para o módulo responsável por tratar falhas ou informar o usuário sobre o problema.

**📌 Resultado esperado**

| Saída       | Quando é ativada                       | O que é enviado ao próximo módulo        |
| ----------- | -------------------------------------- | ---------------------------------------- |
| **Sucesso** | O código foi executado sem erros       | O valor retornado pela função (`return`) |
| **Erro**    | Ocorreu um problema durante a execução | Um objeto com a descrição do erro        |

{% hint style="warning" %}
O módulo tem um limite de **30 segundos** de execução. Se o código demorar mais do que isso, a saída **Erro** será ativada automaticamente.
{% endhint %}

***

### 💡 Dicas úteis

* **Sempre use `return`:** sem esse comando, o fluxo não receberá nenhum dado e a execução pode falhar.
* **Trate erros com `try/catch`:** para situações previsíveis de falha, use `try/catch` dentro do código. Assim você decide o que enviar ao próximo módulo em vez de cair automaticamente na saída de **Erro**.
* **Use `console.log()` para identificar problemas:** as mensagens aparecem nos registros de execução do fluxo e ajudam a localizar erros rapidamente.
* **Não modifique as variáveis diretamente:** `input`, `user`, `flow` e `env` são somente leitura. Copie os dados que você precisa e trabalhe com as cópias.
* **Atenção ao tempo limite:** operações lentas podem ultrapassar o limite de 30 segundos. Para chamadas a serviços externos, prefira usar o módulo de **Requisição** (HTTP).

***

### 🧪 Caso de uso

**Objetivo:** personalizar a saudação de abertura do atendimento exibindo apenas o primeiro nome do usuário.

**Configuração no módulo:**

```javascript
(input, user, flow, env) => {
  const nomeCompleto = user.name || '';
  const primeiroNome = nomeCompleto.split(' ')[0];
  return { primeiroNome };
}
```

**📷 Inserir print:** editor com o código do caso de uso digitado e a saída Sucesso conectada ao módulo de mensagem seguinte

**Resultado esperado no fluxo:** a saída **Sucesso** é ativada e o próximo módulo recebe o objeto `{ primeiroNome: "Rafael" }`. Esse valor pode ser usado em uma mensagem de texto como *"Olá, {{primeiroNome}}! Como posso te ajudar hoje?"*, tornando o atendimento mais personalizado e humanizado.

***

### 📋 Resumo

* O módulo **Executar Código** permite rodar funções JavaScript personalizadas dentro do fluxo de atendimento.
* As variáveis `input`, `user`, `flow` e `env` estão disponíveis automaticamente com os dados do contexto atual do fluxo — todas somente leitura.
* As ferramentas `moment`, `_` (Lodash), `uuid` e `Intl` já estão disponíveis sem necessidade de importação.
* O módulo possui duas saídas: **Sucesso** (execução sem erros) e **Erro** (falha ou tempo limite excedido).
* O limite de execução é de **30 segundos** — códigos mais lentos ativam a saída de Erro automaticamente.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.hyperflow.global/docs/builder-hyperflow/gerenciamento-de-aplicativos/fluxos/acao/executar-codigo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
