Gelecek eklenti sistemi, yaşam döngüsü kancaları, özel renderlayıcılar ve eylem işleyicileri aracılığıyla üçüncü taraf uzantılarına olanak tanıyacaktır. Duygu analizi, CRM entegrasyonları, özel moderasyon oluşturun — tüm bunları ana kodu değiştirmeden yapın. Güvenlik ve istikrar için sandboxed.
Her işletmenin, genel çözümlerin tam olarak karşılayamayacağı benzersiz ihtiyaçları vardır. Planlanan eklenti sistemi, geliştiricilerin widget işlevselliğini özel yeteneklerle genişletmelerine olanak tanıyacaktır — kodu çatallamadan veya güncelleme yollarını kaybetmeden.
Standart widget'lar, her iş gereksinimini tahmin edemez. Şunlara ihtiyacınız olabilir:
Eklentiler, widget başlatıldığında kaydedilir ve önemli yaşam döngüsü anlarında geri çağırma alır:
onBeforeMessageSend — kullanıcı mesajlarını arka uca göndermeden önce ön işleme tabi tutaronAfterMessageReceive — AI yanıtlarını render edilmeden önce son işlemden geçirironConversationStart — konuşma başladığında eklenti durumunu başlatıronConversationEnd — kaynakları temizler, analizleri kaydederonWidgetOpen / onWidgetClose — etkileşimi izler, yan etkileri tetikleronError — özel hata işleme veya raporlamaÖn işleyiciler, kullanıcı mesajlarını göndermeden önce değiştirir:
- Yazım denetimi ve otomatik düzeltme
- Küfür filtreleme veya içerik moderasyonu
- Veri çıkarımı (e-postaları, telefon numaralarını, sipariş kimliklerini tespit etme)
- Duygu tespiti
Son işleyiciler, AI yanıtlarını render edilmeden önce değiştirir:
- Markdown geliştirme (tabloları etkileşimli bileşenlere dönüştürme)
- Bağlantı zenginleştirme (URL'leri önizleme, meta verileri açma)
- Uyum filtreleme (Kişisel olarak Tanımlanabilir Bilgileri, hassas finansal verileri gizleme)
Eklentiler, widget güvenliğini veya istikrarını tehlikeye atamaz:
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;
}
}
});