Integrasi Sistem Blibli.com dengan WhatsApp Enterprise

Eko Kurniawan Khannedy
Blibli.com Tech Blog
5 min readApr 15, 2019

Awal tahun 2018, saya dan tim Blibli.com mendapat kesempatan diundang secara khusus untuk ke Singapura dalam rangka alpha integration dengan WhatsApp Enterprise. Dan para artikel ini saya akan share tentang integrasi Blibli.com dengan WhatsApp Enterprise, dan bagaimana arsitektur sistem yang kita buat agar tidak terlalu banyak effort yang harus dikeluarkan oleh tim Engineering Blibli.com.

Tim Blibli.com di Facebook Singapura.

Message Service Sebelum Integrasi

Sebelum integrasi dengan WhatsApp Enterprise, di Blibli.com sendiri, kita susah memiliki sebuah message service yang tugasnya untuk mengirim pesan (SMS dan Email). Dan jika ada sebuah service yang ingin mengirim pesan, cukup dengan mengirim pesan melalui message broker. Dengan arsitektur seperti ini, service client akan lebih mudah karena tidak tergantung ke message service, dan saat message service bermasalah, pesan tidak hilang karena semua tersimpan di message broker dengan aman.

Message Service Sebelum Integrasi dengan WhatsApp Enterprise

Saat dari tim Product ingin melakukan integrasi dengan WhatsApp Enterprise, sekarang muncul pertanyaan, bagaimana caranya agar proses integrasi ini bisa berjalan dengan cepat, tanpa harus mengubah banyak service? Harapannya bahkan service client tidak perlu tahu tentang kompleksitas nya, jadi cukup mengirim pesan seperti biasa ke message service, secara otomatis nanti bisa terhubung ke WhatsApp Enterprise.

Ceremony di WhatsApp Enterprise

Yang paling disayangkan di API aplikasi chat seperti WhatsApp, Telegram atau Line, harus ada ceremony nya terlebih dahulu. Contohnya;

  • Telegram mewajibkan user harus melakukan chat dahulu ke bot kita sebelum kita bisa mengirim chat ke user nya.
  • Line mewajibkan user untuk menambahkan bot kita sebelum kita bisa mengirim chat ke user, dan.
  • WhatsApp mewajibkan untuk menambahkan kontak user terlebih dahulu, sebelum bisa mengirim chat ke user tersebut.

Artinya sekarang, bagaimana cara kita bisa mengirim pesan ke user menggunakan WhatsApp, sedangkan message service nya tidak menyimpan data pengguna Blibli.com, dan memang hal itu bukanlah domain dari message service.

Dari hasil diskusi, akirnya kita membuat sebuah service baru bernama whatsapp service yang tugasnya untuk melakukan integrasi dengan WhatsApp. Whatsapp service akan melakukan sync data kontak Blibli.com dengan WhatsApp Enterprise dan juga mengirim pesan melalui WhatsApp Enterprise. Whatsapp service akan dianggap sebagai 3rd party oleh message service, sama seperti 3rd party sms provider.

Contact Sync di WhatsApp Enterprise

Hal yang dilakukan oleh whatsapp service untuk men-sync-kan pengguna Bllibli.com dan WhatsApp Enterprise adalah dengan cara berikut:

  1. Di Blibli.com domain member ditangani oleh member service. Dan jika terjadi perubahan pada data member, maka member service akan mengirim event ke message broker.
  2. Whatsapp service akan menyimpan data yang dibutuhkan dari event yang dikirim oleh member service, seperti id, nama dan nomor telepon. Data ini akan di simpan di database whatsapp service, sehingga secara tidak langsung, whatsapp service sebenarnya tidak membutuhkan member service.
  3. Secara scheduler, whatsapp service akan men-sync-kan data kontak yang terdapat di database-nya dengan WhatsApp Enterprise.

Seamless Integration

Seperti yang tadi telah dibahas, tantangan kali ini adalah, bagaimana caranya proses integrasi ini berjalan mulus tanpa harus melakukan perubahan yang terjadi di service client. Akhirnya yang kita ubah adalah logic di message service saja, tanpa harus ada perubahan di sisi service client yang butuh untuk mengirim pesan.

Integrasi System Blibli.com dengan WhatsApp Enterprise

Setelah dilakukan perubahan logic di message service, berikut flow yang terjadi ketika service client mengirim pesan.

  1. Tak ada perubahan yang terjadi di service client, tak perlu ada development tambahan, tak perlu redeploy aplikasi, karena memang tak ada yang dirubah sama sekali. Service client hanya mengirim message ke message broker jika ingin mengirim pesan, sama seperti biasanya.
  2. Pesan yang dikirim oleh service client akan diterima oleh message service. Disinilah logic nya dirubah, tadinya saat message service menerima pesan dari service client, message service akan mengirim ke sms provider, sekarang tidak, pesannya akan dikirim ke whatsapp service.
  3. Pesan yang harusnya dikirim ke sms provider, sekarang di kirim ke whatsapp service melalui message broker dengan event send chat message. Kenapa tidak langsung saja yang send message event itu di listen oleh whatsapp service, hal ini dikarenakan format message nya berbeda, dan jika harus diubah format message-nya, artinya semua service client yang butuh mengirim pesan harus berubah juga, dan itu yang harus kita hindari.
  4. Event send chat message akan di terima oleh whatsapp service. Data chat disimpan di database whatsapp service, lalu.
  5. Data chat message akan dikirim ke WhatsApp Enterprise.

Dari sini mungkin ada sedikit pertanyaan? Berarti kita tidak menggunakan sms provider lagi? Atau bagaimana jika user tidak memiliki akun WhatsApp? Atau apa yang terjadi jika server WhatsApp sedang bermasalah?

Oke tenang, hal ini pun sudah kita pikirkan solusinya.

Saat Gagal Integrasi dengan WhatsApp

Jika terjadi kegagal saat integrasi dengan WhatsApp, seperti misal ternyata user tidak terdaftar di WhatsApp, ada koneksi jaringan ke server WhatsApp Enteprise yang bermasalah, atau aplikasi WhatsApp user sedang offline dalam waktu yang lama. Maka secara langsung kita akan melakukan fallback seperti flow semula tanpa WhatsApp Enterprise.

Gagal Integrasi Blibli.com dengan WhatsApp Enteprise

Jadi :

  1. Jika ternyata whatsapp service gagal mengirim pesan ke WhatsApp Enterprise
  2. Maka whatsapp service akan mengirim pesan failed send chat ke message broker, pesan ini berisi full pesan yang sebelumnya diterima di event send chat message.
  3. Event send failed chat tersebut akan di terima oleh message service. Jika event ini diterima oleh message service, message service sudah tahu kalo pesan gagal dikirim atau terjadi masalah di whatsapp service.
  4. Secara otomatis pesan tersebut akan dikirim ke sms provider. Sehingga terkesan seperti flow sebelumnya tanpa integrasi dengan WhatsApp Enterprise.

Kesimpulan

Dengan arsitektur seperti ini, Blibli.com berhasil mengintegrasikan sistem WhatsApp Enterprise tanpa harus ada perubahan besar-besaran di backend system yang harus dilakukan.

Tertantang untuk berkolaborasi menjadi Backend Engineer di Blibli.com Bandung atau Jakarta? Kamu bisa menghubungi saya, Eko Kurniawan Khannedy via email eko.k.khannedy@gdn-commerce.com.

Regards.

--

--