Ringkasan callback
DingTalk mendorong (push) peristiwa callback yang dilanggan ke Aplikasi perusahaan pihak ketiga, termasuk aktivasi aplikasi, perubahan Otorisasi App, dan perubahan Departemen. Dengan berlangganan peristiwa-peristiwa ini, developer dapat berintegrasi dengan DingTalk secara lebih efektif. Saat mengembangkan Aplikasi perusahaan pihak ketiga, Anda harus mendaftarkan callback untuk menerima peristiwa aktivasi aplikasi perusahaan. Peristiwa ini memberi tahu Aplikasi pihak ketiga Anda Organisasi mana yang telah mengaktifkan aplikasi. Setelah backend Aplikasi pihak ketiga Anda menerima peristiwa ini, inisialisasikan informasi Organisasi. Saat ini DingTalk mendukung metode push berikut:- RDS push
- HTTP push
- SyncHTTP push
- 203.119.0.0/16
- 203.119.128.0/17
- 140.205.0.0/16
- 106.11.0.0/16
- 198.11.0.0/16
- 59.82.0.0/16
Proses registrasi peristiwa callback
Proses langganan peristiwa callback ditunjukkan pada gambar berikut. Pertama, konfigurasikan endpoint permintaan HTTP di DingTalk Open Platform untuk menerima peristiwa langganan yang di-push, lalu tetapkan peristiwa yang ingin Anda langgani. Setelah Anda mengonfigurasi endpoint permintaan, DingTalk Open Platform mengirim permintaan POST ke endpoint tersebut. Langganan peristiwa hanya selesai jika Anda dengan benar mengembalikan string terenkripsi yang berisi “success” dalam waktu yang ditentukan.Konfigurasikan endpoint permintaan dan langgani peristiwa callback
Untuk menerima peristiwa callback yang di-push DingTalk melalui SyncHTTP, konfigurasikan terlebih dahulu URL callback HTTP. Ketika peristiwa yang dilanggan terpicu, DingTalk mengirim permintaan HTTP POST yang sesuai ke URL ini.- Masuk ke Developer Console. Cari aplikasi yang Anda buat dan buka halaman detailnya.
- Klik Development Management, lalu klik Edit, dan pilih SyncHTTP Push sebagai tipe push.
-
Konfigurasikan endpoint HTTP yang digunakan untuk menerima permintaan.
-
token: Setiap kali DingTalk mendorong data peristiwa ke endpoint Anda, ia menyertakan
tokenyang digunakan untuk menghasilkan Tanda tangan dan memverifikasi keabsahan permintaan callback. Token harus terdiri dari huruf Inggris atau angka dan memiliki panjang 3 hingga 32 karakter. - Encryption AES Key: Klik Generate Automatically untuk menghasilkan kunci AES. Ini adalah parameter yang digunakan untuk mengenkripsi dan mendekripsi Konten pesan callback. Ini merupakan encoding Base64 dari kunci AES. Untuk detail, lihat Enkripsi dan Dekripsi Pesan di bawah.
- Callback URL: URL yang digunakan untuk menerima permintaan peristiwa yang dilanggan. Ketika peristiwa yang dilanggan terpicu, DingTalk mengirim permintaan HTTP POST yang sesuai ke URL ini. Catatan Setiap aplikasi hanya dapat mengonfigurasi satu Callback URL. Semua Notifikasi peristiwa untuk langganan aplikasi dikirim ke URL permintaan ini.
-
token: Setiap kali DingTalk mendorong data peristiwa ke endpoint Anda, ia menyertakan
-
Setelah konfigurasi selesai, ketika Anda mengklik tombol Verify Validity, Open Platform mendorong permintaan POST
application/jsonke URL yang Anda konfigurasikan untuk memverifikasi keabsahannya, seperti ditunjukkan di bawah:Ketika Anda menerima permintaan verifikasi POST dari Open Platform, dekripsikan dan kembalikan string terenkripsi yang berisi success ke DingTalk dalam waktu 1.200 ms. Jika Anda tidak merespons tepat waktu, permintaan dapat dibatasi lajunya (rate limit). - Setelah endpoint permintaan berhasil dikonfigurasi, di area daftar Callback Events, pilih peristiwa callback yang ingin Anda langgani, lalu klik Save di sudut kanan atas. Catatan Jika peristiwa callback tidak dapat dipilih, ajukan permohonan Izin API yang sesuai di halaman Manage Permissions pada Developer Console.
Deskripsi data yang di-push
Setelah Anda mengonfigurasi Callback URL, ketika Anda mengklik tombol Verify Validity, Open Platform mendorong permintaan POSTapplication/json ke URL yang Anda konfigurasikan untuk memverifikasi keabsahannya, seperti ditunjukkan di bawah:
-
check_url: Peristiwa callback pengujian
Data hasil dekripsi:
-
check_create_suite_url: Peristiwa callback verifikasi
Data hasil dekripsi:
-
check_update_suite_url: Peristiwa pembaruan Callback URL
Data hasil dekripsi:
-
SYNC_HTTP_PUSH_HIGH: Data prioritas tinggi, seperti aktivasi aplikasi
-
SYNC_HTTP_PUSH_MEDIUM: Data prioritas normal, seperti perubahan Kontak
bizData dari tipe SYNC_HTTP_PUSH_HIGH dan SYNC_HTTP_PUSH_MEDIUM persis sama dengan data pada tabel open_sync_biz_data dan open_sync_biz_data_medium dari RDS push. Untuk format spesifiknya, lihat Data Formats.
Menerima dan merespons peristiwa callback
Jalankan sebuah layanan HTTP (seperti ditunjukkan di bawah). Dalam logika respons layanan tersebut, dekripsikan dan simpan data callback (yang di-push). Contoh kode lengkap: <https://github.com/opendingtalk/eapp-isv-quick-start-java/blob/master/src/main/java/com/controller/CallbackController.java>Enkripsi dan dekripsi pesan
Untuk memastikan transmisi data yang aman, ketika DingTalk mendorong peristiwa callback yang dilanggan ke Callback URL, ia menyertakan token yang telah dikonfigurasi untuk memverifikasi sumber peristiwa. DingTalk juga menggunakan kunci untuk mengenkripsi Konten pesan secara simetris. Klik di sini untuk mendapatkan library enkripsi dan dekripsi callback beserta demo-nya. Server DingTalk mengkodekan plaintext dari isi pesanmsg menjadi encrypt. encrypt = Base64_Encode(AES_Encrypt[random(16B) + msg_len(4B) + msg + $key]) adalah encoding Base64 dari pesan plaintext terenkripsi msg. Di mana:
- random adalah string acak sepanjang 16 byte.
- msg_len adalah panjang
msgsepanjang 4 byte, dalam urutan byte jaringan (network byte order). - msg adalah plaintext dari isi pesan.
- key adalah suiteKey dari aplikasi.
encrypt dari JSON yang dikembalikan:
- Dekode Base64 dari ciphertext:
aes_msg = Base64_Decode(encrypt). - Gunakan AESKey untuk melakukan dekripsi AES:
rand_msg = AES_Decrypt(aes_msg).