> ## 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.

# Webhook post-appel

> Webhook envoyé après la fin d'un appel, contenant les variables extraites et les données d'appel

<Warning>
  **API Famulor 1.0 (héritée).** Cette page concerne uniquement Famulor 1.0 (`app.famulor.de`) et est conservée pour la compatibilité. Pour la plateforme actuelle, consultez la [référence API Famulor 2.0](/fr/api-reference/introduction).
</Warning>

Le Webhook post-appel est envoyé automatiquement à l'URL de webhook que vous avez indiquée, une fois chaque appel terminé. Ce webhook inclut les détails de l'appel, les variables extraites, la transcription et, en option, l'URL de l'enregistrement.

## Configuration du webhook

Pour activer les Webhooks post-appel :

1. Configurez l'URL de webhook de votre assistant dans les paramètres de l'assistant
2. Activez « Post call webhook » dans la configuration de l'assistant
3. Définissez les variables post-appel que vous souhaitez que l'IA extraie

## Format de la requête

Le webhook est envoyé sous forme de requête POST vers l'URL que vous avez configurée, avec la charge utile JSON suivante :

### Structure de la charge utile

<ResponseField name="id" type="integer">
  Identifiant unique de l'appel
</ResponseField>

<ResponseField name="customer_phone" type="string">
  Numéro de téléphone du client au format E.164 (par ex. `+1234567890`) ou `null` si non disponible
</ResponseField>

<ResponseField name="assistant_phone" type="string">
  Numéro de téléphone utilisé par l'assistant au format E.164, ou `null` si non disponible
</ResponseField>

<ResponseField name="duration" type="integer">
  Durée de l'appel en secondes
</ResponseField>

<ResponseField name="status" type="string">
  Statut final de l'appel (par ex. `completed`, `busy`, `failed`)
</ResponseField>

<ResponseField name="extracted_variables" type="object">
  Variables extraites par l'IA en fonction de la configuration de votre schéma post-appel

  <Expandable title="Exemple de variables extraites">
    ```json theme={null}
    {
      "customer_interested": true,
      "appointment_scheduled": false,
      "contact_reason": "product_inquiry",
      "follow_up_needed": true,
      "customer_budget": "10000-50000"
    }
    ```
  </Expandable>
</ResponseField>

<ResponseField name="input_variables" type="object">
  Variables transmises à l'assistant avant le début de l'appel
</ResponseField>

<ResponseField name="transcript" type="string">
  Transcription complète de la conversation
</ResponseField>

