> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Cal.com

## Vue d’ensemble

Connectez vos agents IA ElevenLabs à [Cal.com](https://cal.com) pour gérer la planification et les réservations de calendrier. Cette intégration permet à vos agents de vérifier les disponibilités, de réserver des rendez-vous, d’annuler ou de replanifier des réunions, et de rechercher des réservations existantes par le biais d’une conversation naturelle.

## Fonctionnalités

| Fonctionnalité                 | Prise en charge                                                |
| ------------------------------ | -------------------------------------------------------------- |
| Mode zéro rétention (ZRM)      | Non pris en charge                                             |
| Pièces jointes dans les outils | Non prises en charge, les outils utilisent uniquement du texte |

## Configuration

Cette intégration utilise une **clé API Cal.com** pour l’authentification, et non une application OAuth.

#### Générer une clé API dans Cal.com

Dans votre compte Cal.com, accédez à **Settings > Developer > API Keys**, puis cliquez sur **New**. Copiez immédiatement la clé générée, elle ne sera plus affichée.

#### Utiliser une clé de production

Cal.com génère deux types de clés, des clés de test commençant par `cal_` et des clés de production commençant par `cal_live_`. Utilisez une **clé de production** pour permettre à votre agent d’accéder aux données réelles du calendrier.

#### Connecter dans ElevenLabs

Dans la configuration de l’intégration ElevenLabs, collez votre clé API Cal.com dans le champ **API Key**.

## Démo

> **Note**
>
> Cette démo utilise des outils webhook hérités. Si vous utilisez l’intégration Cal.com native, les outils sont
> configurés automatiquement, aucune configuration manuelle des webhooks n’est nécessaire.

## Fonctionnement

L’agent planifie les réunions en utilisant des appels d’outils pour suivre les étapes du processus de réservation. Les onglets ci-dessous présentent un résumé général et le prompt système détaillé.

#### Vue d’ensemble

#### Demande initiale et détails de la réunion

L’agent demande l’objet de la réunion, la date et l’heure souhaitées, ainsi que sa durée afin de recueillir les informations de planification.

#### Vérifier les disponibilités du calendrier

L’agent vérifie les disponibilités du calendrier en :

* utilisant l’outil `get_available_slots` pour récupérer les créneaux disponibles.
* vérifiant si l’horaire demandé est disponible.
* proposant des alternatives si l’horaire demandé n’est pas disponible.
* confirmant le créneau sélectionné avec l’appelant.

#### Collecter les coordonnées

Une fois l’horaire convenu, l’agent :

* recueille et valide le nom complet du participant.
* vérifie l’exactitude de l’adresse email.
* confirme le fuseau horaire.
* recueille tous les champs supplémentaires requis pour le type d’événement Cal.com.

#### Créer la réunion

L’agent :

* appelle l’outil `book_meeting` après avoir vérifié toutes les informations.
* suit la structure du modèle de réservation.
* confirme la création de la réunion au participant.
* l’informe qu’il recevra une invitation de calendrier.

#### Prompt système détaillé

```
You are a helpful receptionist responsible for scheduling meetings using the Cal.com integration. Be friendly, precise, and concise.

Begin by briefly asking for the purpose of the meeting and the caller's preferred date and time.
Then, ask about the desired meeting duration (15, 30, or 60 minutes), and wait for the user's response before proceeding.

Once you have the meeting details, say you will check calendar availability:
- Call get_available_slots with the appropriate date range
- Verify if the requested time slot is available
- If not available, suggest alternative times from the available slots
- Continue until a suitable time is agreed upon

After confirming a time slot, gather the following contact details:
- The attendee's full name
- A valid email address. Note that the email address is transcribed from voice, so ensure it is formatted correctly.
- The attendee's time zone (in 'Continent/City' format like 'America/New_York')
- Read the email back to the caller to confirm accuracy

Once all details are confirmed, explain that you will create the meeting.
Create the meeting by using the book_meeting tool with the following parameters:
- start: The agreed meeting time in ISO 8601 format
- eventTypeId: The appropriate ID based on the meeting duration (15min: 1351800, 30min: 1351801, 60min: 1351802)
- attendee: An object containing the name, email, and timeZone

Thank the attendee and inform them they will receive a calendar invitation shortly.

Clarifications:
- Do not inform the user that you are formatting the email; simply do it.
- If the caller asks you to proceed with booking, do so with the existing information.

Guardrails:
- Do not share any internal IDs or API details with the caller.
- If booking fails, check for formatting issues in the email or time conflicts.
```

## Configuration manuelle des webhooks

> **Note**
>
> Si vous utilisez l’intégration Cal.com native, les outils sont configurés automatiquement. Les étapes ci-dessous
> s’appliquent uniquement à la configuration manuelle des webhooks.

#### Stocker votre secret Cal.com

Stockez votre clé API de manière sécurisée avant d’effectuer des requêtes authentifiées. Générez une nouvelle [clé API Cal.com](https://cal.com/docs/api-reference/v1/introduction#get-your-api-keys) si ce n’est pas déjà fait.

L’API Cal.com attend l’en-tête d’authentification suivant :

**`Structure de l’en-tête de requête Cal`**

```plaintext Structure de l’en-tête de requête Cal
'Authorization': 'Bearer YOUR_API_KEY'
```

Stockez la clé dans le stockage des secrets de l’agent pour la sécuriser tout en la rendant accessible lors des requêtes.

> **Warning**
>
> Pour respecter la structure d’authentification attendue par Cal.com, n’oubliez pas d’ajouter `Bearer ` avant la clé API lors de la création du secret.

![Secrets des outils](/docs/_fern-img/5ffae070945a86b74975cd9b56679c2bb76f0ce70d05fe7b10e8e5dff6ddd630.webp)

#### Ajouter des outils à l’agent

Activez les réservations de calendrier en créant deux outils :

1. **`get_available_slots`** : Lorsqu’un utilisateur demande *« Louis est-il disponible mardi à 10 h 30 ? »*, l’agent utilise le point de terminaison [« Get available slots » de Cal.com](https://cal.com/docs/api-reference/v2/slots/find-out-when-is-an-event-type-ready-to-be-booked) pour vérifier les créneaux disponibles.

2. **`book_meeting`** : Après avoir identifié un créneau adapté, l’agent réserve la réunion via le point de terminaison [« Create a booking » de Cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#create-a-booking).

Accédez à la section **Tools** du Dashboard et sélectionnez **Add Tool**. Choisissez **Webhook** comme type d’outil, puis renseignez les sections suivantes :

#### Outil 1 : get_available_slots

#### Configuration

Métadonnées utilisées par l’agent pour déterminer quand l’outil doit être appelé :

| Champ       | Valeur                                                                   |
| ----------- | ------------------------------------------------------------------------ |
| Nom         | get_available_slots                                                      |
| Description | Cet outil vérifie si un créneau donné est disponible dans le calendrier. |
| Méthode     | GET                                                                      |
| URL         | [https://api.cal.com/v2/slots](https://api.cal.com/v2/slots)             |

#### En-têtes

Correspond aux en-têtes de requête définis [ici](https://cal.com/docs/api-reference/v2/slots/get-available-slots#get-available-slots) :

| Type   | Nom             | Valeur                                      |
| ------ | --------------- | ------------------------------------------- |
| Secret | Authorization   | Sélectionnez la clé secrète créée ci-dessus |
| Chaîne | cal-api-version | 2024-09-04                                  |

#### Paramètres de requête

Correspond aux paramètres de requête définis [ici](https://cal.com/docs/api-reference/v2/slots/get-available-slots#get-available-slots) :

| Type de données | Identifiant | Obligatoire | Description                                                                                                                     |
| --------------- | ----------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------- |
| chaîne          | start       | Oui         | Date/heure de début (UTC) à partir de laquelle récupérer les créneaux, par ex. « 2024-08-13T09:00:00Z ».                        |
| chaîne          | end         | Oui         | Date/heure de fin (UTC) jusqu’à laquelle récupérer les créneaux, par ex. « 2024-08-13T17:00:00Z ».                              |
| chaîne          | eventTypeId | Oui         | ID du type d’événement à réserver. Pour 15 minutes, renvoyez abc. Pour 30 minutes, renvoyez def. Pour 60 minutes, renvoyez xyz. |

#### Outil 2 : book_meeting

#### Configuration

Métadonnées utilisées par l’agent pour déterminer quand l’outil doit être appelé :

| Champ       | Valeur                                                                       |
| ----------- | ---------------------------------------------------------------------------- |
| Nom         | book_meeting                                                                 |
| Description | Cet outil réserve une réunion dans le calendrier une fois l’horaire convenu. |
| Méthode     | POST                                                                         |
| URL         | [https://api.cal.com/v2/bookings](https://api.cal.com/v2/bookings)           |

#### En-têtes

Correspond aux en-têtes de requête définis [ici](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#create-a-booking) :

| Type   | Nom             | Valeur                                      |
| ------ | --------------- | ------------------------------------------- |
| Secret | Authorization   | Sélectionnez la clé secrète créée ci-dessus |
| Chaîne | cal-api-version | 2024-08-13                                  |

#### Paramètres du corps

Correspond aux paramètres du corps de la requête définis [ici](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#create-a-booking) :

| Identifiant | Type de données | Obligatoire | Description                                                                                                                     |
| ----------- | --------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------- |
| start       | Chaîne          | Oui         | Heure de début de la réservation au format ISO 8601 dans le fuseau horaire UTC, par ex. « 2024-08-13T09:00:00Z ».               |
| eventTypeId | Nombre          | Oui         | ID du type d’événement à réserver. Pour 15 minutes, renvoyez abc. Pour 30 minutes, renvoyez def. Pour 60 minutes, renvoyez xyz. |
| attendee    | Objet           | Oui         | Informations du participant. Vous devez recueillir ces champs auprès de l’utilisateur.                                          |

> **Note**
>
> La valeur `eventTypeId` doit correspondre aux types d’événements disponibles dans Cal. Appelez
> [ce](https://cal.com/docs/api-reference/v1/event-types/find-all-event-types#find-all-event-types)
> point de terminaison pour obtenir la liste des types d’événements de votre compte, ou créez un autre outil qui le fait
> automatiquement.

**Objet participant :**

| Identifiant | Type de données | Obligatoire | Description                                                                                                                  |
| ----------- | --------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------- |
| name        | Chaîne          | Oui         | Nom complet de la personne qui réserve la réunion.                                                                           |
| email       | Chaîne          | Oui         | Adresse email de la personne qui réserve la réunion.                                                                         |
| timeZone    | Chaîne          | Oui         | Fuseau horaire de l’appelant. Doit respecter le format « Continent/Ville », comme « Europe/London » ou « America/New_York ». |

> **Success**
>
> Testez l’agent en appuyant sur le bouton **Test AI agent**. Ajustez le prompt système si nécessaire.

#### Ajouter la prise en compte de la date et de l’heure

Par défaut, l’agent ne connaît ni la date ni l’heure actuelles. Utilisez l’une des approches suivantes :

1. **Créer un outil de récupération de l’heure** : ajoutez un outil qui récupère la date et l’heure actuelles.

2. **Overrides** : utilisez la fonctionnalité [overrides](/docs/fr/eleven-agents/customization/personalization/overrides) pour injecter la date et l’heure actuelles dans le prompt système au début de chaque conversation.

## Considérations de sécurité

* Utilisez des points de terminaison HTTPS pour tous les appels webhook.
* Stockez les valeurs sensibles sous forme de secrets avec le gestionnaire de secrets ElevenLabs.
* Vérifiez que tous les en-têtes d’autorisation respectent le format requis (`Bearer YOUR_API_KEY`).
* N’exposez jamais les ID de types d’événements ni les détails de l’API aux appelants.

## Liens utiles

* [Documentation de l’API Cal.com](https://cal.com/docs/api-reference/v2/introduction)
* [Guide des clés API Cal.com](https://cal.com/blog/where-is-my-api-key-and-what-can-it-do)
* [Vue d’ensemble des outils ElevenLabs](/docs/fr/eleven-agents/customization/tools/server-tools)