> 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/resposta/binario.md).

# Binário

O módulo **Binario** permite que o seu chatbot envie uma resposta estruturada para um sistema externo durante a execução do fluxo. Com ele, você define o código de status da resposta, os cabeçalhos e o conteúdo do corpo — ideal para situações em que o fluxo é acionado por uma requisição externa e precisa devolver dados em formato binário (como arquivos, imagens ou conteúdo bruto não formatado como JSON).

<figure><img src="https://3829578295-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRWteFkm020DS5IbXoSgj%2Fuploads%2FsYRBPe5gkGoua22w43yF%2Fimage.png?alt=media&amp;token=97fcab05-daff-4e4d-91fa-071354a3fadf" alt=""><figcaption><p>Imagem 1 - Visão geral do nó Binário no canvas do Builder.</p></figcaption></figure>

***

### 🗂️ Como acessar

1. No menu lateral, clique em **Aplicativo**.
2. Em seguida, clique em **Fluxos**.
3. Abra o fluxo desejado ou crie um novo.
4. No canvas do Builder, clique no botão **+** para adicionar um novo nó.
5. Localize e selecione **Binary** na lista de módulos disponíveis.

<figure><img src="https://3829578295-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRWteFkm020DS5IbXoSgj%2Fuploads%2Fw9DpRMa9L1j2lx9nL0js%2Fimage.png?alt=media&amp;token=98a72e14-c3c4-4409-93a1-c48679a703a5" alt=""><figcaption><p>Imagem 2 - Lista de módulos com o item Binário destacado.</p></figcaption></figure>

{% hint style="warning" %}
**Pré-requisito:** Este módulo é utilizado em fluxos acionados por sistemas externos via requisição HTTP. Certifique-se de que o fluxo está configurado para receber chamadas externas antes de adicionar o módulo Binary.
{% endhint %}

***

### 🧩 Conhecendo o módulo

Ao adicionar o módulo ao fluxo, um painel de configuração é aberto. Nele, você define o código de status da resposta, os cabeçalhos HTTP e o conteúdo do corpo. Todos os campos de texto aceitam variáveis do fluxo, permitindo que a resposta seja montada de forma dinâmica com informações coletadas durante a conversa.

<figure><img src="https://3829578295-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRWteFkm020DS5IbXoSgj%2Fuploads%2FDLQjYmYwWrmRZjzEPia9%2Fimage.png?alt=media&amp;token=126d8ec4-49d6-4c94-8205-de3cbab17134" alt=""><figcaption><p>Imagem 3 - Painel de configuração do módulo Binário aberto.</p></figcaption></figure>

***

### 🔧 Configurações do módulo

#### 📌 Campos do painel de configuração

| Campo                | O que preencher                                                                                                                                           |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Nome do módulo**   | Nome interno para identificar o bloco no fluxo (ex.: `Binary - Resposta de Arquivo`). Visível apenas no canvas do Builder.                                |
| **Código de status** | Informe o código HTTP que indica o resultado da resposta (ex.: `200` para sucesso, `400` para erro de validação). Valor padrão: `200`. Campo obrigatório. |
| **Headers**          | Informe os cabeçalhos da resposta em formato JSON (pares de chave e valor). Aceita variáveis do fluxo.                                                    |
| **Body**             | Informe o conteúdo do corpo da resposta. Aceita variáveis do fluxo para personalização dinâmica.                                                          |

{% hint style="info" %}
Os editores de **Headers** e **Body** suportam variáveis do fluxo com a sintaxe `{{nome.da.variavel}}`. Use esse recurso para montar respostas dinâmicas com dados coletados ao longo da conversa, como identificadores, nomes ou URLs de arquivos.
{% endhint %}

***

### ⚙️ Recursos do módulo

#### 1️⃣ Código de status da resposta

**🎯 Propósito**

Indicar ao sistema externo se a requisição foi processada com sucesso ou se ocorreu algum problema, seguindo os padrões de resposta HTTP.

**✅ Como fazer na tela**

1. No campo **Código de status**, digite o número correspondente ao resultado esperado.
   * Use `200` para indicar que o processamento foi concluído com sucesso.
   * Use `400` para sinalizar um erro de validação nos dados recebidos.
   * Use `500` para indicar falha interna no processamento.
2. Clique em **Salvar alterações** para confirmar.

**📌 Resultado esperado**

O sistema externo receberá a resposta com o código de status informado, podendo interpretar o resultado do processamento e agir de acordo.

***

#### 2️⃣ Cabeçalhos da resposta (Headers)

**🎯 Propósito**

Enviar metadados junto com a resposta HTTP, como o tipo de conteúdo, permissões de acesso ou informações de controle que o sistema externo precisa interpretar.

**✅ Como fazer na tela**

