Het toekomstige pluginsysteem zal derde partijen in staat stellen om extensies te bouwen via levenscyclushooks, aangepaste renderers en actiehandlers. Bouw sentimentanalyse, CRM-integraties, aangepaste moderatie — allemaal zonder de kerncode te wijzigen. Gesandboxed voor beveiliging en stabiliteit.
Elke onderneming heeft unieke behoeften die generieke oplossingen niet volledig kunnen adresseren. Het geplande pluginsysteem zal ontwikkelaars in staat stellen om widgetfunctionaliteit uit te breiden met aangepaste mogelijkheden — zonder de code te forken of upgradepaden te verliezen.
Standaardwidgets kunnen niet elke zakelijke vereiste voorspellen. U heeft misschien nodig:
Plugins registreren tijdens widgetinitialisatie en ontvangen callbacks op belangrijke levenscyclusmomenten:
onBeforeMessageSend — preprocess gebruikersberichten voordat ze naar de backend worden verzondenonAfterMessageReceive — postprocess AI-antwoorden voordat ze worden weergegevenonConversationStart — initialiseert pluginstatus wanneer het gesprek begintonConversationEnd — ruim middelen op, log analyticsonWidgetOpen / onWidgetClose — volg betrokkenheid, trigger neveneffectenonError — aangepaste foutafhandeling of rapportageVoorverwerkers wijzigen gebruikersberichten voordat ze worden verzonden:
- Spellingscontrole en autocorrectie
- Vervloekingsfilter of inhoudsmoderatie
- Gegevensextractie (detecteer e-mails, telefoonnummers, order-ID's)
- Sentimentdetectie
Postverwerkers wijzigen AI-antwoorden voordat ze worden weergegeven:
- Markdown-versterking (converteer tabellen naar interactieve componenten)
- Linkverrijking (preview-URL's, unfurl metadata)
- Nalevingsfiltering (redigeer PII, gevoelige financiële gegevens)
Plugins kunnen de beveiliging of stabiliteit van de widget niet compromitteren:
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;
}
}
});