<ResponseField name="recording_url" type="string">
  URL de téléchargement de l'enregistrement de l'appel (incluse uniquement si « Include recording in webhook » est activé dans les paramètres de l'assistant)
</ResponseField>

<ResponseField name="created_at" type="string">
  Horodatage ISO 8601 du début de l'appel
</ResponseField>

<ResponseField name="finished_at" type="string">
  Horodatage ISO 8601 de la fin de l'appel (repris du champ `updated_at` de l'enregistrement d'appel)
</ResponseField>

<ResponseField name="lead" type="object">
  Informations sur le lead (incluses uniquement pour les appels de campagne)

  <Expandable title="Propriétés du lead">
    <ResponseField name="id" type="integer">
      Identifiant unique du lead
    </ResponseField>

    <ResponseField name="phone_number" type="string">
      Numéro de téléphone du lead
    </ResponseField>

    <ResponseField name="variables" type="object">
      Variables associées au lead
    </ResponseField>

    <ResponseField name="status" type="string">
      Statut actuel du lead
    </ResponseField>

    <ResponseField name="created_at" type="string">
      Date de création du lead
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Date de dernière mise à jour du lead
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="campaign" type="object">
  Informations sur la campagne (si disponible)

  <Expandable title="Propriétés de la campagne">
    <ResponseField name="id" type="integer">
      ID de la campagne
    </ResponseField>

    <ResponseField name="name" type="string">
      Nom de la campagne
    </ResponseField>

    <ResponseField name="status" type="string">
      Statut de la campagne
    </ResponseField>

    <ResponseField name="allowed_hours_start_time" type="string">
      Heure de début autorisée de la campagne
    </ResponseField>

    <ResponseField name="allowed_hours_end_time" type="string">
      Heure de fin autorisée de la campagne
    </ResponseField>

    <ResponseField name="allowed_days" type="array">
      Jours autorisés pour la campagne
    </ResponseField>

    <ResponseField name="max_calls_in_parallel" type="integer">
      Nombre maximal d'appels simultanés pour la campagne
    </ResponseField>

    <ResponseField name="max_retries" type="integer">
      Nombre maximal de tentatives pour les leads
    </ResponseField>

    <ResponseField name="retry_interval" type="integer">
      Intervalle entre les tentatives, en minutes
    </ResponseField>

    <ResponseField name="created_at" type="string">
      Date de création de la campagne
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Date de dernière mise à jour de la campagne
    </ResponseField>
  </Expandable>
</ResponseField>

## Paramètres du webhook

Vous pouvez configurer les options suivantes pour votre Webhook post-appel :

* **Send webhook only on completed** : envoie le webhook uniquement pour les appels terminés avec succès
* **Include recording in webhook** : inclut le champ `recording_url` dans la charge utile
* **Custom variables** : définit les variables personnalisées que l'IA doit extraire de la conversation

## Remarques importantes

* Les champs `customer_phone` et `assistant_phone` peuvent être `null` si l'information n'est pas disponible
* Le champ `recording_url` n'est inclus que si vous avez activé « Include recording in webhook » dans les paramètres de votre assistant
* L'objet `lead` n'est inclus que pour les appels faisant partie d'une campagne
* L'objet `extracted_variables` contient les variables que vous avez définies dans la configuration du schéma post-appel de votre assistant

<ResponseExample>
  ```json Webhook Payload Example theme={null}
  {
    "id": 480336,
    "customer_phone": "+4915123456789",
    "assistant_phone": "+4912345678",
    "duration": 180,
    "status": "completed",
    "extracted_variables": {
      "customer_interested": true,
      "appointment_scheduled": false,
      "contact_reason": "product_inquiry",
      "follow_up_needed": true,
      "customer_budget": "10000-50000",
      "decision_maker": true,
      "next_contact_date": "2024-02-15"
    },
    "input_variables": {
      "customer_name": "Max Mustermann",
      "company": "Beispiel GmbH"
    },
    "transcript": "Assistant: Hello Mr. Mustermann! I am calling from Famulor...\nCustomer: Hello, yes I’m listening...",
    "recording_url": "https://recordings.famulor.de/call-480336.mp3",
    "created_at": "2024-01-15T10:30:00Z",
    "finished_at": "2024-01-15T10:33:00Z",
    "lead": {
      "id": 12345,
      "phone_number": "+4915123456789",
      "variables": {
        "customer_name": "Max Mustermann",
        "company": "Beispiel GmbH",
        "source": "website"
      },
      "status": "contacted",
      "created_at": "2024-01-14T09:00:00Z",
      "updated_at": "2024-01-15T10:33:00Z"
    },
    "campaign": {
      "id": 2324,
      "name": "New Customer Acquisition Q1 2024",
      "status": "in-progress",
      "allowed_hours_start_time": "09:00:00",
      "allowed_hours_end_time": "18:00:00",
      "allowed_days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
      "max_calls_in_parallel": 5,
      "max_retries": 3,
      "retry_interval": 60,
      "created_at": "2024-01-01T08:00:00Z",
      "updated_at": "2024-01-15T10:00:00Z"
    }
  }
  ```

  ```json Webhook without Lead/Campaign theme={null}
  {
    "id": 480337,
    "customer_phone": "+4917123456789",
    "assistant_phone": "+4912345678",
    "duration": 120,
    "status": "completed",
    "extracted_variables": {
      "issue_resolved": true,
      "customer_satisfaction": 9,
      "support_category": "technical"
    },
    "input_variables": {},
    "transcript": "Assistant: Hello! How can I assist you today?\nCustomer: I have a problem with...",
    "recording_url": null,
    "created_at": "2024-01-15T14:20:00Z",
    "finished_at": "2024-01-15T14:22:00Z",
    "lead": null,
    "campaign": null
  }
  ```
</ResponseExample>

<Tip>
  Pages associées : [Introduction](/fr/api-v1/introduction) et [Guide d'authentification](/fr/api-v1/authentication), et [Exemples d'intégration API](/fr/api-v1/introduction).
</Tip>
