# Chatbot pour la réservation en ligne

## Informations générales

Un chatbot de réservation en ligne est un ensemble de fonctions de création d’entonnoir qui vous permettent d’automatiser le processus de planification des services pour votre entreprise.

Le flux de travail du bot repose sur l’exécution séquentielle de fonctions : réception des données à afficher au client, puis transmission de ces données pour déclencher de nouvelles fonctions et obtenir de nouveaux résultats.

À mesure que le client progresse dans l’entonnoir, vous devez transmettre à chaque bloc suivant uniquement les données correspondant au choix du client — utilisez ces données pour configurer les appels de fonctions suivants.

Grâce à la possibilité de récupérer des données intermédiaires (par exemple, les postes des employés et les catégories de services) et de les transmettre pour filtrer les employés et les services, vous pouvez configurer votre entonnoir de manière flexible et donner au client le contrôle des étapes de sa progression.

{% hint style="info" %}
Toutes les méthodes décrites dans cet article renvoient un tableau de dictionnaires.

Pour travailler facilement avec eux, nous vous recommandons de consulter les sections [Tableaux](broken://pages/9caf9a0da17a5d2e996da6435ef293b02738232c) et [Dictionnaires](broken://pages/be67bee5f5a9659db18350b0ac98c31e1cd347de).&#x20;

De plus, pour utiliser la fonction de génération des actions de l’utilisateur (sélection du service, date, réservation), nous suggérons d’examiner la [méthode tools\_make\_button\_str\_checker](/doc/fr/chatbot/functions/calculatrice/arrays.md).&#x20;
{% endhint %}

Ci-dessous se trouve un schéma du flux de travail du bot, où chaque bloc du schéma représente un appel de fonction spécifique, et les flèches indiquent le flux des données transmises de bloc en bloc. Les informations transmises dans ces flux vous permettent de filtrer les données demandées, ainsi que de créer, annuler ou modifier un horaire de réservation.

<figure><img src="/files/f80297f17c71e2dd894fdc51272a70cd48ad9bd9" alt="" width="563"><figcaption><p>schéma du chatbot</p></figcaption></figure>

{% hint style="info" %}
Pour voir un schéma de configuration détaillé du chatbot de réservation en ligne avec les fonctions utilisées, consultez la section [Exemple de mise en œuvre du bot](#example-of-bot-implementation) de cet article.&#x20;
{% endhint %}

## Récupération des informations sur les branches

Pour créer un entonnoir de réservation en ligne et récupérer des informations sur les branches du projet, utilisez la fonction get\_companies\_for\_booking.

La fonction renvoie une liste contenant les données de chaque branche (entonnoir) pour laquelle la fonctionnalité « Réservation en ligne » est activée dans ses paramètres.

Les données sont fournies sous forme de paires clé-valeur et incluent l’identifiant de la branche (id), le nom (name) et l’adresse (address).

La fonction ne prend aucun paramètre.

### Exemple d’utilisation :

Appel de fonction dans un bloc :

<figure><img src="/files/4e610b3927947c848f817918f6ee69a577a7e835" alt="" width="375"><figcaption></figcaption></figure>

Exemple de données renvoyées :

<figure><img src="/files/c5ad6cf7d96616825d4daaa25ff8ef34b88f6a3d" alt="" width="375"><figcaption></figcaption></figure>

## Récupération d’informations sur les postes ou les catégories de services

La fonction get\_categories\_for\_booking(company\_id) vous permet de récupérer une liste de tous les types de spécialistes ou catégories de services pour une branche.

Chaque élément de la liste renvoyée contient un identifiant (id), un nom (name) et une description (description) du poste ou de la catégorie de service. Les données sont représentées sous forme de paires « clé-valeur » :

#### Paramètres :

<table><thead><tr><th width="310">Paramètre</th><th>Description</th></tr></thead><tbody><tr><td>company_id (obligatoire) </td><td>Identifiant de la branche, format attendu — entier.</td></tr></tbody></table>

### Exemple d’utilisation :

Exemple d’appel de fonction dans un bloc de code :

<figure><img src="/files/bd036febf7201289553b2a4cebe7661290978398" alt="" width="375"><figcaption></figcaption></figure>

## Récupération d’informations sur les employés

Si vous devez fournir des informations sur les employés de la branche, utilisez la fonction get\_employees\_for\_booking.

L’appel renverra une liste de données contenant l’identifiant de l’employé (id), le nom (name), les informations (information) et l’intitulé du poste (job\_title).

Vous pouvez également filtrer les employés par liste de services, intitulé de poste ou catégorie de service. Pour ce faire, passez un paramètre supplémentaire dans l’appel de fonction : service\_ids, job\_title\_id ou service\_category\_id.

#### Ordre des paramètres :

company\_id -> service\_ids -> job\_title\_id -> service\_category\_id

#### **Paramètres :**

<table><thead><tr><th width="287"></th><th></th></tr></thead><tbody><tr><td>company_id (obligatoire)</td><td>Identifiant de la branche, format attendu — entier ;</td></tr><tr><td>service_ids (facultatif)</td><td>ID de service ou liste d’ID de services, format attendu — un entier ou une liste d’entiers entre crochets séparés par des virgules, par ex. [844, 845]</td></tr><tr><td>job_title_id (facultatif)</td><td>ID du poste, format attendu — entier ;</td></tr><tr><td>service_category_id (facultatif) </td><td>Identifiant de la catégorie de service, format attendu — entier ;</td></tr></tbody></table>

**Remarque :**

Si vous souhaitez récupérer tous les employés d’une branche, laissez les valeurs de service\_ids, job\_title\_id et service\_category\_id vides.

* Exemple d’appel : get\_employees\_for\_booking(14275391)

Pour filtrer les employés par une liste d’ID de services, passez la liste comme deuxième paramètre et laissez job\_title\_id et service\_category\_id vides.

* Exemple d’appel : get\_employees\_for\_booking(14275391, \[844, 845])

Pour filtrer les employés par intitulé de poste, passez l’ID au paramètre job\_title\_id et laissez service\_ids et service\_category\_id vides.

* Exemple d’appel : get\_employees\_for\_booking(14275391, “”, 1021)

Pour obtenir les employés fournissant des services d’une catégorie spécifique, laissez service\_ids et job\_title\_id comme chaînes vides, et passez l’ID de catégorie sélectionné à service\_category\_id.

* Exemple d’appel : get\_employees\_for\_booking(14275391, “”, “”, 1019)

### Exemple d’utilisation :

Appel de fonction dans un bloc de code :

<figure><img src="/files/a73b9a5d0588ec0c9ce7c11a58fb0a6eb6ea9aa0" alt=""><figcaption></figcaption></figure>

Exemple de données renvoyées :

<figure><img src="/files/a8e1de047b5b9dd21b0ff1011ef283c6bdc45ee4" alt="" width="375"><figcaption></figcaption></figure>

## Obtenir des informations sur les services

Pour obtenir des informations sur les services fournis par la branche, utilisez la **get\_services\_for\_booking** fonction.

À la suite de l’appel, le bot renverra une liste contenant les données des services. Chaque entrée de service comprend un identifiant (**id**), un nom (**title**), une description (**description**), un prix (**price**), et la durée du service en minutes (**duration**).

Vous pouvez filtrer la liste obtenue par catégorie de service, par employé, ou par les deux à la fois. Pour ce faire, passez les paramètres supplémentaires **service\_category\_id** et/ou **employee\_id** lors de l’appel de la fonction.

#### Ordre des paramètres :

company\_id -> service\_category\_id -> employee\_id

**Paramètres :**

<table><thead><tr><th width="310"></th><th></th></tr></thead><tbody><tr><td>company_id (obligatoire) </td><td>Identifiant de la branche, format attendu – entier ;</td></tr><tr><td>service_category_id (facultatif) </td><td>Identifiant de la catégorie de service, format attendu – entier ;</td></tr><tr><td>employee_id (facultatif) </td><td>Identifiant de l’employé, format attendu – entier ;</td></tr></tbody></table>

#### Remarque concernant la section « Paramètres » :

Si vous souhaitez récupérer tous les services d’une branche, laissez **service\_category\_id** et **employee\_id** les valeurs vides.

* Exemple d’appel : get\_services\_for\_booking(14275391)

Si vous souhaitez filtrer les services par catégorie et/ou par employé, passez les identifiants correspondants dans les **service\_category\_id** et **employee\_id** paramètres. Pour filtrer par un seul paramètre, fournissez une chaîne vide pour l’autre.

Exemples d’appels :

* get\_services\_for\_booking(14275391, 1018) - filtre par catégorie de service ;
* get\_services\_for\_booking(14275391, “”, 512978) - filtre par employé ;
* get\_services\_for\_booking(14275391, 1018, 463665) - filtrage par les deux paramètres ;

### &#x20;Exemple d’utilisation :

Appel de la fonction dans un bloc :

<figure><img src="/files/5a3c8dbc805135fb10f26daf354582481b69f3ec" alt=""><figcaption></figcaption></figure>

Exemple de données renvoyées :

<figure><img src="/files/b628bd23f30b2ee7e4393c8003a6bb7997e98fd9" alt="" width="375"><figcaption></figcaption></figure>

## Obtenir les dates de réservation disponibles

Après que le client a sélectionné les services pour la réservation, il doit récupérer une liste des dates de réservation disponibles.

Pour générer cette liste, utilisez la **get\_dates\_for\_booking** fonction.

La fonction vérifiera les créneaux horaires disponibles et renverra une liste de dates appropriées au format « jour.mois.année ».

#### L’ordre des paramètres est le suivant :

company\_id -> service\_ids -> employee\_id -> days\_limit

#### Paramètres :

<table><thead><tr><th width="309.33941650390625"></th><th></th></tr></thead><tbody><tr><td>company_id (obligatoire) </td><td>identifiant de la branche, format attendu – entier ;</td></tr><tr><td>service_ids (facultatif)</td><td>liste des identifiants de services pour la réservation, format attendu – entier ou liste d’entiers entre crochets séparés par des virgules (par ex. 842 ou [842, 843]) ;</td></tr><tr><td>employee_id (facultatif)</td><td>identifiant de l’employé, format attendu – entier. Si la valeur du paramètre est laissée vide ou transmise sous forme de chaîne vide “”, la fonction recherchera les dates disponibles parmi tous les employés qui fournissent l’ensemble complet des services de la liste service_ids ;</td></tr><tr><td>days_limit (facultatif)</td><td>nombre de jours à partir de la date actuelle dans la limite desquels la recherche de dates disponibles est effectuée, format attendu – entier, valeur par défaut – 14 (jours) ;</td></tr></tbody></table>

### Exemple d’utilisation :

Appel de la fonction dans un bloc :

<figure><img src="/files/4e95b6fea2bf9b18a4612370e1650f5a7e5b3d12" alt=""><figcaption></figcaption></figure>

Exemple de données renvoyées :

<figure><img src="/files/69a804d53346688588ddde74da7d682714c24269" alt="" width="375"><figcaption></figcaption></figure>

## Obtenir les créneaux de réservation disponibles

Pour obtenir une liste des créneaux de réservation disponibles, utilisez la **get\_slots\_for\_booking** fonction.

La fonction vérifiera les disponibilités à la date sélectionnée et renverra une liste de créneaux libres au format « heures:minutes », par exemple \[“09:00”, “11:00”, “14:30”, “16:00”].

#### L’ordre des paramètres est le suivant :

company\_id -> service\_ids -> employee\_id -> slot\_interval

#### Paramètres :

<table><thead><tr><th width="284"></th><th></th></tr></thead><tbody><tr><td>company_id (obligatoire)</td><td>identifiant de la branche, format attendu – entier ;</td></tr><tr><td>service_ids (facultatif) - </td><td>liste des identifiants de services pour la réservation, format attendu – entier ou liste d’entiers (par ex. 842 ou [842, 843]) ;</td></tr><tr><td>date (facultatif) - </td><td>date pour la vérification des créneaux, format attendu – chaîne au format « jour.mois.année », par exemple “01.01.2024” ;</td></tr><tr><td>employee_id (facultatif)</td><td>identifiant de l’employé, format attendu – entier. Si la valeur du paramètre est laissée vide ou transmise sous forme de chaîne vide, la fonction recherchera les créneaux libres dans les plannings de tous les employés travaillant à la date sélectionnée et fournissant l’ensemble complet des services de la liste service_ids ;</td></tr><tr><td>slot_interval (facultatif) </td><td>intervalle en minutes entre les créneaux disponibles, format attendu – entier, valeur par défaut – 30 (minutes) ;</td></tr></tbody></table>

### Exemple d’utilisation :

Appel de fonction dans le bloc :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXc7GJ9EjdCro_idrF14dVYscslN653oUESQaAFjHBWZrSO8q4joGD95kXjFfaX-E2oRT_nLCdKNrGdN9j5wBVJFKOgiyG2ZGDJNjR-l3OAhvP2E0pPTA0dOiYD3WxGdxdD57bRO-UC3CoGVVO4XV3Cq5BNpc8cZ1S6S0lsnlw?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

Exemple de données renvoyées :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXe6V_i1iPe4C6A6CDJPu6GNK4fFLzUzq4ktYRRf01jRRgvRl87Ir3hWs2GbWRsYatbz0o8srDyE6pHklrvZ129tilNr5fuR9C_lhQP75MO-_Mfi9JVgcTvHoldK6Y8dcZ_cQamJp2JDxBfA8OU3a9cDgPavncaz-9aU_p31qg?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

## Créer une réservation

Pour créer une réservation en ligne, utilisez la **create\_booking** fonction.

Si la réservation réussit, la fonction renverra des informations sur l’état de l’opération (status) avec la valeur True et les détails de la réservation (booking) au format « clé : valeur ».

Les données de la nouvelle réservation incluent :

* identifiant (id),&#x20;
* date (booking\_date),&#x20;
* heure (booking\_time),&#x20;
* noms des services (services),&#x20;
* durée de la réservation (service\_duration),&#x20;
* coût total (total\_cost),&#x20;
* nom de l’employé assigné (employee\_name) et son intitulé de poste (job\_title),&#x20;
* nom de la branche (company\_name) et adresse de la branche (company\_address)&#x20;

au format « clé : valeur ».

#### Ordre des paramètres :&#x20;

company\_id -> service\_ids -> booking\_date -> booking\_time -> employee\_id

Paramètres :

<table><thead><tr><th width="288"></th><th></th></tr></thead><tbody><tr><td>company_id (obligatoire)</td><td>identifiant de la branche, format attendu – entier ;</td></tr><tr><td>service_ids (obligatoire)</td><td>liste des identifiants de services pour la réservation, format attendu – entier ou liste d’entiers (par ex. 5 ou [5, 10, 15]) ;</td></tr><tr><td>booking_date (obligatoire)</td><td>date de réservation, format attendu – chaîne au format « jour.mois.année », par exemple “15.01.2024” ;</td></tr><tr><td>booking_time (obligatoire) </td><td>heure de réservation, format attendu – chaîne au format « heures:minutes », par exemple “12:30” ;</td></tr><tr><td>employee_id (facultatif)</td><td>identifiant de l’employé, format attendu – entier. Si la valeur du paramètre est laissée vide ou transmise sous forme de chaîne vide “”, la fonction réservera avec un employé aléatoire qui fournit l’ensemble complet des services de la liste service_ids, s’ils sont disponibles à la date et à l’heure indiquées ;</td></tr></tbody></table>

### &#x20;Exemple d’utilisation :

Appel de fonction dans le bloc :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdb3Fq2gqGtJ-QK342Hr12Ckv-krW_04_uAeJsCcnKpCq_iTC8mAxXjXvc_UqOVAOfm7WGcHYlfcvZjImoZXoNuPYCctsZOPB35toHI4zWMmK-sr3GoEdujlh8YQRxXsF_qN-I836wsU3AKhMvP8t0KiF0h6syWhECIxsynkQ?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

Exemple de réponse de réservation réussie :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfsZPfW9v1VoJqC3nNqtnlLQJS-KhAaEi3uUzhz26vYmcxajMRMwd7NnZVZB2LpmavglbNibSpAAJIlo0mbge1_K6rguZTf1tE4NxkBPmKQ1GCy0x47vzfkIV5DTN-R-RlYpMZ-bfAQ-vrZ_tEM6mugSbn0E5BAjHCVN2Gdmw?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

Lors de la création de réservations puis de la demande à nouveau des créneaux disponibles, vous constaterez que les listes ont raccourci. Par exemple, le 05.02.2024, le créneau de 18:00 n’est plus disponible (il n’était libre que dans l’emploi du temps de Victoria), et pour Paul Thompson, les réservations pour une coupe homme et une taille de barbe peuvent désormais être effectuées de 9:00 à 14:00, puisque la durée totale des services est de 1 heure et 45 minutes, et Pavel a déjà une autre réservation à 16:00.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfglzV1DHx8clVfshVMInDi9MOS6sAlPGG8Axr6FYKBAeINwRaj2gvJMRYNcec7ZmDCnFKYCkU64AQqz2mgMWxCnp4G4YPRPb6C9D9g9KLKFM2e2bCVpBA2refY_fChq-W1uNy196r5d8dNZUudGRg-2qgN9NX20lCteL8AZw?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

## Obtenir des informations sur les réservations à venir d’un client

Vous pouvez consulter les réservations actuelles d’un client en appelant la **get\_bookings\_info** fonction.

La réponse renverra une liste de réservations actives, avec des informations détaillées pour chacune.

Les informations de réservation sont fournies au format « clé : valeur » et incluent :

* identifiant de réservation (booking\_id),&#x20;
* date (booking\_date),&#x20;
* heure (booking\_time),&#x20;
* identifiants (service\_ids) et noms (service\_names) des services sélectionnés,&#x20;
* durée de la réservation (booking\_duration),&#x20;
* coût total des services (total\_cost),&#x20;
* identifiant (employee\_id) et nom (employee\_name) de l’employé assigné, ainsi que son intitulé (job\_title),&#x20;
* identifiant de la branche (company\_id)&#x20;
* nom de la branche (company\_name) et adresse (company\_address).

#### Paramètres :

<table><thead><tr><th width="253"></th><th></th></tr></thead><tbody><tr><td>client_id (facultatif)</td><td>ID client, obligatoire — Ce paramètre est requis si vous souhaitez récupérer les réservations d’un client spécifique ; par défaut, il utilise l’ID client de la conversation avec le bot.</td></tr></tbody></table>

### Exemple d’utilisation :

Appel de fonction dans le bloc :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeKlJcFxIx3cc_3vb8g0MARiqu6iNE4eW8BEmVY21MjT74GxS2U7JKFaAn6Sia99v4kQ4O8HuHFYkQJs8jCNmtpZHIkKq1SZ3_3BCBSA7mCs_iXVk6Ucu8hWTOHN7mPa0J5LGG5QSRK8TSP9BEZracVVNQBZKuZkLJx36r_TA?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

Exemple de données renvoyées :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcHzfzRWdUXAmr-iwrHhcdpHYraOD--i4jjI5ftsc-KRzzEOOFArT3hKZE--WucI4m3_b2v0DK99dV4EL2BQ9d0U2q-2fGHM6RiCHX_YUl7kgI-SA4zJIHs4zFte6GhgQAMfUY9Qim4THusxMhKielEnXQuHzapLqmh_oZm?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

## Modifier la date et l’heure de réservation

Un client peut modifier indépendamment la date et l’heure de la réservation. Pour cela, il doit accéder au bloc de l’entonnoir où la **modify\_booking\_time** fonction est appelée.

Si l’opération réussit, la fonction renverra l’état de l’opération (status) avec la valeur True et un message (message) « Heure de réservation modifiée » au format « clé : valeur ».

#### Ordre des paramètres :&#x20;

order\_id -> new\_date -> new\_time

#### Paramètres :

<table><thead><tr><th width="300"></th><th></th></tr></thead><tbody><tr><td>order_id (obligatoire) </td><td>identifiant de réservation, valeur attendue – entier ;</td></tr><tr><td>new_date (obligatoire)</td><td>nouvelle date de réservation, format attendu – chaîne au format « jour.mois.année », par exemple “16.01.2024” ;</td></tr><tr><td>new_time (obligatoire)</td><td>nouvelle heure de réservation, format attendu – chaîne au format « heures:minutes », par exemple “14:30” ;</td></tr></tbody></table>

### Exemple d’utilisation :

Appel de fonction dans le bloc :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcDyllYwQDcuLOWIAFTCHb4A765baTgyFrir86V0h3ja3OQpECP2D5TszmK-M_PbKmQRVbp1LFLUMc_JIU4m9562kGnWz9WILVhjpMhf1jZw5bOUXCuBbUasMKWeaTo0pATOPujX4QK6laEk2TlXPU6Qycc7xlih1KbEBxK?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

Réponse du bot pour une opération réussie :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdKqYrp28WS18aq3-_0I_3iDJUc2FmzwsilP1-5do9jmVjjVJ3Igfflo9rMnU_KEWWdAUYSZtjp6B0bVxwBcc7P21RvWVIeCOEAq0pNEh1KYDxJATu71S1Fiil4gicJeFuq5MAcp7bnQdUqRf8kjrWMXuA2_Fl09tjKwEPI?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

Le créneau précédemment occupé de 16:00 est maintenant disponible pour une réservation, et la création d’une nouvelle réservation pour les mêmes services ne peut désormais se faire qu’à partir de 11:00

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeM-8-vu5dfYf4DlMnzlWTk08tQm80ne-qTBJleANK0Mjn-TuZWyMbO13Hex4FzdwvCgQspNeErgWwQkTZIejzDWK1BItCGxrLpAi9D0XFx75rqFvUF9UChQ_LoZqUNozZzKwubmGkx7XSgsTm-_1CBORCt5Nidh5X4ohbx?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

Dans les informations de réservation du client, vous verrez également l’heure de réservation mise à jour :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeCyMMrRSlqAdCpmu0-HWsS6iKxW6xHjdtcnZ2NjxLTaRy7W_w3mhyLZQ2PjZgpvbmHRnRML-5A6hTwHpgpLaTerklX-opM8_UTQAeuT-ev2bd7AvC6N1ynPf50EUVRs6m4hZU4YIKnWQRamRcGbror5uJ7ElZ2v2KPtX1NxQ?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

## Annuler une réservation

Un client peut annuler indépendamment une réservation existante. Pour cela, il doit accéder au bloc où la **cancel\_booking** fonction est appelée.

Une annulation réussie renverra l’état de l’opération (status) avec la valeur True et un message (message) « Réservation supprimée » au format « clé : valeur ».

Ordre des paramètres :

pipeline\_id -> order\_id

Paramètres :

<table><thead><tr><th width="321"></th><th></th></tr></thead><tbody><tr><td>pipeline_id (obligatoire)</td><td>identifiant de la branche, valeur attendue – entier ;</td></tr><tr><td>order_id (obligatoire)</td><td>identifiant de réservation, valeur attendue – entier ;</td></tr></tbody></table>

### Exemple d’utilisation :

Appel de fonction dans le bloc :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdWFqf619l5j1eQoe4p6QCPqGGsqcyEefKLs5PJxPwecillJaxUnQSC5eHFcT2olsrM62PHJDVGyxeD6Tl2xg3id27f-p51spmVZFjlDhSwzw3TwMx-CbQT9n3fnjYLPCO4wlqtKdB0cd1W36dp9wXYg4gEVJh6eketyDUQ?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

Réponse du bot pour une annulation réussie :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXe7FcrjKQxzoEgo3wfMuUt0a9zkPVkb02ojx5pZ3KYWU5NfLazmLhgCaNxvigreYXXfzYFEhd5KyF7D3808VLBGl5Cte7YRXI0cWQK3J9ZV05G5y5XUIXGq1Arcac2KrPmHnCCakarcTFXd_9X5_4yYsI6j4rpMySaZr3lA?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

Après l’annulation, les créneaux “09:00” et “10:00” sont de nouveau disponibles pour la réservation :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcRLLDJ0un8QPUj11yC8VDy2TlbbgUHuDd13YSQ3AZU3ey4Cg00SMEke5LFPKWGHR8em7BWHiH8l-bSqGICNAU5CP9ORBGI9CFMKziB0JQLZA0QUvYJ8q-SXXQGQsPCnEWdNrDZ1G7bZupR4zOLgGpJt9TgZBxG_R1MPf9f?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

## Exemple de mise en œuvre du bot

### Paramètres du chatbot

**Bloc n°1.** Démarrage. Aucune action spéciale requise

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcXoXRmydVuSiBv9lAWBG-5rDy8cIcNbk2zjsJ7o5kxShJEExU13A9O2v9pFuqG6oTndOvrnRft3jHQaZFf-7RGYiFM09FPzpQdrdS47_ttQcgLvbDExj9xIBEjJ80qVPHSAFzfth5zcO_rCvqk66FaK-Nx?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption><p>Bloc 1.</p></figcaption></figure>

**Bloc n°2**. Dans ce bloc, nous récupérons les données qui seront fournies au client.

Description du contenu du calculateur :

* comp\_id - identifiant du bloc de service, que l’on peut trouver dans la section « Services » ;
* data - informations sur les services fournis
* res - dictionnaire avec les données nécessaires pour générer les boutons et définir les conditions
* numbered\_list - peut être utile si la liste des services doit être dupliquée sous forme de texte
* buttons - tableau de boutons générés à partir des données de service
* checker - tableau de noms de services, utilisé pour définir les conditions de passage au bloc suivant

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdLGPcvhDRumGklk525zCB4VEqziavYPoNoqJiC3XD036d1R_jcSF2yeDhFZvrTOTxFrALYNF9_ezfdbKxgn6fSuIkTyCzHb9Cxaw3cW9ywtyUbvf3Bezb3ukuZC3fFuM5e0Jb8tNCyWRqUv-8aev2MHeo?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption><p>Bloc n° 2</p></figcaption></figure>

**Bloc n°3**. Récupérer et afficher les données du service sélectionné.

title - dans le tableau de dictionnaires **data**, recherchez le dictionnaire où la clé **title** est égale à **question**. Dans ce dictionnaire, récupérez la valeur pour la même clé **title**

description - de même, récupérez la valeur de la clé **description**

price - de même, récupérez la valeur de la clé **price**

serv\_id - de même, récupérez la valeur de la clé **id**

b - créer un tableau de chaînes qui seront affichées sous forme de boutons sous le message

res - à partir du tableau **b**, créer un tableau de dictionnaires comme dans le bloc précédent

buttons - obtenir le tableau pour l’affichage des boutons

Nous avons maintenant des variables contenant le nom, la description et le prix du service sélectionné par le client

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfoMVt3v-buSCBlpe9hKGoFoemSKQW0oeLLZ7LZwZ24vR507mCOTzuewDhUsfCangNsex0sKbdc9k-HeJXQ-ermTNsf_p3O4xtlpygOhFmzyWZ2cjCDxHUUdZq0gCsiSGJmSWIkN04n4XOkpX2t6nHVORhb?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption><p>Bloc n° 3</p></figcaption></figure>

**Bloc n°4.** Afficher les dates de réservation disponibles

print\_dates - utilisez la fonction pour obtenir les dates de réservation disponibles pour le service sélectionné

print\_dates - ajoutez la chaîne « Retour à la liste des services » au tableau des dates si vous voulez que ce bouton apparaisse avec les dates.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeNbqnf6RHcvKlt8ECsxm7uUQpLClSJ2kVgW9HPi35Pmq5XtsAR_yXWCxHr_0CYwJ4whUQfdof71uxnPt8BHxobfYJdxGeDhmf3BXd5NHAPyC12RT6cRIzn8g_Kda70WRAhjYhJ85Vfhi9i40aqUu-Kvg8E?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

Pour la flèche de retour à l’étape précédente, définissez une priorité plus élevée que pour la flèche avec #{checker}, car #{checker} contient également la condition « Retour à la liste des services ».

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcuUIlqDrtiEGIX7Dk8d1YILa_s9F2bRzrgcgQ_eytukzhEe2IDatqW7VPPgyQeLfzOYqtY-vL2rdCaGYSf3PSRpe4JSXlHD68TJHrOHec6tBRvMOp_sIMs3bqWAQKX9jWPDsWjY-CGQnZEc8QPr2ZGikXQ?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**Bloc n°5.**\
Dans le bloc n°5, nous enregistrons la date choisie par le client. Cela doit être fait dans un bloc séparé, car aux étapes suivantes, lors du retour au bloc 6, la variable question ne contiendra plus la date choisie par le client.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfBnoXAoC-hwhm7MJk242wb1qbGz4qwZr-L180d271_eNanul0suKBZUdiYAy95nTZD7rVZv5bYgnB8dZ3u0pW75yMtdz2mQ6bzqTTAxEhVZAihD-VCj-45M9jldb6Ic_JuyDEWsvlodPlxY-2150k62HuW?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**Bloc n°6.** Sélection et affichage des créneaux disponibles pour la réservation.

data - nous récupérons les créneaux disponibles.

La logique est la même que dans le bloc n°4 avec l’affichage des dates disponibles. Il est également important de ne pas oublier de configurer une priorité plus élevée pour la flèche « Retour au choix de la date »

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdO4UUM3CyFvJN5lNulwUwHbEWQhng6kaW_YVmOrbkP-2VoQHB3Sg09TkpPv5joYo3EV_9iaFI68B4dfgzL49RveaMzZHQIOs7mKyzFgsA6PKrwrKM0oMKZVGMZjbyz2rxIi0kpaOZFZIStEzUvASiyunli?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**Bloc n°7.** Enregistrement de l’heure choisie dans une variable et tentative de prise de rendez-vous pour le client.&#x20;

choosed\_time - enregistrons l’heure

a - tentative de prise de rendez-vous pour le client

booking\_result - nous obtenons le résultat de l’exécution de la fonction.&#x20;

Il est nécessaire d’obtenir le résultat, car plusieurs personnes peuvent tenter de réserver au même moment.&#x20;

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXczzYBOEvinNi3ixDewD_V6XrrfAwjChrujdPmo7MK1m1qV-8depW4IV8_-VxA6_u2RKwTBYifAi4q5kxN1OEG_6m9exNS-hAvtB2VH49kP-X5uuAboxpgb--ugGdit-JI6inwRHXMQtbPbqSy-oe3ZvLi_?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**Bloc n°7.1.** La réservation du client a échoué.

Ce bloc sert uniquement à afficher un message d’erreur. Après l’envoi du message, nous renvoyons le client au choix de l’heure pour la réservation

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXflFxwu5IdfEsIzK1dpt4STbIc6GY2HDz-NvpW6vmG12aBRj5TWgaN2O_YWlLaCSN3B52bMDf8EIMo2kKofNkTzD_TqRWu7F5rEL1NiFrlPiJwLntEG9DgdSKYocFtNQMADKTMJFHADE4fPUgeFJJ5crM3y?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**Bloc n°8.** La réservation a réussi.

Nous informons le client qu’il est réservé pour le service et affichons le bouton de paiement.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXebWZ4RSKanJHHLwJmqRzx_sQAwEqpnz7hMmMOqJziY9J4IpSAPevmApHRz_oR3GEIuceV_IOAi1XdpUMqNtgC5nI-vB75hIq_9NDudNSGzYESotA-rl-WCFjLtcVQA6kiFvcDvij0koA2ttg4NVvwwiQI?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

Exemple de configuration des boutons.&#x20;

Pour la configuration, nous utilisons les variables obtenues dans le bloc n°3 :

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcuWNRouJXZN4GcbOP_g5b2cBGtzMjW3t20fJDYvPqy02QHr_Mx7seJfSJSjnieOxRiuZ2eQ8F8iJEcBkllOYNYR4cXYGFfuK69jsVhnLUuq-3a2a5Lts8UXEJyP1m0DvNoEmyDiMcXXpLQX8srFEgvnSo?key=Gdkru5ZyRiCm0ujtl74quw" alt="" width="375"><figcaption></figcaption></figure>

**Bloc n°8.1.**

Dans ce bloc, nous confirmons le paiement réussi. La transition vers le bloc est configurée en fonction du système de paiement utilisé

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcKwiimzQWaWQdY87DhVF0EHgXGIN1am1ybhpQIN2ZjubanvoORX4nF86oxQfeDUH0rSfPPLQp4BVRDYJh0wMWQRp-ko-Dm8PmWeBPyA9KvPiSwDt6GkzUrsFw9ITDDjH7-JsG97mxgwZ_8OtCMFVVkhPza?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**Bloc n°8.2.** Le client n’a pas payé le service. Annulation de la réservation

Si le client n’a pas payé le service à temps, nous pouvons annuler la réservation si nécessaire.

or\_id - nous récupérons l’id de la commande

cancel\_status - après l’exécution de la fonction, nous obtenons la réponse indiquant si l’annulation a été effectuée avec succès.&#x20;

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXe0S7A8roVZ-cqy20A7SABHlZEH561HeUudCIFcTEmV19DibNgEWLoEqZ45pWtukMuEdaxuJ1KjsvAiR7hFeGCrNLIMBghZIglifArlGWnBA1O6uKfGoeHRyfYihmIH1EalHVrqOKJKW6AsvOraqTIM2k6j?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

Dans cet exemple, le client accédera au bloc d’annulation 5 secondes après avoir reçu le lien de paiement ; dans une situation réelle, vous pouvez définir la durée souhaitée, mais n’oubliez pas d’activer le bouton « Annuler si le bloc est quitté ».

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXf4JnYF9gJdYh1IeHnh0KIP8TBthzNABp_TjejLyQXugQBBb_Xvz4yfoedExR9VJy6koxfpNqGkYe38fioTFrzuuioJjVVVp2HLB9w8gRt5LqMcFX5samcaj30aBLV69MVTCNrg2bEbnVaoxv5IuUidtB3Y?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

Schéma complet :<br>

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXelLMX7_UQ0Op_QDn8S-GKMp68O-cJDYMFviZLju8TUjMMYKIMwyv9AePru93ccedeKajHSx4kP5e4t1XFfAtabSJBfluvE7q-VsZkx1rO3ICGBm0dvVUtEriaro8UXixY6XratDgILrSOMHfXIpfaHb8Y?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

### Démonstration<br>

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcgQC7kI1xOkzZOYyijAdDELqmlgit1O615fU0RQjYF-g-ztgkNayFf2gaPupplvgiAoE1T_bOdSh-dLO4Oaqu2AVnmh-5uooWhCc3BOqqdIzgQh6gV4r3l86VJHRgXEOZTmKD3HqbXoTuRrpZ8qYJOj4Ol?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcMs9Sg7IOqKfcvVdL5ud1odnPrlHg0Acfa71bnpFAfmQ_7GP4AsKI7JI2GVzAQZV9a2d0jMGmFamGiuD_mMG00SsfAQZvje_aPGybcmsKBU0F2VpTbv5H9qPPA5gszFwQyZaaG3TH9HDutSZE19JzNo5nV?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

## Callback de réservation

Dans la conversation avec le client, après la réservation, un callback — une notification de réservation — de la forme suivante sera envoyé :

<figure><img src="/files/8cd5160327d0584c2547488f8e2ab271b8303bfb" alt="" width="464"><figcaption></figcaption></figure>

<mark style="color:orange;">**new\_order\_in\_calendar**</mark> - partie non modifiable du callback&#x20;

&#x20;<mark style="color:yellow;">**\[489046159]**</mark> - order\_id identifiant de la demande&#x20;

<mark style="color:red;">**Ajout d’une réservation date\_et\_heure\_de\_réservation**</mark>

<mark style="color:purple;">**pour 30 minutes**</mark> - durée du service&#x20;

<mark style="color:red;">**Objet : Test 30**</mark> - à quel objet exactement la réservation a été ajoutée

Voici l’apparence du callback :

***`new_order_in_calendar: [489046159] Réservation ajoutée du 2025-06-01 14:00 au 2025-06-01 14:30 pour 30 minutes. Objet : Test 30`***

Vous pouvez configurer la réaction au callback en définissant la valeur dans la condition du bloc :

<figure><img src="/files/84a1f224892c427c1b49136a33b611d2e29eccda" alt=""><figcaption></figcaption></figure>

Dans le bloc, vous pouvez écrire le message de retour nécessaire au client.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/fr/booking/chatbot.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
