wepee commited on
Commit
659efa8
·
1 Parent(s): b7231b5

delete: toggle mode chat

Browse files
README.md CHANGED
@@ -24,11 +24,10 @@ ### Table of Contents
24
  2. [Authentication](#2-authentication)
25
  3. [URL Parameters Reference](#3-url-parameters-reference)
26
  4. [Theming & Customization](#4-theming--customization)
27
- 5. [Chat Mode](#5-chat-mode)
28
- 6. [postMessage Events](#6-postmessage-events)
29
- 7. [Session Persistence](#7-session-persistence)
30
- 8. [Full Integration Examples](#8-full-integration-examples)
31
- 9. [Troubleshooting](#9-troubleshooting)
32
 
33
  ---
34
 
@@ -150,24 +149,7 @@ ### 4. Theming & Customization
150
 
151
  ---
152
 
153
- ### 5. Chat Mode
154
-
155
- Chat mode dikonfigurasi di sisi **server** (bukan via URL), melalui environment variable `RAG_CHAT_MODE`.
156
-
157
- | Mode | Keterangan |
158
- |------------|------------|
159
- | `standard` | *(default)* Chat berbasis sesi. Riwayat percakapan tersimpan dan bisa diakses kembali via tab Riwayat. |
160
- | `direct` | Setiap pesan dikirim langsung ke endpoint `/ai/query` tanpa membuat sesi. Cocok untuk one-shot Q&A tanpa history. |
161
-
162
- Atur di file `.env`:
163
-
164
- ```env
165
- RAG_CHAT_MODE=direct
166
- ```
167
-
168
- ---
169
-
170
- ### 6. postMessage Events
171
 
172
  Widget berkomunikasi dengan halaman induk melalui `window.postMessage`. Dengarkan event ini di halaman yang meng-embed iframe untuk mendapat notifikasi dari widget.
173
 
@@ -193,7 +175,7 @@ #### 6.1 Events yang Dikirim Widget (Outbound)
193
 
194
  ---
195
 
196
- ### 7. Session Persistence
197
 
198
  Widget menyimpan data sesi di `sessionStorage` browser (bukan `localStorage`), sehingga **otomatis terhapus saat tab ditutup**.
199
 
@@ -208,7 +190,7 @@ ### 7. Session Persistence
208
 
209
  ---
210
 
211
- ### 8. Full Integration Examples
212
 
213
  #### 8.1 Embed Sederhana (API Key)
214
 
@@ -347,7 +329,7 @@ #### 8.4 Token dari Server (Lebih Aman untuk Produksi)
347
 
348
  ---
349
 
350
- ### 9. Troubleshooting
351
 
352
  #### Widget menampilkan "Token iframe tidak tersedia"
353
 
 
24
  2. [Authentication](#2-authentication)
25
  3. [URL Parameters Reference](#3-url-parameters-reference)
26
  4. [Theming & Customization](#4-theming--customization)
27
+ 5. [postMessage Events](#5-postmessage-events)
28
+ 6. [Session Persistence](#6-session-persistence)
29
+ 7. [Full Integration Examples](#7-full-integration-examples)
30
+ 8. [Troubleshooting](#8-troubleshooting)
 
31
 
32
  ---
33
 
 
149
 
150
  ---
151
 
152
+ ### 5. postMessage Events
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
 
154
  Widget berkomunikasi dengan halaman induk melalui `window.postMessage`. Dengarkan event ini di halaman yang meng-embed iframe untuk mendapat notifikasi dari widget.
155
 
 
175
 
176
  ---
177
 
178
+ ### 6. Session Persistence
179
 
180
  Widget menyimpan data sesi di `sessionStorage` browser (bukan `localStorage`), sehingga **otomatis terhapus saat tab ditutup**.
181
 
 
190
 
191
  ---
192
 
193
+ ### 7. Full Integration Examples
194
 
195
  #### 8.1 Embed Sederhana (API Key)
196
 
 
329
 
330
  ---
331
 
332
+ ### 8. Troubleshooting
333
 
334
  #### Widget menampilkan "Token iframe tidak tersedia"
335
 
config/services.php CHANGED
@@ -37,7 +37,6 @@
37
 
38
  'rag' => [
39
  'base_url' => env('RAG_API_BASE_URL'),
40
- 'chat_mode' => env('RAG_CHAT_API_MODE', 'stream'),
41
  ],
42
 
43
  ];
 
37
 
38
  'rag' => [
39
  'base_url' => env('RAG_API_BASE_URL'),
 
40
  ],
41
 
42
  ];
resources/js/pages/embed.tsx CHANGED
@@ -29,7 +29,6 @@ import {
29
  listChatSessionsEmbed,
30
  listCoursesEmbed,
31
  loginWithEmbedApiKey,
32
- queryAiDirect,
33
  sendRestChatMessage,
34
  } from '@/lib/rag-client';
35
 
@@ -49,9 +48,6 @@ type EmbedConfig = {
49
  userName: string;
50
  };
51
 
52
- type EmbedPageProps = {
53
- isDirectChatMode?: boolean;
54
- };
55
 
56
  const COLOR_DEFAULTS = {
57
  background: '#ffffff',
@@ -463,7 +459,7 @@ function EmbedHistory({
463
  );
464
  }
465
 
466
- export default function Embed({ isDirectChatMode = false }: EmbedPageProps) {
467
  const [config, setConfig] = useState<EmbedConfig>(() =>
468
  parseEmbedConfig(
469
  typeof window !== 'undefined'
@@ -631,13 +627,11 @@ export default function Embed({ isDirectChatMode = false }: EmbedPageProps) {
631
  setChatSessions((prev) => [session, ...prev]);
632
  }
633
 
634
- const assistantMessage = isDirectChatMode
635
- ? await queryAiDirect(selectedCourseId, trimmedQuestion, token)
636
- : await sendRestChatMessage(
637
- currentSessionId,
638
- trimmedQuestion,
639
- token,
640
- );
641
 
642
  setAnimatedAssistantMessageId(assistantMessage.uuid_id);
643
  setMessages((prev) => [...prev, userMessage, assistantMessage]);
 
29
  listChatSessionsEmbed,
30
  listCoursesEmbed,
31
  loginWithEmbedApiKey,
 
32
  sendRestChatMessage,
33
  } from '@/lib/rag-client';
34
 
 
48
  userName: string;
49
  };
50
 
 
 
 
51
 
52
  const COLOR_DEFAULTS = {
53
  background: '#ffffff',
 
459
  );
460
  }
461
 
462
+ export default function Embed() {
463
  const [config, setConfig] = useState<EmbedConfig>(() =>
464
  parseEmbedConfig(
465
  typeof window !== 'undefined'
 
627
  setChatSessions((prev) => [session, ...prev]);
628
  }
629
 
630
+ const assistantMessage = await sendRestChatMessage(
631
+ currentSessionId,
632
+ trimmedQuestion,
633
+ token,
634
+ );
 
 
635
 
636
  setAnimatedAssistantMessageId(assistantMessage.uuid_id);
637
  setMessages((prev) => [...prev, userMessage, assistantMessage]);
routes/web.php CHANGED
@@ -14,9 +14,7 @@
14
 
15
  Route::inertia('register/dosen', 'auth/register-dosen')->name('register.dosen');
16
 
17
- Route::get('embed', fn () => Inertia::render('embed', [
18
- 'isDirectChatMode' => config('services.rag.chat_mode') === 'direct',
19
- ]))->name('embed');
20
 
21
  Route::inertia('admin/login', 'auth/admin-login')->name('admin.login');
22
 
 
14
 
15
  Route::inertia('register/dosen', 'auth/register-dosen')->name('register.dosen');
16
 
17
+ Route::inertia('embed', 'embed')->name('embed');
 
 
18
 
19
  Route::inertia('admin/login', 'auth/admin-login')->name('admin.login');
20