Das zukünftige Pluginsystem ermöglicht Drittanbietererweiterungen über Lebenszyklus-Hooks, benutzerdefinierte Renderer und Aktionshandler. Erstellen Sie Sentiment-Analysen, CRM-Integrationen, benutzerdefinierte Moderation — alles, ohne den Kerncode zu ändern. Sandbox für Sicherheit und Stabilität.
Jedes Unternehmen hat einzigartige Bedürfnisse, die generische Lösungen nicht vollständig erfüllen können. Das geplante Pluginsystem wird Entwicklern ermöglichen, die Widget-Funktionalität mit benutzerdefinierten Funktionen zu erweitern — ohne den Code zu verzweigen oder Upgrade-Pfade zu verlieren.
Standard-Widgets können nicht jede Geschäftsanforderung vorhersagen. Sie benötigen möglicherweise:
Plugins registrieren sich während der Widget-Initialisierung und erhalten Rückrufe zu wichtigen Lebenszyklus-Momenten:
onBeforeMessageSend — Vorverarbeitung von Benutzernachrichten, bevor sie an das Backend gesendet werdenonAfterMessageReceive — Nachverarbeitung von KI-Antworten, bevor sie gerendert werdenonConversationStart — Initialisierung des Plugin-Zustands, wenn das Gespräch beginntonConversationEnd — Bereinigung von Ressourcen, Protokollierung von AnalytikonWidgetOpen / onWidgetClose — Engagement verfolgen, Nebeneffekte auslösenonError — benutzerdefinierte Fehlerbehandlung oder -berichterstattungVorverarbeiter ändern Benutzernachrichten, bevor sie gesendet werden:
- Rechtschreibprüfung und Autokorrektur
- Schimpfwörterfilter oder Inhaltsmoderation
- Datenextraktion (E-Mails, Telefonnummern, Bestell-IDs erkennen)
- Sentiment-Detektion
Nachverarbeiter ändern KI-Antworten, bevor sie gerendert werden:
- Markdown-Verbesserung (Tabellen in interaktive Komponenten umwandeln)
- Linkanreicherung (Vorschau-URLs, Metadaten entfalten)
- Compliance-Filterung (PII, sensible Finanzdaten redigieren)
Plugins können die Sicherheit oder Stabilität des Widgets nicht gefährden:
WidgetSDK.registerPlugin({
name: 'sentiment-analyzer',
version: '1.0.0',
hooks: {
onBeforeMessageSend: async (message, context) => {
const sentiment = await analyzeSentiment(message.text);
return { ...message, metadata: { sentiment } };
},
onAfterMessageReceive: (message, context) => {
if (message.metadata?.sentiment < -0.5) {
context.escalateToHuman(message);
}
return message;
}
}
});