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

# Webhook pós-chamada

> Estrutura do webhook pós-chamada da OmniTech: variáveis extraídas, transcrição, gravação, status e metadados enviados ao concluir cada chamada.

O Webhook pós-chamada é enviado automaticamente para a URL de webhook que você definiu após cada chamada ser concluída. Este webhook contém detalhes da chamada, variáveis extraídas, transcrição e, opcionalmente, a URL da gravação.

## Configuração do Webhook

Para habilitar webhooks pós-chamada:

1. Configure a URL do webhook do seu assistente nas [configurações do assistente](/ai-assistants/settings/post-call-actions#webhook-configuration)
2. Ative "Post call webhook" na [configuração do assistente](/ai-assistants/settings/post-call-actions#webhook-configuration)
3. Defina as variáveis pós-chamada que a IA deve extrair

## Formato da Requisição

O webhook é enviado como uma requisição POST para a sua URL configurada com o seguinte payload JSON:

### Estrutura do Payload

<ResponseField name="id" type="integer">
  Identificador único da chamada
</ResponseField>

<ResponseField name="customer_phone" type="string">
  Número do cliente no formato E.164 (ex.: "+5511999999999") ou null se não estiver disponível
</ResponseField>

<ResponseField name="assistant_phone" type="string">
  Número usado pelo assistente no formato E.164 ou null se não estiver disponível
</ResponseField>

<ResponseField name="duration" type="integer">
  Duração da chamada em segundos
</ResponseField>

<ResponseField name="status" type="string">
  Status final da chamada (ex.: "completed", "busy", "failed")
</ResponseField>

<ResponseField name="extracted_variables" type="object">
  Variáveis extraídas pela IA com base no seu schema pós-chamada

  <Expandable title="Exemplo de variáveis extraídas">
    <ResponseField name="status" type="boolean">
      Se o objetivo da chamada foi atingido
    </ResponseField>

    <ResponseField name="summary" type="string">
      Resumo da chamada em poucas palavras
    </ResponseField>

    <ResponseField name="custom_variable" type="string|number|boolean">
      Quaisquer variáveis personalizadas que você definiu na configuração do assistente
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="input_variables" type="object">
  Variáveis que foram passadas para o assistente antes do início da chamada
</ResponseField>

<ResponseField name="transcript" type="string">
  Transcrição completa da conversa
</ResponseField>

<ResponseField name="recording_url" type="string">
  URL para baixar a gravação da chamada (incluída apenas se "Include recording in webhook" estiver habilitado em [configurações do assistente](/ai-assistants/settings/post-call-actions#webhook-configuration))
</ResponseField>

<ResponseField name="created_at" type="string">
  Timestamp ISO 8601 de quando a chamada foi iniciada
</ResponseField>

<ResponseField name="finished_at" type="string">
  Timestamp ISO 8601 de quando a chamada foi concluída (usa updated\_at do registro da chamada)
</ResponseField>

<ResponseField name="lead" type="object">
  Informações do lead (incluído apenas para chamadas de campanha)

  <Expandable title="propriedades de lead">
    <ResponseField name="id" type="integer">
      Identificador único do lead
    </ResponseField>

    <ResponseField name="phone_number" type="string">
      Número de telefone do lead
    </ResponseField>

    <ResponseField name="variables" type="object">
      Variáveis associadas ao lead
    </ResponseField>

    <ResponseField name="status" type="string">
      Status atual do lead
    </ResponseField>

    <ResponseField name="created_at" type="string">
      Quando o lead foi criado
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Quando o lead foi atualizado pela última vez
    </ResponseField>

    <ResponseField name="campaign" type="object">
      Informações da campanha (se disponível)

      <Expandable title="propriedades de campaign">
        <ResponseField name="id" type="integer">
          ID da campanha
        </ResponseField>

        <ResponseField name="name" type="string">
          Nome da campanha
        </ResponseField>

        <ResponseField name="status" type="string">
          Status da campanha
        </ResponseField>

        <ResponseField name="allowed_hours_start_time" type="string">
          Hora inicial permitida da campanha
        </ResponseField>

        <ResponseField name="allowed_hours_end_time" type="string">
          Hora final permitida da campanha
        </ResponseField>

        <ResponseField name="allowed_days" type="array">
          Dias permitidos da campanha
        </ResponseField>

        <ResponseField name="max_calls_in_parallel" type="integer">
          Máximo de chamadas simultâneas na campanha
        </ResponseField>

        <ResponseField name="max_retries" type="integer">
          Máximo de tentativas de retry para leads
        </ResponseField>

        <ResponseField name="retry_interval" type="integer">
          Intervalo de retry em minutos
        </ResponseField>

        <ResponseField name="created_at" type="string">
          Quando a campanha foi criada
        </ResponseField>

        <ResponseField name="updated_at" type="string">
          Quando a campanha foi atualizada pela última vez
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 Post-Call Webhook Request theme={null}
  {
    "id": 12345,
    "customer_phone": "+5511999999999",
    "assistant_phone": "+5511988888888",
    "duration": 125,
    "status": "completed",
    "extracted_variables": {
      "status": true,
      "summary": "Cliente interessado em demonstração do produto",
      "lead_quality": "high",
      "next_action": "schedule_demo"
    },
    "input_variables": {
      "customer_name": "João Silva",
      "product_interest": "Plano Pro"
    },
    "transcript": [
      {
        "text": "Olá! Aqui é a Sarah da OmniTech. Como você está hoje?",
        "type": "transcript",
        "sender": "bot",
        "timestamp": 1756812511.315143
      },
      {
        "text": "Oi, estou bem, obrigado por ligar.",
        "type": "transcript",
        "sender": "human",
        "timestamp": 1756812514.104436
      },
      {
        "text": "Estou ligando para te contar sobre nossos novos recursos do produto.",
        "type": "transcript",
        "sender": "bot",
        "timestamp": 1756812522.918859
      },
      {
        "text": "Parece interessante, me conte mais.",
        "type": "transcript",
        "sender": "human",
        "timestamp": 1756812525.234567
      }
    ],
    "formatted_transcript": "IA: Olá! Aqui é a Sarah da OmniTech. Como você está hoje?\nCliente: Oi, estou bem, obrigado por ligar.\nIA: Estou ligando para te contar sobre nossos novos recursos do produto.\nCliente: Parece interessante, me conte mais.",
    "recording_url": "https://app.omnitechsolucoes.com.br/storage/recordings/call-12345.mp4",
    "created_at": "2025-01-15T10:30:00.000000Z",
    "finished_at": "2025-01-15T10:32:05.000000Z",
    "lead": {
      "id": 789,
      "phone_number": "+5511999999999",
      "variables": {
        "source": "website",
        "interest_level": "high"
      },
      "status": "contacted",
      "created_at": "2025-01-15T09:00:00.000000Z",
      "updated_at": "2025-01-15T10:32:05.000000Z",
      "campaign": {
        "id": 456,
        "name": "Campanha de Demonstração do Produto",
        "status": "active",
        "allowed_hours_start_time": "09:00",
        "allowed_hours_end_time": "17:00",
        "allowed_days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
        "max_calls_in_parallel": 5,
        "max_retries": 3,
        "retry_interval": 60,
        "created_at": "2025-01-15T08:00:00.000000Z",
        "updated_at": "2025-01-15T08:00:00.000000Z"
      }
    }
  }
  ```
</ResponseExample>

Configurações do Webhook
Você pode configurar as seguintes opções para o webhook pós-chamada:

Send webhook only on completed: Envia o webhook apenas para chamadas concluídas com sucesso

Include recording in webhook: Inclui o campo recording\_url no payload

Custom variables: Define variáveis personalizadas que a IA deve extrair da conversa

Notas Importantes
Os campos customer\_phone e assistant\_phone podem ser null se a informação não estiver disponível

O campo recording\_url só é incluído se você habilitar "Include recording in webhook" em configurações do assistente

O objeto lead só é incluído para chamadas que fazem parte de uma campanha

O objeto extracted\_variables conterá as variáveis definidas no schema pós-chamada do seu assistente
