Hai para sobat coders, apa kabar? semoga tetap semangat 😉
Hari ini Om Gee mau berbagi cerita tentang pengalaman membangun integrasi antara WhatsApp dengan salah satu modul inti Odoo, yaitu Discuss. Kita akan bedah bersama dari sisi arsitektur, konsep logika, hingga hasil implementasinya.
Cerita ini berawal dari pertanyaan seorang sobat coder yang bingung bagaimana cara mengukur KPI (Key Performance Indicator) tim Customer Service (CS) saat melayani pelanggan via WhatsApp. Dari situ, muncul ide untuk mengintegrasikan modul Discuss dengan WhatsApp sebagai addons tambahan Odoo yang diturunkan dari WhatsApp Gateway Core untuk Odoo 18.
Tujuannya jelas: membuat semua respons CS bisa dipantau, diukur durasi balasannya, dan dihitung KPI-nya secara objektif langsung dari sistem Odoo.
Jadi intinya tujuan menggabungkan WhatsApp langsung ke dalam modul Odoo Discuss (mail.thread / mail.channel) mengubah cara tim operasional, sales, dan support mengelola komunikasi pelanggan. Dengan integrasi ini, WhatsApp bukan lagi aplikasi eksternal yang terisolasi, melainkan bagian dari aliran kerja ERP Odoo.
Konsep Logika & Alur Sistem (Logic Concept)
Prinsip utama WA Discuss adalah menjadikan Odoo Discuss sebagai single source of truth untuk seluruh obrolan pesan masuk (inbound) dan pesan keluar (outbound).

Arsitektur Komunikasi Multi-Channel Odoo. Source: Odoo
Alur Pesan Masuk (Inbound Flow)
- Pelanggan Mengirim Pesan: Pelanggan mengirim teks atau media via WhatsApp ke nomor resmi perusahaan.
- Gateway Event & Webhook: WhatsApp Gateway (Meta Cloud API / Baileys / Node.js Service) menangkap event pesan baru dan menembakkan payload HTTP POST Webhook ke endpoint Odoo (/whatsapp/webhook).
- Modul Kontak (res.partner): Odoo mengekstrak nomor pengirim (contoh: 628123456789). System melakukan pencarian kontak:
- Jika nomor terdaftar, hubungkan pesan ke res.partner tersebut.
- Jika belum terdaftar, buat data res.partner baru secara otomatis.
- Manajemen Channel (mail.channel): Odoo memeriksa keberadaan channel obrolan aktif untuk kontak tersebut.
- Jika channel belum ada/sudah ditutup, buat mail.channel baru ber-tipe khusus (misal channel_type = 'whatsapp').
- Posting Pesan (mail.message): Payload pesan diubah menjadi mail.message dan di-post ke dalam channel. Notifikasi real-time terdistribusi ke UI Odoo Discuss melalui bus sistem Odoo (long-polling / websocket).
Alur Pesan Keluar (Outbound Flow)
- Operator Membalas Pesan: Staff/CS menulis balasan langsung di antarmuka Odoo Discuss pada channel pelanggan.
- Event Trigger (message_post / Controller Override): Saat pesan baru dibuat pada channel ber-tipe WhatsApp, sistem memicu fungsi pengiriman pesan keluar.
- Panggilan REST API Gateway: Odoo mengeksekusi request HTTP POST ke WhatsApp Gateway dengan payload berisi nomor tujuan dan teks/attachment pesan.
- Pembaruan Status (Delivery Receipt): Gateway mengembalikan status pengiriman (wa_message_id, status: sent, delivered, read) yang kemudian disimpan pada metadata mail.message.
Gambaran Umum Teknis (Technical Architecture)
Pemetaan Model Odoo (Data Mapping)
res.partner | Menyimpan data identitas kontak serta nomor telepon terstandarisasi (mobile / phone). |
mail.channel | Ruang obrolan percakapan (chat room) spesifik per kontak WA. Mengatur partisipan (staff) dan status channel. |
mail.message | Menyimpan konten pesan (teks, media PDF/gambar), timestamp, arah pesan (inbound/outbound), serta ID referensi WhatsApp. |
wa.account / wa.config | Menyimpan kredensial API (Access Token, Phone Number ID, Webhook Secret Key, status koneksi). |
WA Discuss Integration Flow (Inbound)

WA Discuss Integration Flow (Outbound)

Hasil & Deliverables Implementasi
- Pusat Komunikasi Terdesentralisasi: Seluruh pesan WhatsApp masuk langsung ke dashboard Odoo Discuss tanpa perlu membuka aplikasi WhatsApp Web terpisah.
- Satu Nomor Terhubung ke Banyak Agent (Multi-Agent Support): Tim CS, Sales, dan Finance dapat mengelola satu nomor WhatsApp perusahaan secara bersamaan dengan pembagian channel yang rapi.
- Konteks CRM & Transaksi Terintegrasi: Saat membuka channel obrolan di Odoo Discuss, operator dapat melihat panel samping (chatter widget) yang menampilkan riwayat Sales Order, Quotation, Lead CRM, atau Ticket Helpdesk pelanggan terkait.
- Audit Trail & Otomatisasi Terjaga: Riwayat obrolan tersimpan aman di database PostgreSQL Odoo, memungkinkan pelaporan respon time CS, analisis percakapan, serta integrasi auto-reply/chatbot lanjutan di masa mendatang.
Berikut sekilas gambaran sistem yang bisa Om Gee share, semoga dapat menginspirasi sobat coders untuk membuat sesuatu yang lebih besar lagi. Om Gee sangat terbuka untuk diskusi dan brainstorming dengan sobat semua. Sampai jumpa di pembahasan berikutnya!