Toekomstig pluginsysteem maakt derde-partij extensies mogelijk via levenscyclushooks, aangepaste renderers en actiehandlers. Bouw sentimentanalyse, CRM-integraties, aangepaste moderatie—alles zonder de kerncode te wijzigen. Geïsoleerd voor veiligheid en stabiliteit.
Elke onderneming heeft unieke behoeften die generieke oplossingen niet volledig kunnen adresseren. Het geplande pluginsysteem stelt ontwikkelaars in staat om widgetfunctionaliteit uit te breiden met aangepaste mogelijkheden — zonder code te fork of upgradepaden te verliezen.
Standaardwidgets kunnen niet elke zakelijke vereiste voorspellen. Je hebt misschien nodig:
Plugins registreren zich tijdens de widgetinitialisatie en ontvangen callbacks op belangrijke levenscyclusmomenten:
onBeforeMessageSend — verwerk gebruikersberichten voordat ze naar de backend worden verzondenonAfterMessageReceive — verwerk AI-antwoorden voordat ze worden weergegevenonConversationStart — initialiseer pluginstatus wanneer het gesprek begintonConversationEnd — ruim middelen op, log analyticsonWidgetOpen / onWidgetClose — volg betrokkenheid, trigger bijwerkingenonError — aangepaste foutafhandeling of rapportageVoorverwerkers wijzigen gebruikersberichten voordat ze worden verzonden:
- Spellingcontrole en autocorrectie
- Beledigingsfilter of inhoudsmoderatie
- Gegevensextractie (detecteer e-mails, telefoonnummers, bestel-ID's)
- Sentimentdetectie
Na-verwerkers wijzigen AI-antwoorden voordat ze worden weergegeven:
- Markdown-verrijking (converteer tabellen naar interactieve componenten)
- Linkverrijking (voorvertoning van URL's, metadata ontplooien)
- Nalevingsfiltering (verberg PII, gevoelige financiële gegevens)
Plugins kunnen de beveiliging of stabiliteit van de widget niet in gevaar brengen:
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;
}
}
});