Intégrer un assistant sur un site web

La mise en ligne se résume essentiellement à un copier-coller. Vous ajoutez trois éléments à votre page — le script d’exécution Seekdown, un élément conteneur et un court extrait pour le démarrer — et c’est tout. Voici l’extrait exact que le produit génère pour vous.

Avant de commencer

  • Ajoutez le domaine du site aux origines autorisées.
  • Générez une clé API si le mode de sécurité est API.
  • Munissez-vous de l’ID de l’assistant.

Extrait de code

<div id="seekdown-assistant-root"></div>

<!-- Include the public Seekdown runtime -->
<script src="https://saas.seekdown.ai/js/seekdown-assistant.js"></script>

<!-- Initialize the assistant with your assistantId and accessToken -->
<script>
  document.addEventListener('DOMContentLoaded', function () {
    if (window.skdwn?.startAssistant) {
      let seekdownAssistantOptions = {
        assistantId: 'your-assistant-id',
        accessToken: 'your-api-key-or-identity-access-token',
      };

      skdwn.startAssistant(seekdownAssistantOptions);
    } else {
      console.error('skdwn.startAssistant is not available.');
    }
  });
</script>

Le jeton d’accès est facultatif

N’incluez accessToken que si le mode de sécurité est API (une clé d’assistant) ou OIDC (le JWT de votre fournisseur). Un assistant en mode None peut démarrer avec seulement assistantId.

Où placer l’extrait

  • Placez le <script> d’exécution et le <div> conteneur juste avant la balise de fermeture </body>, pour que la page soit chargée avant le démarrage de l’assistant.
  • Le conteneur <div id="seekdown-assistant-root"></div> doit exister sur la page — l’assistant s’y monte.
  • Si votre site applique une Content-Security-Policy stricte, autorisez le script et la connexion vers saas.seekdown.ai, sinon le script d’exécution ne se chargera pas.
L’extrait d’intégration annoté — le script d’exécution, le conteneur seekdown-assistant-root et l’appel d’initialisation.
L’extrait d’intégration annoté — le script d’exécution, le conteneur seekdown-assistant-root et l’appel d’initialisation.

Options d’initialisation

startAssistant(options) reçoit un objet d’options. Seules quelques-unes sont obligatoires — les autres vous permettent d’adapter l’assistant à son public et à son apparence :

OptionObligatoireÀ quoi elle sert
assistantIdOuiL’assistant à charger.
containerNonOù monter le widget — un sélecteur CSS ou un élément DOM. Permet à plusieurs assistants de cohabiter sur une même page, chacun dans son propre conteneur. Par défaut, l’élément d’id seekdown-assistant-root. Voir Plusieurs assistants sur une même page.
accessTokenPour API / OIDCLa clé de l’assistant (mode API) ou le JWT de votre fournisseur (OIDC). Omettez-la pour un assistant en mode None.
serviceURLAutoL’URL du service Seekdown. Vaut par défaut https://saas.seekdown.ai, vous l’omettez donc normalement.
userIdNonUne identité stable pour le visiteur. Si vous n’en définissez pas, Seekdown génère un UUID et le stocke dans le navigateur — un visiteur qui revient conserve ainsi sa conversation et compte comme un seul utilisateur unique. Définissez-le pour rattacher le visiteur à l’ID de son compte chez vous.
userInformationNonUn ensemble plat de paires clé–valeur (chaînes) décrivant le visiteur (par ex. email, plan, locale). Elles accompagnent les analyses sous forme de propriétés user.*, ce qui vous permet de segmenter l’usage.
additionalContextNonUne chaîne de contexte supplémentaire ajoutée au prompt de l’assistant et mise à disposition de ses templates à l’exécution — par exemple une courte phrase décrivant l’utilisateur connecté ou la page en cours.
configNonDes surcharges locales fusionnées en profondeur avec la configuration distante de l’assistant — thème, mise en page, bouton flottant, et même surcharges de templates. Permet d’intégrer le même assistant avec un style différent selon les sites.
baseURLNonURL de base des ressources statiques de l’assistant ; rarement nécessaire.
isDebugNonLorsqu’elle vaut true, journalise l’état des templates dans la console — utile pendant le développement de surcharges de templates.

Personnalisez selon le visiteur

userId, userInformation et additionalContext permettent de rendre l’assistant conscient du compte — par exemple, transmettez le plan de l’utilisateur connecté pour que les templates puissent le saluer ou adapter les réponses, sans exposer quoi que ce soit de secret dans la page.

