Use este guia para integrar um chatbot Dialogflow à IAra.

## Antes de começar

- Tenha um agente criado no Dialogflow.
- Tenha acesso ao Google Cloud do projeto.
- Tenha uma caixa de entrada da IAra onde o bot será conectado.
- Defina quando o bot deve transferir para humano.

## Criar bot no Dialogflow

1. Acesse o Dialogflow Console.
2. Crie um agente.
3. Configure intents de boas-vindas, fallback e principais dúvidas.
4. Teste respostas dentro do próprio Dialogflow.
5. Crie intents específicas para transferência e mensagens interativas, se necessário.

## Criar conta de serviço no Google Cloud

1. Abra o projeto no Google Cloud.
2. Acesse **IAM & Admin > Service Accounts**.
3. Crie uma service account.
4. Conceda a permissão **Dialogflow API Client**.
5. Gere uma chave JSON.
6. Guarde o conteúdo do JSON para configurar na IAra.

## Conectar Dialogflow na IAra

1. Acesse **Configurações > Aplicações > Dialogflow**.
2. Clique em **Configurar**.
3. Adicione um novo hook.
4. Informe `Project ID`.
5. Cole o conteúdo do arquivo JSON da chave.
6. Escolha a caixa de entrada.
7. Salve e teste com uma conversa realista.

## Transferência para humano

Crie uma intent no Dialogflow para frases como:

- falar com atendente;
- quero humano;
- chamar suporte;
- falar com consultor.

Na resposta da intent, use um payload customizado:

```json
{
  "action": "handoff"
}
```

Quando essa intent for acionada, a conversa muda para `open` e fica disponível para o agente humano.

## Mensagem interativa de opções

```json
{
  "content_type": "input_select",
  "content": "Selecione sua opção favorita",
  "content_attributes": {
    "items": [
      {
        "title": "Sushi",
        "value": "Eu gosto de sushi"
      },
      {
        "title": "Pizza",
        "value": "Eu gosto de pizza"
      }
    ]
  },
  "private": false
}
```

## Devolver conversa ao bot

Quando o bot está conectado a uma caixa, conversas podem começar como `pending`. Se um agente assumiu a conversa e quiser devolver ao bot, ele pode alterar o status para `pending`, se esse fluxo estiver habilitado na conta.