> ## Documentation Index
> Fetch the complete documentation index at: https://doc.evolution-api.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Dify

A Evolution API permite a criação e gerenciamento de bots utilizando a tecnologia Dify, proporcionando automação e interatividade avançada através de diferentes tipos de bots, como chatBots, textGenerators, agents, e workflows. A seguir, você encontrará as instruções detalhadas sobre como configurar bots, gerenciar sessões e definir configurações padrão.

## 1. Criação de Bots no Dify

Você pode configurar diversos bots no Dify utilizando triggers para iniciar as interações. A configuração do bot pode ser feita através do endpoint `/dify/create/{{instance}}`.

### Endpoint para Criação de Bots

#### Endpoint

```http theme={null}
POST {{baseUrl}}/dify/create/{{instance}}
```

#### Corpo da Requisição

Aqui está um exemplo de corpo JSON para configurar um bot no Dify:

```json theme={null}
{
    "enabled": true,
    "botType": "chatBot", /* chatBot, textGenerator, agent, workflow */
    "apiUrl": "http://dify.site.com/v1",
    "apiKey": "app-123456",
    // opções
    "triggerType": "keyword", /* all ou keyword */
    "triggerOperator": "equals", /* contains, equals, startsWith, endsWith, regex, none */
    "triggerValue": "teste",
    "expire": 0,
    "keywordFinish": "#SAIR",
    "delayMessage": 1000,
    "unknownMessage": "Mensagem não reconhecida",
    "listeningFromMe": false,
    "stopBotFromMe": false,
    "keepOpen": false,
    "debounceTime": 0,
    "ignoreJids": []
}
```

### Explicação dos Parâmetros

* **`enabled`**: Ativa (`true`) ou desativa (`false`) o bot.
* **`botType`**: Tipo do bot Dify (`chatBot`, `textGenerator`, `agent`, `workflow`).
* **`apiUrl`**: URL da API do Dify (sem a `/` no final).
* **`apiKey`**: Chave da API fornecida pelo Dify.
* **Opções**:
  * **`triggerType`**: Tipo de trigger para iniciar o bot (`all` ou `keyword`).
  * **`triggerOperator`**: Operador utilizado para avaliar o trigger (`contains`, `equals`, `startsWith`, `endsWith`, `regex`, `none`).
  * **`triggerValue`**: Valor utilizado no trigger (por exemplo, uma palavra-chave ou regex).
  * **`expire`**: Tempo em minutos após o qual o bot expira, reiniciando se a sessão expirou.
  * **`keywordFinish`**: Palavra-chave que encerra a sessão do bot.
  * **`delayMessage`**: Delay (em milissegundos) para simular a digitação antes de enviar uma mensagem.
  * **`unknownMessage`**: Mensagem enviada quando a entrada do usuário não é reconhecida.
  * **`listeningFromMe`**: Define se o bot deve escutar as mensagens enviadas pelo próprio usuário (`true` ou `false`).
  * **`stopBotFromMe`**: Define se o bot deve parar quando o próprio usuário envia uma mensagem (`true` ou `false`).
  * **`keepOpen`**: Mantém a sessão aberta, evitando que o bot seja reiniciado para o mesmo contato.
  * **`debounceTime`**: Tempo (em segundos) para juntar várias mensagens em uma só.
  * **`ignoreJids`**: Lista de JIDs de contatos que não ativarão o bot.

## 2. Configurações Padrão do Dify

Você pode definir configurações padrão que serão aplicadas caso os parâmetros não sejam passados durante a criação do bot.

### Endpoint para Configurações Padrão

#### Endpoint

```http theme={null}
POST {{baseUrl}}/dify/settings/{{instance}}
```

#### Corpo da Requisição

Aqui está um exemplo de configuração padrão:

```json theme={null}
{
    "expire": 20,
    "keywordFinish": "#SAIR",
    "delayMessage": 1000,
    "unknownMessage": "Mensagem não reconhecida",
    "listeningFromMe": false,
    "stopBotFromMe": false,
    "keepOpen": false,
    "debounceTime": 0,
    "ignoreJids": [],
    "difyIdFallback": "clyja4oys0a3uqpy7k3bd7swe"
}
```

### Explicação dos Parâmetros

* **`expire`**: Tempo em minutos após o qual o bot expira.
* **`keywordFinish`**: Palavra-chave que encerra a sessão do bot.
* **`delayMessage`**: Delay para simular a digitação antes de enviar uma mensagem.
* **`unknownMessage`**: Mensagem enviada quando a entrada do usuário não é reconhecida.
* **`listeningFromMe`**: Define se o bot deve escutar as mensagens enviadas pelo próprio usuário.
* **`stopBotFromMe`**: Define se o bot deve parar quando o próprio usuário envia uma mensagem.
* **`keepOpen`**: Mantém a sessão aberta, evitando que o bot seja reiniciado para o mesmo contato.
* **`debounceTime`**: Tempo para juntar várias mensagens em uma só.
* **`ignoreJids`**: Lista de JIDs de contatos que não ativarão o bot.
* **`difyIdFallback`**: ID do bot de fallback que será utilizado caso nenhum trigger seja ativado.

## 3. Gerenciamento de Sessões do Dify

Você pode gerenciar as sessões do bot, alterando o status entre aberta, pausada ou fechada para cada contato específico.

### Endpoint para Gerenciamento de Sessões

#### Endpoint

```http theme={null}
POST {{baseUrl}}/dify/changeStatus/{{instance}}
```

#### Corpo da Requisição

Aqui está um exemplo de como gerenciar o status da sessão:

```json theme={null}
{
    "remoteJid": "5511912345678@s.whatsapp.net",
    "status": "closed"
}
```

### Explicação dos Parâmetros

* **`remoteJid`**: JID (identificador) do contato no WhatsApp.
* **`status`**: Status da sessão (`opened`, `paused`, `closed`).

## 4. Variáveis Automáticas e Especiais no Dify

Quando uma sessão do Dify é iniciada, algumas variáveis predefinidas são automaticamente enviadas:

```json theme={null}
inputs: {
    remoteJid: "JID do contato",
    pushName: "Nome do contato",
    instanceName: "Nome da instância",
    serverUrl: "URL do servidor da API",
    apiKey: "Chave de API da Evolution"
};
```

### Explicação das Variáveis Automáticas

* **`remoteJid`**: JID do contato com quem o bot está interagindo.
* **`pushName`**: Nome do contato no WhatsApp.
* **`instanceName`**: Nome da instância que está executando o bot.
* **`serverUrl`**: URL do servidor onde a Evolution API está hospedada.
* **`apiKey`**: Chave de API usada para autenticar as requisições.

### Variáveis Especiais para Workflows

No caso de bots do tipo **workflow**, a mensagem recebida é enviada na variável `query` dentro dos inputs. Isso permite que o workflow processe a mensagem diretamente com base no conteúdo da variável `query`.

### Exemplo de Variáveis para Workflow

```json theme={null}
inputs: {
    remoteJid: "JID do contato",
    pushName: "Nome do contato",
    instanceName: "Nome da instância",
    serverUrl: "URL do servidor da API",
    apiKey: "Chave de API da Evolution",
    query: "Conteúdo da mensagem recebida"
}
```

## Considerações Finais

A integração da Evolution API com o Dify oferece uma maneira robusta de automatizar interações no WhatsApp, utilizando diferentes tipos de bots para atender às necessidades específicas do seu negócio. Com a capacidade de configurar triggers, gerenciar sessões e utilizar variáveis automáticas, você pode otimizar o fluxo de trabalho e melhorar a experiência do usuário final.
