Odoo - Firebase Cloud Messaging Push Notification
dari Odoo ke Android dan IOS devices
Push notif message by default ada di Odoo versi Enterprise... gimana kalau community pingin punya push juga.. ?
Gunakan infrasruktur Google Firebase Cloud Messaging (FCM). Dengan FCM kita bisa kasi push notif ke aplikasi android dan IOS.
Contoh kasus misalnya ada Sales Order yang perlu di-confirm oleh manager, maka sales manager bisa dapat push notif secara realtime supaya bisa dia follow up dengan respon yang lebih cepat daripada nunggu email..
Ikuti langkah-langkahnya di bawah ini...
Registrasi API KEY FCM
Masuk ke https://firebase.google.com/ dan create project baru...
Coding di aplikasi android
Ikuti http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/ bab 1 sd 3 saja
Coding di addons
install pyfcm
ini modul python untuk mempermudah programming FCM.
ini contoh coding cara sending push:
def push_pyfcm_multi(self, to_regids, message_title, message_body, data=False):
push_service = FCMNotification(api_key=API_KEY)
result = push_service.notify_multiple_devices(registration_ids=to_regids,
message_title=message_title,
message_body=message_body)
API_KEY = API Key yang didapat dari Google FCM concole di atas... device android harus register ke API Key yang sama dengan sendernya.
to_regids = list dari REGISTRATION_ID FCM yang didapat oleh device android pada saat register ke FCM (lihat coding android).
message_title = baris pertama notifikasi
message_body = baris kedua notitikasi
data = custom data tambahan pada message, misalnya ID record yang perlu di fetch, nama tabel, dll...
Contoh tampilan notifikasi di Android seperti ini...
Cara Penggunaan
Lanjut... cara inherit SO confirm untuk mengirim Push Message
from odoo import api, fields, models, _
class sale_order(models.Model):
_name = 'sale.order'
_inherit = 'sale.order'
@api.multi
def action_confirm(self):
res = super(sale_order, self).action_confirm()
fcm_regids = [self.partner_id.fcm_regid]
message_title = "SO Confirm"
message_body = "SO %s need action" % self.name
data = {'model':'sale_order', 'id': self.id}
self.push_pyfcm_multi(fcm_regids, message_title, message_body, data)
return res
Coding di atas, asumsinya pada res.partner kita sudah tambahin field fcm_regid yaitu ID registrasi FCM per masing-masing user pada saat login di android dan registrasi ke FCM.
Custom data, kita isi dengan dictionary yang isinya model 'sale_order' dan id dari sale order, sehingga android apps bisa buka activity Sale Order dengan ID yang sesuai ketika notifikasi di klik oleh user.
Ini salah satu materi training Odoo, Python, Android yang diselenggarakan di vitraining.com.