เอกสาร API
เอกสารอ้างอิงฉบับสมบูรณ์สำหรับ Widget API และ REST endpoints
Widget API
อ็อบเจกต์ window.LaunchChatWidget แบบ global มีเมธอดสำหรับควบคุมวิดเจ็ตด้วยโปรแกรม
เมธอด
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)ยกเลิกการสมัครรับเหตุการณ์ของวิดเจ็ต
เหตุการณ์
| เหตุการณ์ | Payload | คำอธิบาย |
|---|---|---|
open | { timestamp } | หน้าต่างแชทถูกเปิด |
close | { timestamp } | หน้าต่างแชทถูกปิด |
message | { content, role } | ข้อความถูกส่งหรือรับ |
escalate | { email, message } | ผู้ใช้ขอความช่วยเหลือจากเจ้าหน้าที่ |
feedback | { messageId, type } | ผู้ใช้ให้ความคิดเห็น (เชิงบวก/เชิงลบ) |
REST API
POST /api/widget/chat
ส่งข้อความและรับคำตอบที่สร้างโดย AI
Request Body
{
"widgetId": "string", // Required
"message": "string", // Required - user's question
"conversationId": "string", // Optional - for context
"visitorId": "string", // Optional - track visitor
"pageUrl": "string" // Optional - current page
}Response
{
"conversationId": "uuid",
"messageId": "uuid",
"answer": "string",
"citations": [
{
"pageId": "string",
"pageTitle": "string",
"pageUrl": "string",
"excerpt": "string"
}
],
"relatedArticles": [...],
"confidenceScore": 0.85,
"wasRefused": false
}รหัสข้อผิดพลาด
| รหัส | สถานะ | คำอธิบาย |
|---|---|---|
400 | Bad Request | ขาดฟิลด์ที่จำเป็น |
403 | Forbidden | โดเมนไม่อยู่ในรายการที่อนุญาต |
404 | Not Found | ไม่พบวิดเจ็ตหรือไม่ได้ใช้งาน |
429 | Rate Limited | เกินโควตาข้อความ |
500 | Server Error | ข้อผิดพลาดในการประมวลผลภายใน |
TypeScript Types
คัดลอก types เหล่านี้ลงในโปรเจกต์ของคุณเพื่อความปลอดภัยของ type อย่างสมบูรณ์:
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;
}
}