Événements du cycle de vie

startAssistant(options, events?) accepte un second argument facultatif pour vous brancher sur son cycle de vie :

  • onStarted() — se déclenche une fois que l’assistant est monté et qu’il a (si l’option est activée) restauré la conversation précédente. Utilisez-le pour masquer un indicateur de chargement ou suivre l’événement « assistant prêt ».
  • onError(error, info) — se déclenche si l’initialisation échoue ; info.componentStack fournit le contexte. Utilisez-le pour afficher une solution de repli ou réessayer.
<script>
  skdwn.startAssistant(
    {
      assistantId: 'your-assistant-id',
      accessToken: 'your-api-key',
      userId: 'customer-42',
      userInformation: { plan: 'pro', locale: 'en-US' },
      additionalContext: 'Signed-in user is on the Pro plan at Acme.',
      config: { settings: { baseTheme: 'dark' } },
    },
    {
      onStarted: function () { console.log('Assistant ready'); },
      onError: function (err, info) { console.error(err, info.componentStack); },
    }
  );
</script>

Plusieurs assistants sur une même page

Vous pouvez faire fonctionner plusieurs assistants sur la même page en même temps — par exemple un champ de recherche dans l’en-tête et un chat de support sous forme de bouton flottant. La règle est simple : chargez le script d’exécution une seule fois, donnez à chaque assistant son propre conteneur, et appelez startAssistant une fois par assistant avec un container. Démarrer l’un n’arrête jamais les autres.

<!-- Load the runtime once -->
<script src="https://saas.seekdown.ai/js/seekdown-assistant.js"></script>

<!-- One container (with a unique id) per assistant -->
<div id="assistant-search"></div>
<div id="assistant-support"></div>

<script>
  const base = { accessToken: 'your-api-key', serviceURL: 'https://saas.seekdown.ai' };

  // Header search assistant
  skdwn.startAssistant({
    ...base,
    assistantId: 'as-search',
    container: '#assistant-search',
    config: { settings: { baseTemplate: 'overlay' } },
  });

  // Floating support chat
  skdwn.startAssistant({
    ...base,
    assistantId: 'as-support',
    container: '#assistant-support',
    config: { settings: { floatingActionButton: { useFloatingActionButton: true } } },
  });
</script>

Chaque instance est entièrement isolée — sa propre connexion, sa configuration, ses templates et son état — elles peuvent donc partager un assistantId ou en utiliser des différents sans interférer.

Cibler un assistant précis. Le script d’exécution expose une petite API sur window.skdwn :

Propriété / méthodeRenvoie
skdwn.instancesUn tableau de tous les assistants actifs sur la page.
skdwn.instanceL’assistant contextuel — celui dont l’interface a déclenché l’événement en cours ou qui est en train de s’afficher. C’est vers lui que se résolvent les gestionnaires de templates (onclick="skdwn.instance.helpers.…"), si bien que chaque widget se pilote toujours lui-même.
skdwn.instanceFor(target)L’assistant monté dans un conteneur donné (un sélecteur ou un élément), ou undefined. Utilisez-le pour contrôler un widget précis depuis le code de votre propre page.
// Open the support chat from your own button
const support = window.skdwn.instanceFor('#assistant-support');
window.skdwn.instance = support;                 // point the context at it
support.helpers.toggleShowFloatingWindow(true);  // helpers act on the current context

Quelques remarques pratiques

- Le <script> d’exécution est chargé une seule fois — il expose l’unique objet window.skdwn. - Les id de conteneurs doivent être uniques ; omettez container pour utiliser le conteneur par défaut #seekdown-assistant-root. - Les démarrages sont mis en file d’attente (un conteneur ne peut pas être monté deux fois simultanément), mais démarrer un second assistant n’arrête pas le premier. - Redémarrer un assistant consiste à rappeler startAssistant avec le même container — seul celui-ci redémarre.

Vérifier le résultat

Ouvrez la page et vérifiez que l’assistant apparaît et répond.

Dépannage

  • Si le widget n’apparaît pas, vérifiez l’URL du script, le conteneur et la console du navigateur.
  • Si l’accès est bloqué, vérifiez les origines autorisées et le jeton.

Nous contacter

Besoin d’aide ?

Dites-nous à quelles questions votre assistant de site web doit répondre. Nous vous aiderons à identifier le bon contenu, les bons réglages et la meilleure façon de le lancer.