1. No editor **Headers**, escreva os cabeçalhos no formato JSON, usando pares de chave e valor. Exemplo:

   ```json
   {
     "Content-Type": "application/octet-stream",
     "Content-Disposition": "attachment; filename=\"arquivo.pdf\""
   }
   ```
2. Para incluir informações dinâmicas, use variáveis do fluxo com a sintaxe `{{nome.da.variavel}}` dentro dos valores.
3. Clique em **Salvar alterações** para confirmar.

**📌 Resultado esperado**

Os cabeçalhos configurados serão incluídos na resposta enviada ao sistema externo, permitindo que ele identifique corretamente o tipo e as características do conteúdo recebido.

***

#### 3️⃣ Corpo da resposta (Body)

**🎯 Propósito**

Definir o conteúdo principal que será enviado na resposta ao sistema externo — como dados de um arquivo, um identificador de recurso ou qualquer conteúdo em formato binário.

**✅ Como fazer na tela**

1. No editor **Body**, insira o conteúdo do corpo da resposta.
2. Para incluir dados dinâmicos do fluxo, use variáveis com a sintaxe `{{nome.da.variavel}}`. Exemplo:

   ```json
   {
     "arquivo": "{{input.urlArquivo}}",
     "protocolo": "{{input.numeroProtocolo}}"
   }
   ```
3. Clique em **Salvar alterações** para confirmar.

**📌 Resultado esperado**

O conteúdo configurado no **Body** será enviado como corpo da resposta ao sistema externo no momento em que o módulo for executado no fluxo.

***

### 💡 Dicas úteis

* **Nomeie o módulo com clareza:** Use nomes como `Binary - Sucesso` ou `Binary - Arquivo PDF` para facilitar a identificação no canvas quando o fluxo tiver vários módulos do mesmo tipo.
* **Use variáveis nos campos:** Todos os campos aceitam variáveis do fluxo (`{{nome.da.variavel}}`), o que permite montar respostas personalizadas e dinâmicas sem precisar de valores fixos.
* **Defina o tipo de conteúdo nos Headers:** Sempre que possível, informe o cabeçalho `Content-Type` com o tipo correto do conteúdo que está sendo enviado (ex.: `application/octet-stream` para arquivos binários genéricos, `image/png` para imagens PNG).
* **Use junto com caminhos de erro:** Adicione um módulo Binary em cada caminho do fluxo (sucesso e erro), com códigos de status diferentes, para que o sistema externo receba respostas padronizadas em qualquer cenário.
* **Diferença entre Binary e JSON:** Use o módulo **JSON** quando a resposta for um objeto JSON estruturado. Use o módulo **Binary** quando precisar enviar arquivos, dados brutos ou conteúdo em formatos não estruturados como JSON.

***

### 📋 Caso de uso

**Cenário:** Uma empresa usa um chatbot para processar solicitações de documentos enviadas por um sistema de gestão externo. Quando o sistema envia uma requisição ao chatbot, o fluxo processa os dados, gera o documento e responde com o arquivo em formato binário junto com os metadados da solicitação.

**Configuração principal:**

1. **Adicionar o módulo ao fluxo:**
   * No fluxo de processamento de documentos, após o nó que gera o arquivo, adicione o módulo **Binary**.
2. **Configurar o código de status:**
   * No campo **Código de status**, informe `200` para indicar que o processamento foi concluído com sucesso.
3. **Configurar os cabeçalhos:**
   * No editor **Headers**, informe:

     ```json
     {
       "Content-Type": "application/pdf",
       "Content-Disposition": "attachment; filename=\"{{input.nomeDocumento}}.pdf\""
     }
     ```
4. **Configurar o corpo da resposta:**
   * No editor **Body**, informe os dados do documento gerado:

     ```json
     {
       "protocolo": "{{input.numeroProtocolo}}",
       "urlArquivo": "{{input.urlDocumentoGerado}}",
       "dataProcessamento": "{{input.dataAtual}}"
     }
     ```

**Resultado esperado no fluxo:** Ao final do processamento, o sistema externo recebe automaticamente uma resposta com o código `200`, os cabeçalhos corretos indicando o tipo de arquivo PDF e o corpo com o protocolo e a URL do documento gerado — tudo sem intervenção manual.

***

### ✅ Resumo

* O módulo **Binary** permite que o chatbot envie respostas HTTP estruturadas a sistemas externos, com código de status, cabeçalhos e corpo configurados diretamente no fluxo.
* Os editores de **Headers** e **Body** aceitam variáveis do fluxo com a sintaxe `{{nome.da.variavel}}`, permitindo respostas dinâmicas e personalizadas.
* Use o campo **Código de status** para indicar o resultado do processamento (`200` para sucesso, `400` para erro, etc.) e padronizar a comunicação com o sistema externo.
* Informe o cabeçalho `Content-Type` nos **Headers** para que o sistema externo identifique corretamente o formato do conteúdo recebido.
