مرجع API

مرجع كامل لـ Widget API ونقاط نهاية REST.

Widget API

يوفر كائن window.LaunchChatWidget العام طرقاً للتحكم في الويدجت برمجياً.

الطرق

open()

يفتح نافذة المحادثة برمجياً.

window.LaunchChatWidget.open();
close()

يغلق نافذة المحادثة.

window.LaunchChatWidget.close();
destroy()

يزيل الويدجت من الصفحة بالكامل. مفيد لتطبيقات SPA عند الانتقال بين الصفحات.

window.LaunchChatWidget.destroy();
init(config)

يعيد تهيئة الويدجت بتكوين جديد.

window.LaunchChatWidget.init({ widgetId: "new-widget-id" });
on(event, callback)

الاشتراك في أحداث الويدجت.

window.LaunchChatWidget.on('message', (data) => {
  console.log('New message:', data);
});
off(event, callback)

إلغاء الاشتراك من أحداث الويدجت.

الأحداث

الحدثالبياناتالوصف
open{ timestamp }تم فتح نافذة المحادثة
close{ timestamp }تم إغلاق نافذة المحادثة
message{ content, role }تم إرسال أو استقبال رسالة
escalate{ email, message }طلب المستخدم دعماً بشرياً
feedback{ messageId, type }قدّم المستخدم تقييماً (إيجابي/سلبي)

REST API

POST /api/widget/chat

أرسل رسالة واستقبل رداً مولّداً بالذكاء الاصطناعي.

جسم الطلب

{
  "widgetId": "string",      // Required
  "message": "string",       // Required - user's question
  "conversationId": "string", // Optional - for context
  "visitorId": "string",     // Optional - track visitor
  "pageUrl": "string"        // Optional - current page
}

الاستجابة

{
  "conversationId": "uuid",
  "messageId": "uuid",
  "answer": "string",
  "citations": [
    {
      "pageId": "string",
      "pageTitle": "string",
      "pageUrl": "string",
      "excerpt": "string"
    }
  ],
  "relatedArticles": [...],
  "confidenceScore": 0.85,
  "wasRefused": false
}

رموز الأخطاء

الرمزالحالةالوصف
400طلب غير صالححقول مطلوبة مفقودة
403محظورالنطاق غير مدرج في القائمة المسموحة
404غير موجودالويدجت غير موجود أو غير نشط
429تجاوز الحدتم تجاوز حصة الرسائل
500خطأ في الخادمخطأ في المعالجة الداخلية

أنواع TypeScript

انسخ هذه الأنواع إلى مشروعك لأمان الأنواع الكامل:

interface LaunchChatConfig {
  widgetId: string;
  primaryColor?: string;
  greeting?: string;
  placeholder?: string;
  position?: 'bottom-right' | 'bottom-left';
  theme?: 'light' | 'dark' | 'auto';
}

interface WidgetAPI {
  open(): void;
  close(): void;
  destroy(): void;
  init(config: { widgetId: string }): Promise<void>;
  on<E extends keyof WidgetEvents>(
    event: E,
    callback: (data: WidgetEvents[E]) => void
  ): void;
  off<E extends keyof WidgetEvents>(
    event: E,
    callback: (data: WidgetEvents[E]) => void
  ): void;
}

interface WidgetEvents {
  open: { timestamp: number };
  close: { timestamp: number };
  message: { content: string; role: 'user' | 'assistant' };
  escalate: { email: string; message: string };
  feedback: { messageId: string; type: 'positive' | 'negative' };
}

declare global {
  interface Window {
    LaunchChatConfig?: LaunchChatConfig;
    LaunchChatWidget?: WidgetAPI;
  }
}