Dokumentasi Developer
Integrasi AI ke SCRM
Panduan menghubungkan AI dari project Materi Trading ke SCRM 7 Star. AI tidak membalas langsung ke nasabah — AI mengisi kotak saran di chatroom, CS asli yang klik & edit sebelum kirim.
1. Ringkasan Arsitektur
Project Materi Trading = AI brain (prompt, persona, materi, embedding). Project SCRM 7 Star = UI chat tempat CS asli berkomunikasi dengan nasabah.
┌─────────────────────────────┐ ┌─────────────────────────────┐ │ SCRM 7 Star (Chatroom) │ │ Materi Trading (AI Brain) │ │ │ HTTPS │ │ │ Nasabah ◄──► CS asli │ ──────► │ RAG + Prompt + Materi │ │ │ POST │ /api/v1/ai/suggest │ │ ┌───────────────────────┐ │ │ │ │ │ Kotak Saran AI ◄───────┼──┼─────────┤ Return: suggested answer │ │ │ (CS klik → edit → kirim)│ │ │ + meta stage/attachment │ │ └───────────────────────┘ │ └─────────────────────────────┘ └─────────────────────────────┘
Yang dilakukan SCRM
- Kirim pesan nasabah + riwayat chat ke API
- Tampilkan
data.answerdi kotak saran - CS klik saran → edit (nama, link, dll) → kirim ke nasabah
Yang dilakukan Materi Trading
- Baca materi via embedding (RAG)
- Generate saran jawaban CS (persona Vania)
- Return teks + metadata funnel stage
2. Prasyarat di Materi Trading
Pastikan hal-hal ini sudah siap sebelum SCRM mulai memanggil API:
AI aktif
Admin → Pengaturan AI → tab Umum → toggle "Aktifkan AI" ON
Materi ter-embed
Admin → AI Playground → "Embed Pending Saja" atau "Embed Semua" (badge pending = 0)
Profil Brand diisi
Admin → Pengaturan AI → tab Prompt & Persona → isi "Profil Brand" (legalitas, PT, BAPPEBTI)
Provider AI siap
Minimal 1 API key chat + embed terpasang (Cohere/Groq/Gemini, dll)
Token API dibuat
Admin → Token API → Create (lihat langkah 4)
Tips: uji dulu di /tanya-ai atau AI Playground admin sebelum hubungkan ke SCRM.
3. Prasyarat di SCRM 7 Star
Fitur minimum yang harus ada di SCRM agar integrasi berjalan:
| Komponen SCRM | Fungsi |
|---|---|
| Chatroom CS ↔ Nasabah | UI percakapan utama (sudah ada di SCRM) |
| Kotak Saran AI | Panel terpisah dari bubble chat — menampilkan draft jawaban dari API. Bukan auto-kirim ke nasabah. |
| Tombol "Pakai Saran" | CS klik → teks saran masuk ke input chat → CS edit → kirim manual |
| HTTP Client (backend) | Server SCRM bisa POST ke https://www.materi.tools7star.shop/api/v1/ai/suggest (jangan panggil dari browser nasabah — token harus rahasia di server) |
| Penyimpanan riwayat chat | Kirim array history ke API supaya AI ingat konteks & adopt nama CS dari percakapan sebelumnya |
| Trigger otomatis (opsional) | Setiap pesan masuk dari nasabah → panggil API → update kotak saran. Atau tombol "Minta Saran AI" manual. |
4. Buat Token API
- Login admin → buka Token API
- Klik Create, isi nama mis.
SCRM Production - Set rate limit sesuai kebutuhan (default cukup untuk tim CS)
- Salin token yang muncul sekali (format:
mtt_xxxxxxxx...) — simpan di env SCRM, jangan commit ke git - Opsional: isi Allowed IPs kalau mau batasi hanya dari server SCRM
5. Endpoint API
https://www.materi.tools7star.shop/api/v1/ai/suggest
https://www.materi.tools7star.shop/api/v1/ai/health
Base URL: https://www.materi.tools7star.shop
Auth header (wajib): Authorization: Bearer mtt_<token>
Content-Type: application/json
6. Request & Response
Request Body (POST /ai/suggest)
{
"question": "apakah ini penipuan?",
"mode": "suggestion",
"history": [
{ "role": "assistant", "content": "Halo Kak! Saya Agustina dari Materi Tools 😊" },
{ "role": "user", "content": "halo, ini apa ya?" },
{ "role": "assistant", "content": "Program E*Trade Data resmi via PT Mega Menara Mas Berjangka..." }
]
}
| Field | Wajib | Keterangan |
|---|---|---|
| question | Ya | Pesan terbaru dari nasabah (min 1, max 2000 karakter). Balasan pendek seperti ok / iya didukung — wajib sertakan history agar AI paham konteks. |
| mode | Tidak | suggestion (default, untuk SCRM) atau direct (testing langsung) |
| history | Tidak | Max 20 turn. role: user = nasabah, assistant = CS/manusia/AI sebelumnya |
| temperature | Tidak | 0–1, opsional override (default dari pengaturan admin) |
Response Sukses (HTTP 200)
{
"success": true,
"data": {
"answer": "Wajar Kak hati-hati... Program E*Trade Data BUKAN penipuan karena...",
"sources": [ { "id": 12, "title": "Legalitas", "url": "...", "similarity": 0.82 } ],
"images": [],
"meta": {
"provider": "groq",
"model": "llama-3.3-70b-versatile",
"latency_ms": 1240,
"stage": "objection",
"needs_attachment": null,
"needs_link": null,
"detected_cs_name": "Agustina",
"mode": "suggestion"
}
}
}
Field penting untuk SCRM
data.answer— teks saran untuk kotak saran (CS copy/edit)data.meta.stage— tahap funnel:greeting,discovery,testimoni,closing_pre_transfer, dll.data.meta.needs_attachment—testimoni= CS perlu attach gambar testimoni manualdata.meta.needs_link—pendaftaran= saran mengandung placeholder link daftardata.meta.detected_cs_name— nama CS terdeteksi dari history (AI adopt identitas ini)data.sources— referensi internal (opsional ditampilkan ke CS, jangan ke nasabah)
7. Alur Integrasi di SCRM
-
1
Nasabah kirim pesan
Pesan masuk ke chatroom SCRM seperti biasa.
-
2
SCRM kumpulkan history
Ambil N pesan terakhir (user + assistant) dari database chat session.
-
3
SCRM panggil API
POST ke /api/v1/ai/suggest dengan question = pesan terbaru nasabah, mode = suggestion, history = riwayat.
-
4
Tampilkan di Kotak Saran
Render data.answer di panel saran — JANGAN auto-kirim ke nasabah.
-
5
CS review & edit
CS baca saran, klik "Pakai", edit nama/link/gambar sesuai kebutuhan.
-
6
CS kirim manual
CS tekan send — bubble chat yang nasabah lihat = versi final dari CS, bukan AI mentah.
role: "user" (atau customer), pesan CS manusia → role: "assistant" (atau agent / cs). Urutan kronologis dari lama ke baru.
history lengkap. API menerima pesan 1–2 huruf. Respons ada di suggestion (root), answer (root), atau data.answer.
7b. Troubleshooting: ok / ya tidak muncul suggestion
baik / halo dapat suggestion, tapi ok / ya tidak — dan tidak ada di Query Log Admin.
Jika curl manual dengan question: "ok" return success: true tapi SCRM tetap kosong, masalah ada di kode SCRM — biasanya filter if (message.length < 3) return sebelum panggil API.
Fix wajib di SCRM:
- Hapus filter panjang minimum pesan — setiap pesan nasabah harus POST ke
/api/v1/ai/suggest - Kirim
question= teks pesan terbaru (termasukok,ya) - Baca
response.suggestionatauresponse.data.answeruntuk kotak saran - Refresh halaman chat tidak otomatis generate ulang — AI dipanggil saat pesan masuk
// ❌ JANGAN di SCRM:
if (customerMessage.length < 3) return;
// ✅ WAJIB di SCRM:
const res = await fetch(MATERI_AI_URL + '/api/v1/ai/suggest', {
method: 'POST',
headers: { Authorization: 'Bearer ' + TOKEN, 'Content-Type': 'application/json' },
body: JSON.stringify({ question: customerMessage, mode: 'suggestion', history }),
});
const json = await res.json();
// Coba field berikut (salah satu pasti ada isinya):
const text = json.suggestion
|| json.answer
|| json.text
|| json.data?.suggestion
|| json.data?.answer
|| json.data?.text
|| '';
// Tampilkan $text di kotak saran — JANGAN auto-kirim ke nasabah
- API sudah jalan — masalah di render UI SCRM, bukan Materi Trading
- SCRM mungkin baca field salah (mis.
data.data.answer— tidak ada) - SCRM mungkin sembunyikan suggestion jika teks mirip pesan CS terakhir
- SCRM mungkin hanya tampilkan jika
provider=gemini— template juga valid - Cek Network tab browser CS: respons harus punya
suggestionberisi teks
8. Signal Khusus untuk CS
Dalam mode suggestion, AI bisa menyertakan signal text yang perlu ditangani CS di UI SCRM:
[LAMPIRKAN GAMBAR TESTIMONI]
Muncul saat AI tahap testimoni. SCRM tampilkan reminder ke CS: "Saran AI meminta lampirkan gambar testimoni" — CS attach manual dari folder/galeri internal.
{LINK_PENDAFTARAN}
Placeholder link daftar. CS ganti dengan URL aktif sebelum kirim ke nasabah. AI hanya kasih link ini setelah tahap post-verifikasi transfer.
meta.needs_attachment = "testimoni"
Alternatif programmatic — SCRM bisa highlight tombol attach otomatis tanpa parse teks.
9. Contoh Kode
cURL — Health Check
curl -X GET "https://www.materi.tools7star.shop/api/v1/ai/health" \ -H "Authorization: Bearer mtt_TOKEN_ANDA_DISINI" \ -H "Accept: application/json"
cURL — Minta Saran
curl -X POST "https://www.materi.tools7star.shop/api/v1/ai/suggest" \
-H "Authorization: Bearer mtt_TOKEN_ANDA_DISINI" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"question": "apakah ini penipuan?",
"mode": "suggestion",
"history": [
{"role": "assistant", "content": "Halo Kak! Saya Agustina dari Materi Tools."},
{"role": "user", "content": "halo, ini apa ya?"}
]
}'
PHP (backend SCRM)
$response = Http::withToken(env('MATERI_AI_TOKEN'))
->timeout(30)
->post('https://www.materi.tools7star.shop/api/v1/ai/suggest', [
'question' => $customerMessage,
'mode' => 'suggestion',
'history' => $chatHistory, // [['role'=>'user','content'=>'...'], ...]
]);
if ($response->successful() && $response->json('success')) {
$suggestion = $response->json('data.answer');
$stage = $response->json('data.meta.stage');
// Tampilkan $suggestion di kotak saran SCRM
}
JavaScript (via backend proxy — jangan expose token di frontend)
// Panggil endpoint internal SCRM Anda, BUKAN langsung ke Materi Trading
const res = await fetch('/internal/ai-suggest', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ sessionId, question }),
});
const { suggestion, meta } = await res.json();
// Render suggestion di kotak saran chatroom
10. Error & Rate Limit
| HTTP | error | Artinya |
|---|---|---|
| 401 | unauthorized / invalid_token | Token kosong atau salah |
| 403 | token_expired / token_disabled / ip_not_allowed | Token tidak bisa dipakai |
| 422 | validation_failed | Parameter tidak valid (question & message kosong, history salah format) |
| 429 | rate_limit_minute / rate_limit_day | Terlalu banyak request — cek header Retry-After |
| 502 | provider_error | Semua provider AI sedang down/quota habis |
Response headers: X-RateLimit-Limit-Minute, X-RateLimit-Remaining-Minute, X-RateLimit-Limit-Day, X-RateLimit-Remaining-Day
11. Checklist Go-Live
Butuh uji coba dulu sebelum integrasi?