Konsep Inti
Konsep Inti
Sebelum mulai menggunakan OmniStream, pahami beberapa istilah kunci yang akan sering Anda temui di antarmuka dan dokumentasi ini. Istilah berikut dipetakan langsung ke model data di PostgreSQL dan MongoDB.
Kontak (Contact)
Kontak adalah seorang pelanggan yang pernah berinteraksi dengan workspace Anda melalui salah satu channel. Setiap kontak memiliki:
- ID unik — UUID yang dihasilkan saat interaksi pertama.
- Nama — diambil dari Meta (WhatsApp/Instagram) atau header email; dapat diedit agent.
- Identitas channel — nomor telepon (WhatsApp), Instagram ID, atau alamat email.
- Tag — label untuk kategorisasi jangka panjang (mis.
vip). - Custom fields — metadata tambahan (alamat, preferensi bahasa).
Satu kontak dapat terhubung ke banyak percakapan lintas channel.
Percakapan (Conversation)
Percakapan adalah sebuah thread komunikasi antara seorang kontak dan workspace Anda. Sebuah percakapan selalu terikat ke:
- Satu kontak
- Satu channel (WhatsApp, Instagram, atau Email)
- Satu agent penanggung jawab (opsional — bisa unassigned)
- Satu divisi (opsional)
Percakapan memiliki status open atau resolved. Percakapan baru
otomatis dibuat saat sebuah kontak mengirim pesan pertama ke
workspace Anda.
Catatan: Jika kontak yang sama menghubungi Anda dua kali dari channel yang sama dalam waktu <24 jam, OmniStream akan melanjutkan percakapan
openyang sudah ada, bukan membuat percakapan baru.
Pesan (Message)
Pesan adalah satu unit komunikasi di dalam percakapan. Pesan dapat berupa:
- Teks — string dengan panjang bervariasi per channel.
- Media — gambar, video, dokumen, audio.
- Lokasi — koordinat GPS (khusus WhatsApp).
- Kontak — kartu kontak vCard (khusus WhatsApp).
- Reaksi — emoji reaksi ke pesan lain (khusus WhatsApp).
- Template — pesan WhatsApp berbasis template yang disetujui.
Pesan memiliki direction:
inbound— pesan dari kontak ke workspace Anda.outbound— pesan dari agent ke kontak.
Dan status (untuk outbound):
pending → sent → delivered → read (atau failed bila gagal kirim).
Agent
Agent adalah pengguna aplikasi OmniStream yang menerima dan membalas pesan. Setiap agent memiliki:
- Nama, email, password (hash Argon2)
- Peran —
admin,supervisor, atauagent - Divisi — satu atau banyak divisi (via tabel
agent_divisions) - Status presence —
online,away, atauoffline
Peran (Role)
Tiga peran dengan akses berbeda:
| Peran | Akses |
|---|---|
| Agent | Membaca dan membalas percakapan yang ditugaskan kepadanya saja. |
| Supervisor | Membaca/membalas semua percakapan di divisi yang disupervisi; melihat dashboard analytics. |
| Admin | Akses penuh: kelola agent, divisi, integrasi, kebijakan SLA, CSAT, campaigns, webhooks. |
Detail lengkap di Peran pengguna.
Divisi (Division)
Divisi adalah kelompok agent yang bertanggung jawab atas sebagian
percakapan — biasanya diorganisir berdasarkan fungsi bisnis
(Sales, Technical Support, Billing). Divisi memiliki antrean
percakapan tersendiri dan kebijakan SLA yang dapat dibedakan.
Channel
Channel adalah jalur komunikasi: whatsapp, instagram, atau
email. Setiap channel memiliki kredensial integrasi yang dikelola
admin (akses token Meta, konfigurasi SMTP) di halaman
Integrations.
Messaging window
Meta Platform (WhatsApp dan Instagram) membatasi pengiriman pesan bebas hanya dalam 24 jam setelah pesan terakhir pelanggan. Setelah window tertutup:
- WhatsApp: hanya template yang disetujui yang boleh dikirim.
- Instagram: hanya pesan sesuai kebijakan Human Agent Tag yang boleh dikirim.
OmniStream menampilkan sisa waktu window di header percakapan dan di kartu daftar inbox.
Tag
Tag adalah label pendek yang melekat pada:
- Tag percakapan — untuk mengelompokkan berdasarkan topik atau
kategori (mis.
refund,escalated). - Tag kontak — untuk status jangka panjang (mis.
vip,opt-out).
Tag membantu filter, pelaporan, dan routing.
SLA policy
Service Level Agreement — kebijakan waktu respon dan waktu penyelesaian yang harus dipenuhi agent:
- First Response Time (FRT) — waktu dari pesan inbound pertama hingga agent membalas.
- Resolution Time — waktu dari percakapan dibuka hingga di-resolve.
Kebijakan dapat dikonfigurasi per channel dan/atau per divisi. Detail di Kebijakan SLA.
Quick reply dan template
- Quick reply — teks pendek yang dapat disisipkan di kotak input
agent via perintah
/. Tersimpan di PostgreSQL. - Template WhatsApp — pesan berbasis template Meta yang disetujui, digunakan untuk mengirim pesan di luar messaging window. Dikelola di halaman WA Templates.
Event-driven architecture (EDA)
Di balik layar, setiap pesan masuk/keluar melewati sebuah topologi event yang terdiri dari:
- Webhook ingestor menerima payload dari Meta/email provider.
- Kafka (Redpanda) menampung event untuk diproses asinkron.
- Chat engine mem-parse, meng-upsert kontak/percakapan, menyimpan ke PostgreSQL + MongoDB, lalu mempublikasikan ke Redis pub/sub.
- WebSocket server mendengarkan Redis dan meneruskan ke browser agent.
- Message sender mengambil pesan outbound dari Kafka dan mengirim ke Meta/SMTP.
Diagram detail dan alur lengkap tersedia di Arsitektur developer. Dari sudut pandang pengguna akhir, semua kompleksitas ini transparan — Anda tinggal membuka inbox dan membalas.
Di mana istilah ini dipakai
Istilah di atas muncul di:
- API Reference —
contact_id,conversation_id,message_idadalah UUID yang dipakai di semua endpoint REST. - Database — tabel PostgreSQL (41 migrasi di
migrations/) dan koleksi MongoDBmessages+webhook_auditmencerminkan model di atas. - Antarmuka web — label di inbox, daftar kontak, dashboard, dan halaman pengaturan mengikuti konvensi istilah ini dalam Bahasa Indonesia.
Baca selanjutnya: Peran pengguna.