FAQ
FAQ — Pertanyaan yang Sering Diajukan
Daftar pertanyaan umum yang sering ditanyakan oleh pengguna baru dan tim integrasi. Jika pertanyaan Anda tidak terjawab di sini, buka halaman panduan yang relevan atau konsultasikan dengan admin workspace Anda.
Umum
Apa itu OmniStream?
Platform CRM omnichannel self-hosted yang menyatukan WhatsApp, Instagram, dan Email ke satu inbox dengan real-time messaging, manajemen agent, dan analitik. Selengkapnya di Apa itu OmniStream.
Apakah OmniStream berbayar?
OmniStream di-release dengan lisensi open-source. Tidak ada biaya lisensi. Namun Anda tetap perlu membayar:
- Biaya Meta WhatsApp Cloud API per conversation (sesuai tarif Meta).
- Biaya VPS/server untuk menjalankan stack.
- Biaya SMTP provider (jika menggunakan SendGrid/Mailgun).
Apakah datanya aman?
Ya — semua data (kontak, percakapan, pesan) tersimpan di database yang Anda kendalikan sendiri. Tidak ada data yang dikirim ke control-plane SaaS. Pastikan Anda:
- Mengaktifkan HTTPS (Let's Encrypt) untuk semua endpoint publik.
- Mengganti
JWT_SECRETdan password default. - Memasang firewall yang membatasi akses ke port backend (API
Gateway
3000, Webhook Ingestor3001, WS Server3002). Hanya API Gateway dan Webhook Ingestor yang perlu terekspos ke internet publik; WS Server cukup di jaringan internal/reverse proxy. - Melakukan backup berkala PostgreSQL dan MongoDB.
Autentikasi & Akses
Saya lupa password. Bagaimana cara reset?
Minta admin workspace Anda untuk mereset password lewat
/user-management. Di v1 tidak ada self-service password reset via
email — fitur ini direncanakan untuk v1.1.
Berapa lama token JWT berlaku?
Default 24 jam sejak login. Setelah kedaluwarsa, Anda akan
diminta login ulang. Waktu kedaluwarsa dapat diubah via environment
variable JWT_EXPIRY_HOURS di api-gateway.
Bisakah saya login di dua perangkat sekaligus?
Ya — JWT adalah stateless, jadi Anda dapat login di browser desktop dan mobile secara bersamaan. Kedua sesi akan menerima event WebSocket secara independen.
Mengapa saya tidak bisa melihat halaman Dashboard?
Halaman Dashboard hanya tersedia untuk peran Supervisor dan Admin. Agent reguler tidak memiliki akses. Lihat Peran pengguna untuk matriks akses lengkap.
Channel
Channel apa saja yang didukung?
Di v1: WhatsApp (via Meta Cloud API), Instagram DM (via Meta Messaging API), dan Email (via SMTP + inbound webhook).
Apakah Facebook Messenger didukung?
Integrasi Messenger sedang dikembangkan (commit ad0b868 di branch
feat/whatsapp-embedded-signup), tetapi belum didokumentasikan
secara resmi di v1. Akan dirilis di v1.1. Lihat
SCOPE.md.
Apakah Telegram/Line/WeChat didukung?
Tidak di v1. OmniStream didesain untuk mudah menambahkan channel
baru (tambahkan route webhook baru di webhook-ingestor, parser
pesan di chat-engine, dan handler outbound di message-sender),
tetapi belum ada rencana konkret untuk Telegram/Line/WeChat.
Kenapa pesan WhatsApp keluar saya gagal dengan error "message window closed"?
Meta membatasi pesan bebas hanya dalam 24 jam setelah pesan terakhir pelanggan. Setelah window tertutup, Anda harus menggunakan template WhatsApp yang disetujui. Lihat WA Templates.
Berapa batas ukuran media per channel?
| Channel | Gambar | Dokumen | Video | Audio |
|---|---|---|---|---|
| 5 MB | 100 MB | 16 MB | 16 MB | |
| 8 MB | — | 25 MB | — | |
| 10 MB per file (maks total 25 MB per pesan) | sama | sama | sama |
Detail di Mengirim media.
SLA & Kinerja
Bagaimana SLA dihitung?
SLA mengukur dua metrik:
- First Response Time (FRT) — waktu dari pesan inbound pertama hingga agent membalas.
- Resolution Time — waktu dari percakapan dibuka hingga status
resolved.
Kebijakan dapat dibuat per channel dan/atau per divisi. Pencocokan
kebijakan mengikuti prioritas channel+division > division-only > channel-only > default. Detail di
Kebijakan SLA.
Apa yang terjadi saat SLA dilanggar?
Scheduler di api-gateway mengecek antrean setiap 30 detik. Saat
sebuah percakapan melampaui threshold FRT atau resolusi, sistem:
- Mencatat breach di tabel
sla_breach_logs. - Mem-publish event ke channel Redis
sla_breaches. - WebSocket meneruskan event ke supervisor via notifikasi real-time.
Supervisor dapat melihat daftar breach di Pemantauan SLA.
Ada rate limit?
Ya — 60 request per menit per IP (tower_governor). Jika Anda
melampaui limit, API akan mengembalikan HTTP 429 Too Many Requests.
Untuk integrasi yang membutuhkan throughput lebih tinggi, hubungi
admin Anda untuk tuning konfigurasi rate limiter.
Integrasi developer
Bagaimana cara akses REST API?
Gunakan API Reference di bagian Developer & API → API
Reference. Setiap endpoint memiliki tombol Try it untuk
menguji langsung dari browser. Authentication via
Authorization: Bearer <JWT> header. Lihat
Quickstart developer.
Apa yang dikirim ke outgoing webhook saya?
OmniStream mem-publish 6 jenis event:
message.receivedmessage.sentmessage.statusconversation.createdconversation.resolvedconversation.assigned
Setiap payload disign dengan HMAC-SHA256 di header
X-Omnistream-Signature. Detail di
Outgoing webhook.
Bagaimana cara subscribe ke WebSocket?
Code
Server akan mengirimkan event real-time untuk percakapan yang relevan dengan peran Anda. Lihat WebSocket koneksi.
Troubleshoot
Pesan masuk tidak muncul di inbox
- Cek apakah
webhook-ingestormenerima webhook:Code - Cek apakah message masuk ke Kafka (satu topik untuk semua saluran, filter lewat field
channelpada payload):Code - Cek apakah
chat-enginememproses (satu binary menangani semua channel):Code - Cek apakah Redis menerima event:
Code
Pesan keluar stuck di status pending
Berarti message-sender tidak memproses job. Cek logsnya:
Code
Penyebab umum:
- Kredensial Meta salah atau kedaluwarsa.
- Network error ke Meta Graph API.
- Messaging window tertutup (lihat pertanyaan di atas).
Frontend tidak bisa konek ke backend
- Pastikan backend berjalan:
docker compose ps. - Cek
.envdi frontend dan pastikanVITE_API_URLmenunjuk kehttp://localhost:3000. - Cek browser console untuk error CORS. Di development backend
menggunakan
CorsLayer::permissive()— jika masih gagal, error bisa dari service worker yang cached.
Migrasi database gagal saat container api-gateway start
Migrasi dijalankan otomatis oleh omni-common via
sqlx::migrate!. Jika gagal:
- Cek logs:
docker compose logs api-gateway. - Pastikan
DATABASE_URLbisa diakses dari container. - Pastikan user PostgreSQL punya privilege
CREATE. - Jangan menghapus folder
migrations/— ini adalah source of truth.
Lainnya
Di mana saya bisa melapor bug atau meminta fitur?
Buat issue di repository GitHub OmniStream, atau hubungi maintainer workspace Anda. Untuk bug keamanan, JANGAN buat issue publik — hubungi langsung via email privat.
Apakah OmniStream mendukung multi-tenant/multi-workspace?
Saat ini belum. Plan multi-tenant ada di
.omc/plans/2026-03-25-saas-multi-tenancy.md tetapi di luar scope
v1.
Bagaimana cara backup data saya?
Lakukan pg_dump untuk PostgreSQL dan mongodump untuk MongoDB secara berkala (minimal harian). Juga backup folder media di MinIO. Runbook lengkap di Self-hosting.
Tidak menemukan jawaban? Cek navigasi Panduan Pengguna di sidebar, atau buka bagian Developer & API untuk detail teknis.