Przyszły system wtyczek umożliwi rozszerzenia stron trzecich za pomocą haków cyklu życia, niestandardowych rendererów i obsługi akcji. Buduj analizy sentymentu, integracje CRM, niestandardową moderację — wszystko bez modyfikowania kodu rdzenia. Izolowane dla bezpieczeństwa i stabilności.
Każda firma ma unikalne potrzeby, których ogólne rozwiązania nie mogą w pełni zaspokoić. Planowany system wtyczek umożliwi programistom rozszerzenie funkcjonalności widgetów o niestandardowe możliwości — bez forkingu kodu lub utraty ścieżek aktualizacji.
Standardowe widgety nie mogą przewidzieć każdego wymagania biznesowego. Możesz potrzebować:
Wtyczki rejestrują się podczas inicjalizacji widgetu i otrzymują wywołania zwrotne w kluczowych momentach cyklu życia:
onBeforeMessageSend — przetwarzaj wiadomości użytkownika przed wysłaniem do backenduonAfterMessageReceive — przetwarzaj odpowiedzi AI przed renderowaniemonConversationStart — inicjalizuj stan wtyczki, gdy rozmowa się zaczynaonConversationEnd — sprzątaj zasoby, loguj analitykęonWidgetOpen / onWidgetClose — śledź zaangażowanie, wyzwalaj efekty uboczneonError — niestandardowe obsługiwanie błędów lub raportowaniePreprocesory modyfikują wiadomości użytkowników przed wysłaniem:
- Sprawdzanie pisowni i automatyczna korekta
- Filtr profanacji lub moderacja treści
- Ekstrakcja danych (wykrywanie e-maili, numerów telefonów, identyfikatorów zamówień)
- Wykrywanie sentymentu
Postprocesory modyfikują odpowiedzi AI przed renderowaniem:
- Udoskonalenie Markdown (konwertowanie tabel na interaktywne komponenty)
- Wzbogacenie linków (podgląd URL, rozwijanie metadanych)
- Filtracja zgodności (redagowanie PII, wrażliwych danych finansowych)
Wtyczki nie mogą kompromitować bezpieczeństwa lub stabilności widgetu:
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;
}
}
});