Référence API

Référence complète pour l'API Widget et les endpoints REST.

API Widget

L'objet global window.LaunchChatWidget fournit des méthodes pour contrôler le widget de manière programmatique.

Méthodes

open()

Ouvre la fenêtre de chat de manière programmatique.

window.LaunchChatWidget.open();
close()

Ferme la fenêtre de chat.

window.LaunchChatWidget.close();
destroy()

Supprime complètement le widget de la page. Utile pour les SPA lors de la navigation.

window.LaunchChatWidget.destroy();
init(config)

Réinitialise le widget avec une nouvelle configuration.

window.LaunchChatWidget.init({ widgetId: "new-widget-id" });
on(event, callback)

S'abonner aux événements du widget.

window.LaunchChatWidget.on('message', (data) => {
  console.log('New message:', data);
});
off(event, callback)

Se désabonner des événements du widget.

Événements

ÉvénementPayloadDescription
open{ timestamp }Fenêtre de chat ouverte
close{ timestamp }Fenêtre de chat fermée
message{ content, role }Message envoyé ou reçu
escalate{ email, message }L'utilisateur a demandé un support humain
feedback{ messageId, type }L'utilisateur a donné un retour (positif/négatif)

API REST

POST /api/widget/chat

Envoie un message et reçoit une réponse générée par l'IA.

Corps de la requête

{
  "widgetId": "string",      // Required
  "message": "string",       // Required - user's question
  "conversationId": "string", // Optional - for context
  "visitorId": "string",     // Optional - track visitor
  "pageUrl": "string"        // Optional - current page
}

Réponse

{
  "conversationId": "uuid",
  "messageId": "uuid",
  "answer": "string",
  "citations": [
    {
      "pageId": "string",
      "pageTitle": "string",
      "pageUrl": "string",
      "excerpt": "string"
    }
  ],
  "relatedArticles": [...],
  "confidenceScore": 0.85,
  "wasRefused": false
}

Codes d'erreur

CodeStatutDescription
400Requête invalideChamps obligatoires manquants
403InterditDomaine non autorisé
404Non trouvéWidget introuvable ou inactif
429Limite atteinteQuota de messages dépassé
500Erreur serveurErreur de traitement interne

Types TypeScript

Copiez ces types dans votre projet pour une sécurité de typage complète :

interface LaunchChatConfig {
  widgetId: string;
  primaryColor?: string;
  greeting?: string;
  placeholder?: string;
  position?: 'bottom-right' | 'bottom-left';
  theme?: 'light' | 'dark' | 'auto';
}

interface WidgetAPI {
  open(): void;
  close(): void;
  destroy(): void;
  init(config: { widgetId: string }): Promise<void>;
  on<E extends keyof WidgetEvents>(
    event: E,
    callback: (data: WidgetEvents[E]) => void
  ): void;
  off<E extends keyof WidgetEvents>(
    event: E,
    callback: (data: WidgetEvents[E]) => void
  ): void;
}

interface WidgetEvents {
  open: { timestamp: number };
  close: { timestamp: number };
  message: { content: string; role: 'user' | 'assistant' };
  escalate: { email: string; message: string };
  feedback: { messageId: string; type: 'positive' | 'negative' };
}

declare global {
  interface Window {
    LaunchChatConfig?: LaunchChatConfig;
    LaunchChatWidget?: WidgetAPI;
  }
}