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énement | Payload | Description |
|---|---|---|
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
| Code | Statut | Description |
|---|---|---|
400 | Requête invalide | Champs obligatoires manquants |
403 | Interdit | Domaine non autorisé |
404 | Non trouvé | Widget introuvable ou inactif |
429 | Limite atteinte | Quota de messages dépassé |
500 | Erreur serveur | Erreur 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;
}
}