SDK JavaScript : piloter le widget de chat depuis votre page
Ouvrez et fermez la bulle de chat intoCHAT depuis votre propre code, identifiez les visiteurs connectés, changez la langue du widget et écoutez les événements du chat avec window.IntoChat.
Le script d'intégration ajoute window.IntoChat à votre page. Grâce à lui, votre propre JavaScript peut ouvrir et fermer la bulle de chat, indiquer à l'agent qui est le visiteur connecté, changer la langue du widget et réagir à ce qui se passe dans le chat.
Avant de commencer
Le SDK est fourni avec la balise script. Il n'y a rien d'autre à installer :
<script src="https://www.intochat.ai/api/embed.js" data-chatbot-id="YOUR_AGENT_ID"></script>
<script>
window.IntoChat.on("reply", function (event) {
console.log("The agent replied:", event.text);
});
</script>
window.IntoChat existe dès que le script s'est exécuté, avant même le chargement de la fenêtre de chat. Les appels faits tôt attendent que la bulle et la fenêtre de chat soient prêtes : vous pouvez donc appeler n'importe quelle méthode juste après le snippet.
Le SDK ne fonctionne qu'avec la bulle de chat ajoutée par le script. Une iframe dans la page ou un lien direct n'a aucun script sur la page avec lequel communiquer.
Méthodes
| Méthode | Effet |
|---|---|
IntoChat.open() | Ouvre la fenêtre de chat |
IntoChat.close() | La ferme |
IntoChat.toggle() | L'ouvre si elle est fermée, la ferme si elle est ouverte |
IntoChat.identify(user) | Indique à l'agent qui est le visiteur connecté ; voir identify |
IntoChat.reset() | Oublie l'identité du visiteur et démarre un nouveau chat |
IntoChat.setLanguage(code) | Change la langue du widget |
IntoChat.on(event, callback) | Appelle callback quand event se produit |
IntoChat.off(event, callback) | Cesse de l'appeler |
open, close et toggle
<button type="button" onclick="IntoChat.open()">Chat with us</button>
Ouvrir le chat de cette façon compte comme une utilisation du chat par le visiteur : les messages d'accueil au-dessus de la bulle et l'ouverture automatique ne s'affichent donc plus ensuite pendant cette visite.
IntoChat.open() fonctionne aussi pour les visiteurs qui ne voient pas la bulle à cause de Afficher le chat à une partie des visiteurs. Ce déploiement progressif ne masque que la bulle et ses invitations : un bouton « Discutez avec nous » sur votre page ouvre donc toujours le chat pour tout le monde. Pour ces visiteurs, la fenêtre de chat se charge à sa première ouverture. Avec Center Stage, open() ouvre la fenêtre centrée, et close() la ferme comme la touche Échap.
identify
IntoChat.identify({
userId: "4711", // required: the user's id on your site
userHash: "9f2c…", // required: computed on your server
name: "Ada Lovelace", // optional
email: "ada@example.com", // optional
metadata: { plan: "pro", seats: 3 } // optional
});
identify est le mécanisme de la vérification d'identité. userHash est le HMAC-SHA256 de userId, avec le secret d'identité de votre agent comme clé, calculé sur votre serveur : personne ne peut donc se faire passer pour un autre utilisateur. Sans userHash valide, le visiteur reste simplement non vérifié.
| Champ | Règles |
|---|---|
userId | Obligatoire. Du texte (un nombre est converti en texte), jusqu'à 200 caractères. Signez exactement cette valeur. |
userHash | Obligatoire. 64 caractères hexadécimaux. |
name | Facultatif. Jusqu'à 100 caractères. |
email | Facultatif. Une adresse e-mail valide, jusqu'à 254 caractères. |
metadata | Facultatif. Un objet plat de 20 clés au maximum. Les clés utilisent des lettres, des chiffres et des tirets bas (jusqu'à 40 caractères) ; les valeurs sont du texte (jusqu'à 500 caractères), des nombres ou true/false. 2 Ko au maximum au total. |
identify renvoie true quand les données respectent ces règles, et false (avec un avertissement dans la console du navigateur) dans le cas contraire. La validité de la signature n'est vérifiée que par le serveur d'intoCHAT, quand le visiteur envoie un message.
Appelez identify à chaque chargement de page tant que le visiteur est connecté. Identifier un autre utilisateur que le dernier sur ce navigateur démarre automatiquement un nouveau chat : une personne ne voit donc jamais la conversation d'une autre. Un visiteur qui a discuté avant de se connecter garde ce chat.
reset
IntoChat.reset();
Appelez-la quand le visiteur se déconnecte. Elle oublie l'identité et démarre un nouveau chat vide. La liste des chats précédents sur ce navigateur est aussi vidée ; les conversations elles-mêmes restent dans votre tableau de bord.
setLanguage
IntoChat.setLanguage("de");
Affiche les textes propres au widget (boutons, libellés, avis) en anglais (en), allemand (de), français (fr), italien (it) ou espagnol (es). Un code régional comme de-CH compte comme de. Tout autre code renvoie false. Elle remplace l'attribut lang de votre page : elle n'a donc aucun effet si vous avez choisi une langue de widget fixe dans l'onglet Appearance. Elle ne change ni vos messages d'accueil ni la langue dans laquelle l'agent répond.
on et off
function onReply(event) {
analytics.track("chat_reply", { agent: event.chatbotId });
}
IntoChat.on("reply", onReply);
// later
IntoChat.off("reply", onReply);
on renvoie aussi une fonction qui retire l'écouteur. Un écouteur qui lève une erreur n'empêche pas les autres de s'exécuter ; l'erreur est consignée dans la console.
Événements
Chaque callback reçoit un objet. Il contient toujours chatbotId, l'agent d'où vient l'événement.
| Événement | Quand | Champs supplémentaires |
|---|---|---|
open | La fenêtre de chat s'est ouverte : par le visiteur, par votre code ou par l'ouverture automatique | aucun |
close | La fenêtre de chat s'est fermée | aucun |
message | Le visiteur a envoyé un message | text |
reply | L'agent a terminé une réponse | text : la réponse sans les fiches produits, boutons, formulaires ou sources affichés en dessous |
lead | Le visiteur a envoyé le formulaire de contact | aucun |
booking | Le visiteur a réservé un créneau avec la réservation | aucun |
live_chat | Le statut du chat en direct a changé pendant que la page était ouverte | status : requested, active, ended ou null |
IntoChat.on("live_chat", function (event) {
if (event.status === "active") document.title = "A team member is chatting with you";
});
Les événements lead et booking ne se déclenchent pas dans un chat temporaire, car ces fonctions n'y sont pas proposées. Des coordonnées que le visiteur saisit dans le chat, au lieu d'utiliser le formulaire, ne déclenchent pas lead.
Appeler le SDK avant le chargement du script
Si votre code peut s'exécuter avant le snippet, ajoutez les appels à window.IntoChatQueue. Chaque entrée est le nom de la méthode suivi de ses arguments :
<script>
window.IntoChatQueue = window.IntoChatQueue || [];
window.IntoChatQueue.push(["identify", { userId: "4711", userHash: "9f2c…" }]);
window.IntoChatQueue.push(["on", "lead", function () { console.log("New lead"); }]);
</script>
<script src="https://www.intochat.ai/api/embed.js" data-chatbot-id="YOUR_AGENT_ID"></script>
Le script applique la file à son chargement. Les ajouts ultérieurs s'exécutent immédiatement.
Plusieurs agents sur une même page
Avec les snippets de plusieurs agents sur une même page, chaque appel s'applique à toutes leurs bulles, et le chatbotId de chaque événement indique de quel agent il vient. Chaque agent a son propre secret d'identité : un userHash ne vérifie donc le visiteur que pour l'agent dont le secret l'a signé.
Lien avec IntoChatActions
window.IntoChatActions est distinct et fonctionne exactement comme avant : il exécute les actions côté client quand l'agent les appelle. IntoChat sert à votre propre code pour piloter le widget. Les deux peuvent être utilisés ensemble. Quand le visiteur est vérifié, un gestionnaire d'action côté client le reçoit aussi dans context.user :
IntoChatActions.register("Get_cart", async function (args, context) {
// context.user: { id, name, email, metadata }, only for a verified visitor
return { items: window.myStore.cart.items };
});
Sécurité
La fenêtre de chat s'exécute sur le domaine d'intoCHAT. Le script de votre page n'échange des messages qu'avec sa propre fenêtre de chat, et seulement tant que cette fenêtre affiche intoCHAT : les autres frames de votre page ne peuvent ni recevoir l'identité du visiteur, ni envoyer de faux événements, ni déclencher d'actions. Les événements transportent ce que le visiteur a saisi et les réponses de l'agent : traitez-les comme toute autre donnée de visiteur sur votre page.