> For the complete documentation index, see [llms.txt](https://docs.dydu.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dydu.ai/developpeurs/chatbox-v5/mise-en-place-et-integration.md).

# Mise en place et intégration

## Intégration

### Intégrez votre chatbox à une page web

Après avoir créé un chatbot à partir de dyduBox ou depuis notre dépôt public [Github](https://github.com/Do-you-dream-up/CV5) vous pouvez l'intégrer sur votre site web.

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

Afin d'intégrer le chatbot sur votre site web, vous devrez :&#x20;

* Intégrer un script sur la page web où vous voulez que le chatbot soit affichée.
* Ce script se trouve sur la page de publication de votre intégration sur canaux (exemple ci-dessus).
* Jusqu'à la version **edge\_2024-11-26** , ce script se terminait en `bundle.min.js`.
* à partir de la version **edge\_2024-12-10,** il y'a un changement à apporter sur les URLs de vos sites web , car ce script se termine maintenant en `loader.js`. Cette modification a été apportée pour résoudre des problèmes de cache qui pouvaient se produire lors de la publication de nouvelles versions. Une rétrocompatibilité est assurée avec l'ancienne notation `bundle.min.js` mais il est fortement recommandé d'utiliser la nouvelle URL en `loader.js`.

Exemple de script d'intégration :

```
    <head>

    </head>
    <body>
    <script src="https://cdn.doyoudreamup.com/dydubox/configurations/xxxxxxxx/loader.js"></script>
    </body>

```

Le script  `loader.js`chargera alors tous les fichiers nécessaires au bon fonctionnement de la chatbox depuis le serveur d'hébergement.

### Définir le mode de qualification de la chatbox (optionnel)

Lorsque vous intégrez le script `loader.js` dans une page web, vous pouvez spécifier si les conversations générées sur cette page seront considérées comme des tests ou de production.

* Les conversations de test seront enregistrées dans le BMS et affichées dans le menu **Apprentissage - Conversations** (avec les filtres "Tests seuls" ou "Avec tests"). Elles ne seront pas comptabilisées dans le module **Statistiques**.
* Au contraire, les conversations de production seront enregistrées et affichées dans le menu Conversations **ET** seront comptabilisées dans le menu Statistiques.

Pour ce faire, vous pouvez ajouter une variable à la page HTML qui intègra votre chatbox : `DYDU_QUALIFICATION_MODE`.

* Si la variable **`DYDU_QUALIFICATION_MODE` = true**, alors les conversations seront considérées comme des **tests** et ne seront pas comptabilisées dans le menu Statistiques.
* Si **`DYDU_QUALIFICATION_MODE` = false** OU la variable n'est pas spécifiée, alors les conversations seront considérées comme **production** et seront comptabilisées dans le module Statistiques.

Exemple :

```
    <head>

    </head>
    <body>
    <script src="https://cdn.doyoudreamup.com/dydubox/configurations/xxxxxxxx/loader.js"></script>
    <script> DYDU_QUALIFICATION_MODE = true </script>
    </body>

```

## Fonctions de la chatbox

### Gestion de la conversation et des variables

Ces fonctions permettent de manipuler le flux de conversation, l'historique et les données de contexte.

Elles doivent commencer par `window.dydu.chat`

<table><thead><tr><th width="305">Méthode</th><th width="290">Description</th><th>Paramètres</th></tr></thead><tbody><tr><td><code>setRegisterContext(name, value)</code></td><td>Enregistre une variable de contexte persistante pour la session de l'utilisateur.</td><td><code>name</code> (string), <code>value</code> (string)</td></tr><tr><td><code>setDialogVariable(name, value)</code></td><td>Définit une variable de dialogue qui sera envoyée avec la prochaine interaction utilisateur.</td><td><code>name</code> (string), <code>value</code> (string)</td></tr><tr><td><code>handleRewordClicked(text, options)</code></td><td>Simule l'action d'un clic sur un bouton de reformulation (reword).</td><td><code>text</code> (string), <code>options</code> (object)</td></tr><tr><td><code>clearInteractions()</code></td><td>Efface l'historique de la conversation actuellement affiché dans la Chatbox.</td><td>Aucun</td></tr><tr><td><code>reply(text)</code></td><td>Affiche un message dans la Chatbox sans générer d'interaction côté serveur.</td><td><code>text</code> (string)</td></tr></tbody></table>

### Contrôle de l'interface utilisateur (UI)

Ces fonctions permettent de modifier l'apparence et l'état des éléments de l'interface.

Elles doivent commencer par `window.dydu.ui`

<table><thead><tr><th width="305">Méthode</th><th width="290">Description</th><th>Paramètres</th></tr></thead><tbody><tr><td><code>lock(value)</code></td><td>Verrouille/déverrouille le champ de saisie utilisateur.</td><td><code>value</code> (boolean)</td></tr><tr><td><code>placeholder(value)</code></td><td>Modifie le texte d'aide affiché dans le champ de saisie (placeholder).</td><td><code>value</code> (string)</td></tr><tr><td><code>upload()</code></td><td>Affiche le bouton de téléchargement de fichier à la prochaine interaction</td><td>Aucun</td></tr><tr><td><code>sidebar(open, { body, title })</code></td><td>Ouvre ou ferme la barre latérale de la Chatbox et définit son contenu/titre.</td><td><code>open</code> (boolean), <code>body</code> (content), <code>title</code> (string)</td></tr><tr><td><code>toggle(mode)</code></td><td>Change l'état de la vue de la Chatbox : <br>- 0 -> caché<br>- 1 -> minimisé<br>- 2 -> ouvert<br>- 3 -> plein écran</td><td><code>mode</code> (number)</td></tr></tbody></table>

### Gestion du bot, de la localisation et du contexte global

Ces fonctions gèrent les paramètres fondamentaux de l'environnement (langue, espace, identifiant du bot).

<table><thead><tr><th width="305">Méthode</th><th width="290">Description</th><th>Paramètres</th></tr></thead><tbody><tr><td><code>dydu.localization.set(locale)</code></td><td>Réinitialise la conversation et met à jour la langue principale du bot, relançant les connaissances initiales.</td><td><code>locale</code> (string)</td></tr><tr><td><code>dydu.localization.setUi(locale)</code></td><td>Met à jour uniquement la langue des libellés de l'interface utilisateur.</td><td><code>locale</code> (string)</td></tr><tr><td><code>dydu.localization.get()</code></td><td>Récupère la langue actuelle du bot.</td><td>Aucun</td></tr><tr><td><code>dydu.setBotId(botUUID)</code></td><td>Change l'identifiant du bot actif (<code>botUUID</code>). Efface l'historique et recharge la connaissance d'accueil pour la nouvelle ID.</td><td><code>botUUID</code> (string)</td></tr><tr><td><code>dydu.newdialog()</code></td><td>Réinitialise complètement la conversation, l'historique local et le contexte utilisateur, puis recharge les connaissances initiales.</td><td>Aucun</td></tr></tbody></table>

### Gestion de l'espace de consultation

Ces fonctions sont dédiées à la manipulation et à la récupération de l'espace de consultation utilisé par le bot.

Elles doivent commencer par `window.dydu.space`

<table><thead><tr><th width="306">Méthode</th><th width="290">Description</th><th>Paramètres</th></tr></thead><tbody><tr><td><code>dydu.space.get()</code></td><td>Récupère l'espace de consultation actuel du bot.</td><td>Aucun</td></tr><tr><td><p><code>dydu.space.set(space,</code></p><p><code>{ quiet = true })</code></p></td><td>Définit le nouvel espace de consultation.</td><td><code>space</code> (string), <code>quiet</code> (object)</td></tr><tr><td><code>dydu.space.prompt()</code></td><td>Déclenche l'affichage d'un prompt pour choisir l'espace de consultation.</td><td>Aucun</td></tr></tbody></table>

### Fonctions Spécifiques / Utilitaires

Ces fonctions sont destinées à des usages précis, comme le débogage ou les prompts de formulaire.

<table><thead><tr><th width="305">Méthode</th><th width="290">Description</th><th>Paramètres</th></tr></thead><tbody><tr><td><code>dydu.promptEmail.prompt(type)</code></td><td>Déclenche l'affichage d'un écran de saisie (prompt) pour la collecte d'e-mail.</td><td><code>type</code> (string)</td></tr><tr><td><code>dydu.lorem.split()</code></td><td>Affiche une réponse de type <em>lorem ipsum</em> (texte de remplissage) divisée.</td><td>Aucun</td></tr><tr><td><code>dydu.lorem.standard()</code></td><td>Affiche une réponse de type <em>lorem ipsum</em> (texte de remplissage) standard.</td><td>Aucun</td></tr></tbody></table>

### Initialisation de la Chatbox

Ces fonctions sont dédiées au suivi du cycle de démarrage de la chatbox, permettant d'intercepter son chargement ou son activation afin de déclencher des actions spécifiques.

<table><thead><tr><th width="305">Méthode</th><th>Description</th></tr></thead><tbody><tr><td><code>dyduAfterLoad()</code></td><td>Permet de détecter la fin du chargement de la chatbox sur la page web.</td></tr><tr><td><code>dyduChatboxReady()</code></td><td>Indique le moment exact où la chatbox est pleinement opérationnelle et prête à communiquer avec l'utilisateur.</td></tr></tbody></table>

## **Gestion des évènements**

Il est possible d'ajouter des actions qui réagissent à des évènements de la chatbox. Ci-dessous retrouvez la liste des évènements couvert et la façon de les utiliser :\
\
il faut, depuis canaux, activer les events en cochant la case events -> active : True. A partir de là vous avez acces aux méthodes listées soit directement dans votre custom JS comme sur l'image ci-dessous, soit via les methodes direct window.\<nom de la méthode>.<br>

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

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

voici la liste des évènements actuellement disponibles.

* chatbox :&#x20;
  * `loadChatbox`
  * `onMinimize`
  * `questionSent`
  * `rewordDisplay`
  * `insatisfactionClicked`
  * `rewordClicked` : Permet d'exécuter une action après que l'utilisateur a cliqué sur un bouton de reformulation (reword) au sein d'une connaissance.
  * `urlClicked` : Permet d'exécuter une action après que l'utilisateur a cliqué sur une URL au sein d'une connaissance.
* gdpr:
  * `acceptGdpr`
  * `getPersonalData`
  * `deletePersonalData`
  * `displayGdpr`
* onBoarding:
  * `onBoardingDisplay`
  * `onBoardingCompleted`
* tab:
  * `contactDisplay`
* teaser:
  * `onClick`
* top:
  * `topDisplay`
  * `topClicked`
