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

# Webhooks posteriores a la llamada

> Recibe la transcripción, la duración, las variables de entrada y el análisis posterior a la llamada por webhook, tras cada llamada.

Configura una **URL de webhook a nivel de asistente** en cada asistente (**Settings → Automations → Call completed**). Después de cada llamada, Famulor envía un POST `call.completed` con:

* Transcripción
* Duración
* Variables de entrada resueltas
* Análisis posterior a la llamada (y el [cuadro de puntuación de AI QA](/es/assistants/analysis#cuadros-de-puntuación-de-ai-qa) cuando está habilitado)
* Orientación sobre el fallo cuando una llamada saliente no llegó a conectar

El objeto opcional `failure` explica qué ocurrió, si reintentar podría ayudar y qué acción tomar. La misma orientación de cara al cliente está disponible a través de las lecturas de llamadas de REST y MCP.

## Ajustes del webhook

| Ajuste               | Rango     | Valor por defecto | Significado                               |
| -------------------- | --------- | ----------------- | ----------------------------------------- |
| URL del webhook      | URL HTTPS | —                 | Destino de entrega para este asistente    |
| Tiempo de espera     | 1–30 s    | 5 s               | Espera máxima para una respuesta          |
| Número de reintentos | 0–5       | 2                 | Intentos adicionales tras el primer fallo |

Usa **Test** en el editor para enviar un payload de ejemplo a una URL guardada o sin guardar (respeta el control deslizante de tiempo de espera).

Esta URL no está firmada y es específica de este asistente. Famulor no tiene una suscripción de webhook para todo el espacio de trabajo — los resultados de las llamadas siempre se entregan por asistente.

## Ejemplo de payload del webhook

Una entrega `call.completed` tiene este aspecto:

```json theme={null}
{
  "event": "call.completed",
  "timestamp": "2026-08-26T14:32:07.000Z",
  "data": {
    "call_id": "c1b2c3d4-0000-4000-8000-000000000010",
    "tenant_id": "9f86d081-0000-4000-8000-000000000020",
    "assistant_id": "1b2c3d4e-0000-4000-8000-000000000030",
    "direction": "outbound",
    "status": "completed",
    "duration_sec": 132,
    "transcript": {
      "items": [
        { "type": "message", "role": "assistant", "content": ["Hi, this is Alex from Riverside Dental."] },
        { "type": "message", "role": "user", "content": ["Hi, yes, I have a moment."] }
      ]
    },
    "collected": { "appointment_time": "2026-09-02T10:00:00Z" },
    "variables": { "lead_quality": "high" },
    "input_variables": { "customer_name": "Max Mustermann" },
    "analysis": {
      "summary": "Customer confirmed interest and booked a demo.",
      "sentiment": "positive",
      "success": true,
      "success_reason": "Appointment booked"
    },
    "qa_scorecard": null
  }
}
```

`variables` e `input_variables` siguen las mismas [variables de la llamada](/es/assistants/variables) que se usan en el resto del asistente. `analysis` y [`qa_scorecard`](/es/assistants/analysis#cuadros-de-puntuación-de-ai-qa) solo se completan cuando termina el procesamiento posterior a la llamada. Cuando una llamada saliente no llega a conectar, se añade un objeto `failure` junto al resultado — consulta más arriba.

## API y MCP

Usa `PATCH /api/v1/assistants/{id}` o la herramienta MCP `update_assistant`. La entrega puede estar desactivada, usar la URL de webhook del asistente o una [automatización vinculada](/es/automations/overview). Consulta el esquema de la API para conocer el contrato de campos actual.
