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

# Follow-up automático

> Configure uma etapa para retomar contatos com mensagens geradas por IA

Cada etapa pode enviar mensagens de follow-up geradas por IA para os contatos dos atendimentos vinculados aos cards que estão nela.

```http theme={null}
PUT /task/stage/{id}/config
```

## Corpo da requisição

```json theme={null}
{
  "followUp": {
    "enabled": true,
    "interval": { "value": 7, "unit": "day" },
    "maxAttempts": 10,
    "onlyBusinessHours": true,
    "sendToFinishedCalled": false,
    "aiMessage": {
      "goal": "Retomar o contato com o cliente sobre a proposta enviada.",
      "extra": "Mencionar a condição especial do produto citado."
    }
  }
}
```

| Campo | Tipo | Descrição |
| - | - | - |
| `enabled` | `boolean` | Liga ou desliga o follow-up da etapa. |
| `interval.value` | `integer` | Tempo mínimo desde a última mensagem enviada ao contato. |
| `interval.unit` | `string` | `minute`, `hour`, `day` ou `month`. |
| `maxAttempts` | `integer` | Limite de envios. Reservado para uso futuro. |
| `onlyBusinessHours` | `boolean` | Envia só de segunda a sexta, das 8h às 18h, horário de Brasília. |
| `sendToFinishedCalled` | `boolean` | Também envia para atendimentos já finalizados. |
| `aiMessage.goal` | `string` | Objetivo da mensagem gerada pela IA. |
| `aiMessage.extra` | `string` | Instruções adicionais para a IA. |

Retorna `200` com `true`.

```bash cURL theme={null}
curl -X PUT https://api.hustapp.com/task/stage/11/config \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "followUp": {
      "enabled": true,
      "interval": { "value": 7, "unit": "day" },
      "onlyBusinessHours": true,
      "sendToFinishedCalled": false,
      "aiMessage": { "goal": "Retomar o contato com o cliente sobre a proposta enviada." }
    }
  }'
```

```javascript Node.js theme={null}
await fetch("https://api.hustapp.com/task/stage/11/config", {
  method: "PUT",
  headers: {
    Authorization: `Bearer ${token}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    followUp: {
      enabled: true,
      interval: { value: 7, unit: "day" },
      onlyBusinessHours: true,
      sendToFinishedCalled: false,
      aiMessage: { goal: "Retomar o contato com o cliente sobre a proposta enviada." },
    },
  }),
});
```

```python Python theme={null}
import requests

requests.put(
    "https://api.hustapp.com/task/stage/11/config",
    headers={"Authorization": f"Bearer {token}"},
    json={
        "followUp": {
            "enabled": True,
            "interval": {"value": 7, "unit": "day"},
            "onlyBusinessHours": True,
            "sendToFinishedCalled": False,
            "aiMessage": {"goal": "Retomar o contato com o cliente sobre a proposta enviada."},
        }
    },
)
```

```php PHP theme={null}
<?php
$ch = curl_init('https://api.hustapp.com/task/stage/11/config');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'PUT',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $token,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'followUp' => [
            'enabled' => true,
            'interval' => ['value' => 7, 'unit' => 'day'],
            'onlyBusinessHours' => true,
            'sendToFinishedCalled' => false,
            'aiMessage' => ['goal' => 'Retomar o contato com o cliente sobre a proposta enviada.'],
        ],
    ]),
]);

curl_exec($ch);
curl_close($ch);
```

```pascal Delphi theme={null}
uses
  System.Net.HttpClient, System.Classes, System.SysUtils;

const
  Body =
    '{ "followUp": {' +
    '    "enabled": true,' +
    '    "interval": { "value": 7, "unit": "day" },' +
    '    "onlyBusinessHours": true,' +
    '    "sendToFinishedCalled": false,' +
    '    "aiMessage": { "goal": "Retomar o contato com o cliente sobre a proposta enviada." }' +
    '} }';

var
  HttpClient: THTTPClient;
begin
  HttpClient := THTTPClient.Create;
  try
    HttpClient.CustomHeaders['Authorization'] := 'Bearer ' + Token;
    HttpClient.ContentType := 'application/json';
    HttpClient.Put('https://api.hustapp.com/task/stage/11/config',
      TStringStream.Create(Body, TEncoding.UTF8));
  finally
    HttpClient.Free;
  end;
end;
```

## Como funciona

Uma rotina roda a cada 15 minutos, de segunda a sexta. Para cada card da etapa e cada atendimento vinculado a ele:

1. Verifica se a **última mensagem do atendimento foi enviada pela empresa**.
2. Verifica se já passou o `interval` desde essa mensagem.
3. Se as duas condições forem atendidas, a IA gera uma mensagem com base no histórico, e ela é enviada pela conexão do atendimento.

Se o contato respondeu por último, não há follow-up: a conversa está com a empresa.

> [!NOTE]
>
> Só cards com atendimento vinculado recebem follow-up. Veja [Vínculo com atendimentos](/crm/atendimentos.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.