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

# Webhook Pós-Chamada

> Webhook enviado após uma chamada ser concluída contendo variáveis extraídas e dados da chamada

O Webhook Pós-Chamada é enviado automaticamente para a URL de webhook especificada 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. Habilite "Post call webhook" na [configuração do assistente](/ai-assistants/settings/post-call-actions#webhook-configuration)
3. Defina variáveis pós-chamada que a IA deve extrair

## Formato da Requisição

O webhook é enviado como uma requisição POST para a 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 de telefone do cliente em formato E.164 (ex: "+1234567890") ou null se não disponível
</ResponseField>

<ResponseField name="assistant_phone" type="string">
  Número de telefone usado pelo assistente em formato E.164 ou null se não 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 na configuração do seu schema pós-chamada

  <Expandable title="Exemplo de variáveis extraídas">
    <ResponseField name="status" type="boolean">
      Se o objetivo da chamada foi alcançado
    </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 da chamada começar
</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 nas [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 do 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="call_tries" type="integer">
      O número de tentativas de chamada feitas para este 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 da campanha">
        <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">
          Horário de início permitido da campanha
        </ResponseField>

        <ResponseField name="allowed_hours_end_time" type="string">
          Horário de término permitido 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 para a campanha
        </ResponseField>

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

        <ResponseField name="retry_interval" type="integer">
          Intervalo de retentativa 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>

<ResponseField name="transfers" type="array">
  Lista de chamadas de transferência feitas durante esta chamada (incluído apenas se a chamada tiver transferências)

  <Expandable title="Propriedades da transferência">
    <ResponseField name="id" type="integer">
      Identificador único da chamada de transferência
    </ResponseField>

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

    <ResponseField name="transfer_to" type="string">
      Número de telefone para o qual a chamada foi transferida em formato E.164
    </ResponseField>

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

    <ResponseField name="carrier_cost" type="number">
      Custo da operadora da chamada de transferência em USD
    </ResponseField>

    <ResponseField name="transcript" type="array">
      Transcrição bruta da chamada de transferência (null se não disponível)
    </ResponseField>

    <ResponseField name="formatted_transcript" type="string">
      Transcrição formatada legível para humanos da chamada de transferência
    </ResponseField>

    <ResponseField name="recording_url" type="string">
      URL para baixar a gravação da chamada de transferência (incluído apenas se "Include recording in webhook" estiver ativado e uma gravação existir)
    </ResponseField>

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

    <ResponseField name="finished_at" type="string">
      Timestamp ISO 8601 de quando a transferência foi concluída
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 Post-Call Webhook Request theme={null}
  {
    "id": 12345,
    "customer_phone": "+1234567890",
    "assistant_phone": "+1987654321",
    "duration": 125,
    "status": "completed",
    "extracted_variables": {
      "status": true,
      "summary": "Customer interested in product demo",
      "lead_quality": "high",
      "next_action": "schedule_demo"
    },
    "input_variables": {
      "customer_name": "John Doe",
      "product_interest": "Pro Plan"
    },
    "transcript": [
      {
        "text": "Hello! This is Sarah from Sua SofIA. How are you today?",
        "type": "transcript",
        "sender": "bot",
        "timestamp": 1756812511.315143
      },
      {
        "text": "Hi, I'm doing well, thanks for calling.",
        "type": "transcript",
        "sender": "human",
        "timestamp": 1756812514.104436
      },
      {
        "text": "I'm calling to tell you about our new product features.",
        "type": "transcript",
        "sender": "bot",
        "timestamp": 1756812522.918859
      },
      {
        "text": "That sounds interesting, tell me more.",
        "type": "transcript",
        "sender": "human",
        "timestamp": 1756812525.234567
      }
    ],
    "formatted_transcript": "AI: Hello! This is Sarah from Sua SofIA. How are you today?\nCustomer: Hi, I'm doing well, thanks for calling.\nAI: I'm calling to tell you about our new product features.\nCustomer: That sounds interesting, tell me more.",
    "recording_url": "https://suasofia.online/storage/recordings/call-12345.mp4",
    "created_at": "2025-01-15T10:30:00.000000Z",
    "finished_at": "2025-01-15T10:32:05.000000Z",
    "transfers": [
      {
        "id": 12346,
        "status": "completed",
        "transfer_to": "+1555123456",
        "duration": 85,
        "carrier_cost": 0.0156,
        "transcript": null,
        "formatted_transcript": "",
        "created_at": "2025-01-15T10:31:00.000000Z",
        "finished_at": "2025-01-15T10:32:25.000000Z"
      }
    ],
    "lead": {
      "id": 789,
      "phone_number": "+1234567890",
      "variables": {
        "source": "website",
        "interest_level": "high"
      },
      "status": "contacted",
      "call_tries": 2,
      "created_at": "2025-01-15T09:00:00.000000Z",
      "updated_at": "2025-01-15T10:32:05.000000Z",
      "campaign": {
        "id": 456,
        "name": "Product Demo Campaign",
        "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 seu webhook pós-chamada:

* **Send webhook only on completed**: Enviar o webhook apenas para chamadas concluídas com sucesso
* **Include recording in webhook**: Incluir o campo `recording_url` no payload
* **Custom variables**: Definir variáveis personalizadas que a IA deve extrair da conversa

## Observações Importantes

* Os campos `customer_phone` e `assistant_phone` podem ser `null` se a informação não estiver disponível
* O campo `recording_url` é incluído apenas se você tiver ativado "Include recording in webhook" nas suas [configurações do assistente](/ai-assistants/settings/post-call-actions#webhook-configuration)
* O objeto `lead` é incluído apenas para chamadas que fazem parte de uma campanha
* O array `transfers` é incluído apenas para chamadas que possuem chamadas de transferência associadas a elas
* O objeto `extracted_variables` conterá as variáveis que você definiu na configuração do schema pós-chamada do seu assistente
