BiawakBakar

Dokumentasi Service Broadcast

Nov 14th, 2024
5,427
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
BibTeX 4.97 KB | None | 0 0
  1. [GIT Broadcast](https://git.dev.siap.id/micro-service/mobile-notification)
  2. [GIT Library Broadcast](https://git.dev.siap.id/composer-package/mobile-notification-library)
  3.  
  4. # Deployment
  5.  
  6. ## Devel
  7.  
  8. Server: 172.17.1.31
  9. Menggunakan Docker dan Traefik
  10. Stack: mobile-notifcation
  11. Url Akses: https://mnotif.dev.jagr.id/
  12.  
  13. ## Riil
  14.  
  15. # Konfigurasi
  16.  
  17. ## Database
  18.  
  19. - Devel
  20.   Host: db-01.dev.siap.id
  21.   Database: mobilenotifdb
  22.  
  23. - Rill: XXX
  24.  
  25. ## Cache
  26.  
  27. - Devel
  28.   Driver: memcached
  29.   Host: 172.17.1.31
  30.  
  31. - Rill: XXX
  32.  
  33. ## Queue
  34.  
  35. - Devel
  36.   Driver: beanstalkd
  37.   Host: 172.17.1.31
  38.   Queue: mobile-notification
  39.  
  40. - Rill: XXX
  41.  
  42. ## Definisi
  43.  
  44. Group: User dari client
  45. Device: Device dari user (bisa multi device dalam satu group)
  46. Topic: Topik yang di subscribe oleh user
  47. Topic Group: Topic yang di subscribe oleh group
  48. Message: Notifikasi yang dikirimkan ke user (Bisa direct dari group atau dari topic)
  49.  
  50. ## Alur Aplikasi
  51.  
  52. Proses pembuatan user baru
  53. 1. Ketika user login, (api/groups/store) client akan mengirimkan key group untuk dibuatkan group (jika belum memiliki)
  54. 2. Setelah group dibuat, client akan mengirimkan `reg_token` untuk insert device ke group
  55. 3. Jika group belum memiliki `notif_key` maka akan dibuatkan `notif_key` untuk manajemen device yang terhubung ke group pada service FCM
  56.  
  57. Proses tambah device baru
  58. 1. Ketika user login, (api/groups/{group}/store-device) client akan mengirimkan `reg_token` baru yang akan di insert ke tabel device
  59. 2. Jika group belum memiliki `notif_key` maka akan dibuatkan `notif_key`
  60. 3. Jika group sudah memiliki `notif_key` maka akan device ini akan di tambahkan ke `notif_key` yang sudah ada
  61. 4. Jika group sudah memiliki topic, maka device ini juga di subscribe ke topic yang sudah ada
  62.  
  63. Proses hapus device
  64. 1. Ketika user logout, (api/groups/{group}/delete-device) client akan mengirimkan `reg_token` yang akan dihapus dari tabel device
  65. 2. Cek group apabila memiliki `notif_key` maka akan dihapuskan `reg_token` dari `notif_key`
  66. 3. Cek group apabila memiliki topic, maka device ini juga di unsubscribe dari topic yang sudah ada
  67.  
  68. Proses subscribe topic
  69. 1. Ketika user subscribe topic, (api/groups/{topic}/subscribe) client akan mengirimkan `topic` dan `group` yang akan di subscribe
  70. 2. Dari group tersebut akan diambil semua device yang valid dan di subscribe ke topic yang diinginkan (karena FCM hanya support subscribe topic dari device)
  71.  
  72. Proses unsubscribe topic
  73. 1. Ketika user unsubscribe topic, (api/groups/{topic}/unsubscribe) client akan mengirimkan `topic` dan `group` yang akan di unsubscribe
  74. 2. Dari group tersebut akan diambil semua device yang valid dan di unsubscribe dari topic yang diinginkan
  75.  
  76. Proses broadcast message ke group
  77. 1. Ketika user broadcast message ke group, (api/messages/send) client akan mengirimkan `payload` dan `group_ids` yang akan di broadcast
  78. 2. Dari group tersebut akan diambil `notif_key` yang valid dan di broadcast message ke device yang terhubung ke `notif_key`
  79.  
  80. Proses broadcast message ke topic berdasarkan topic_id
  81. 1. Ketika user broadcast message ke topic, (api/topics/send-message) client akan mengirimkan `payload` dan `topic_id` yang akan di broadcast
  82. 2. Dari topic_id tersebut akan diambil nama topic dan di broadcast message ke device yang subscribe ke topic tersebut
  83. 3. Jika environment selain `production` maka nama topic akan di tambahkan `devel-` di depan nama topic secara kode (bukan dari database)
  84.  
  85. Proses broadcast message ke topic berdasarkan kriteria
  86. 1. Ketika user broadcast message ke topic, (api/topics/send-message) client akan mengirimkan `payload` dan `kriteria` yang akan di broadcast
  87. 2. Kriteria tersebut berisi `id` dari topic dan akan diconvet menjadi nama topic dan disesuaikan kondisi yang dikirimkan (seperti notasi `&&` dan `||`)
  88. 3. Jika environment selain `production` maka nama topic akan di tambahkan `devel-` di depan nama topic secara kode (bukan dari database)
  89.  
  90. ## Pengecekan kendala
  91.  
  92. 1. Pastikan user sudah login dan memiliki group dan device
  93. 2. Pastikan group sudah memiliki `notif_key`
  94. 3. Cek pada tabel `message` pada group tersebut apakah sudah ada
  95. 4. Jika `k_status_message` 3, maka cek `status` pada tabel `message` untuk mengetahui status message tersebut
  96. 5. Jika `k_status_message` 2 dan user belum menerima notifikasi dan status adalah `Requested entity was not found.` maka error tersebut diakibatkan oleh `notif_key` yang tidak valid
  97. 6. Untuk mengatasi hal tersebut, cek pada tabel `failed_jobs` apakah ada error yang terjadi pada saat pembuatan `notif_key` pada group tersebut dari kolom `payload` dengan operation `add` atau `create` dengan `notification_key_name` yang sesuai dengan `group_id` yang ada di `message` yang statusnya `Requested entity was not found.`
  98. 7. Jika ada error pada `failed_jobs` maka coba jalankan command untuk regenerasi `notif_key` pada group tersebut dengan cara `php artisan mobile-notification:generate-notification-key {group_id}`. pastikan `APP_ENV` pada `.env` sudah sesuai dengan environment yang diinginkan
  99. 8. Ulangi langkah 1-7 jika masih terjadi error
  100.  
Tags: Dokumentasi
Advertisement
Add Comment
Please, Sign In to add comment