Webhook¶
Peringatan
Sangat disarankan untuk berkonsultasi dengan developer, solution architect, atau peran teknis lainnya ketika memutuskan untuk menggunakan webhook dan selama proses implementasi. Jika tidak dikonfigurasi dengan benar, webhook dapat mengganggu database Odoo dan dapat memakan waktu untuk dikembalikan.
Webhook, yang dapat dibuat di Odoo Studio, memungkinkan Anda mengotomatiskan tindakan di database Odoo Anda ketika peristiwa tertentu terjadi di sistem eksternal lain.
Dalam praktiknya, ini bekerja sebagai berikut: ketika peristiwa terjadi di sistem eksternal, file data ("payload") dikirim ke URL webhook Odoo melalui permintaan API POST, dan tindakan yang telah ditentukan dijalankan di database Odoo Anda.
Tidak seperti tindakan terjadwal yang berjalan pada interval yang telah ditentukan, atau permintaan API manual yang perlu dipanggil secara eksplisit, webhook memungkinkan komunikasi dan otomasi real-time yang digerakkan oleh peristiwa. Misalnya, Anda dapat mengatur webhook agar data inventaris Odoo Anda diperbarui secara otomatis ketika sales order dikonfirmasi di sistem point-of-sale eksternal.
Mengatur webhook di Odoo tidak memerlukan coding ketika menghubungkan dua database Odoo, tetapi menguji webhook memerlukan alat eksternal. Target record atau tindakan khusus mungkin memerlukan keterampilan pemrograman.
Catatan
Artikel ini membahas pembuatan webhook yang menerima data dari sumber eksternal. Namun, dimungkinkan juga untuk membuat tindakan otomatis yang mengirim data ke webhook eksternal ketika terjadi perubahan di database Odoo Anda.
Buat webhook di Odoo¶
Penting
Sebelum mengimplementasikan webhook di database live, konfigurasikan dan uji menggunakan database duplikat untuk memastikan webhook berfungsi sesuai yang diinginkan.
Tip
Mengaktifkan mode pengembang sebelum membuat webhook memberikan fleksibilitas yang lebih besar dalam memilih model yang ditargetkan oleh aturan otomasi. Ini juga memungkinkan Anda menemukan nama teknis model dan field, yang mungkin diperlukan untuk mengonfigurasi payload.
Untuk menemukan nama teknis model, dengan mode pengembang diaktifkan, arahkan kursor ke nama model kemudian klik Tautan internal. Nama teknis dapat ditemukan di field Model. Misalnya, webhook sales order menggunakan model Sales Order, tetapi nama teknis sale.order digunakan dalam payload.
Untuk membuat webhook di Studio, lakukan langkah berikut:
Buka Studio dan klik Webhooks, kemudian Baru.
Berikan webhook nama yang jelas dan bermakna yang mengidentifikasi tujuannya.
Jika diperlukan, dan dengan mode pengembang diaktifkan, pilih Model yang sesuai dari dropdown. Jika mode pengembang tidak diaktifkan, aturan otomasi menargetkan model saat ini secara default.
URL webhook dibuat secara otomatis, tetapi dapat diubah jika diperlukan dengan mengklik Rotasi Secret. Ini adalah URL yang harus digunakan saat mengimplementasikan webhook di sistem eksternal yang akan mengirim pembaruan ke database.
Peringatan
URL bersifat rahasia dan harus diperlakukan dengan hati-hati. Membagikannya secara online atau tanpa kehati-hatian dapat memberikan akses yang tidak diinginkan ke database Odoo. Jika URL diperbarui setelah implementasi awal, pastikan untuk memperbaruinya di sistem eksternal.
Jika diinginkan, aktifkan Catat Panggilan untuk melacak riwayat permintaan API yang dibuat ke URL webhook, misalnya untuk tujuan pemecahan masalah.
Jika sistem yang mengirim webhook bukan Odoo, sesuaikan kode Target Record untuk mencari record JSON yang disertakan dalam payload ketika permintaan API dibuat ke URL webhook. Jika sistem yang mengirim webhook adalah database Odoo, pastikan bahwa
iddanmodelmuncul dalam payload.Jika webhook digunakan untuk membuat record di database Odoo, gunakan
model.browse(i)ataumodel.search(i)daripada format Target Record default.Klik Tambah tindakan di tab Tindakan yang Harus Dilakukan untuk menentukan tindakan yang akan dijalankan.
Sebelum mengimplementasikan webhook di sistem eksternal, uji webhook tersebut untuk memastikan berfungsi sesuai yang diharapkan.
Tip
Webhook juga dapat dibuat melalui menu Automations di Studio dengan memilih pemicu On webhook.
Untuk mengakses riwayat permintaan API jika Log Calls telah diaktifkan, klik tombol pintar Logs di bagian atas formulir Automation rules.
Jika tujuan webhook adalah selain untuk memperbarui rekaman yang ada, misalnya untuk membuat rekaman baru, tindakan Execute Code harus dipilih.
Menguji webhook¶
Menguji webhook memerlukan payload uji dan alat atau sistem eksternal, seperti Postman, untuk mengirim payload melalui permintaan API POST. Bagian ini menyajikan langkah-langkah untuk menguji webhook di Postman.
Tip
Lihat bagian kasus penggunaan webhook untuk penjelasan langkah demi langkah tentang cara menguji webhook menggunakan payload uji.
Untuk mendapatkan bantuan khusus tentang pengujian webhook dengan Postman, hubungi tim dukungan mereka.
Di Postman, buat permintaan HTTP baru dan atur metodenya ke POST.
Salin URL webhook dari database Odoo Anda menggunakan ikon (link) dan tempelkan ke kolom URL di Postman.
Klik tab Body dan pilih raw.
Atur jenis file ke JSON, kemudian salin kode dari payload uji dan tempelkan ke editor kode.
Klik Send.
Di penampil Response di bagian bawah layar di Postman, detail termasuk kode respons HTTP menunjukkan apakah webhook berfungsi dengan benar atau tidak.
Pesan
200 OKataustatus: okmenunjukkan bahwa webhook berfungsi dengan baik di sisi Odoo. Dari sini, implementasi dapat dimulai dengan sistem lain untuk mengirim permintaan API secara otomatis ke URL webhook Odoo.Jika respons lain dikembalikan, nomor yang terkait dengannya membantu mengidentifikasi masalah. Misalnya, pesan
500 Internal Server Errorberarti Odoo tidak dapat menginterpretasikan panggilan dengan benar. Dalam hal ini, pastikan kolom yang ditemukan dalam file JSON dipetakan dengan benar dalam konfigurasi webhook dan di sistem yang mengirim panggilan uji.
Tip
Mengaktifkan pencatatan panggilan dalam konfigurasi webhook di Odoo menyediakan log kesalahan jika webhook tidak berfungsi sesuai yang diharapkan.
Mengimplementasikan webhook di sistem eksternal¶
Ketika webhook telah berhasil dibuat di Odoo dan diuji, implementasikan di sistem yang mengirim data ke database Odoo, pastikan permintaan API POST dikirim ke URL webhook.
Kasus penggunaan webhook¶
Di bawah ini adalah dua contoh cara menggunakan webhook di Odoo. Payload uji disediakan untuk setiap contoh, dan dapat ditemukan di bagian tentang pengujian webhook. Postman digunakan untuk mengirim payload uji.
Perbarui mata uang sales order¶
Webhook ini memperbarui sales order di aplikasi Penjualan menjadi USD ketika sistem eksternal mengirimkan permintaan API POST ke URL webhook yang menyertakan nomor sales order tersebut (yang diidentifikasi oleh record id payload).
Ini dapat berguna untuk anak perusahaan di luar Amerika Serikat dengan perusahaan induk yang berlokasi di dalam Amerika Serikat atau selama merger ketika mengonsolidasikan data ke dalam satu database Odoo.
Buat webhook¶
Untuk membuat webhook ini, lakukan langkah berikut:
Buka aplikasi Penjualan, kemudian buka Studio dan klik Webhooks. Model Sales Order dipilih secara default.
Klik New. Trigger diatur ke On webhook secara default.
Set the Target Record to
model.env[payload.get('model')].browse(int(payload.get('id'))), where:payload.get('model')retrieves the value associated with themodelkey in the payload, i.e.,sale.order, which is the technical name of the Sales Order model.payload.get('id')retrieves the value associated with theidkey in the payload, i.e., the number of the target sales order in your Odoo database with theSand leading zeros removed.intmengonversi id yang diambil menjadi integer (yaitu bilangan bulat) karena metodebrowse()hanya dapat digunakan dengan integer.
Klik Add an action.
Di bagian Type, klik Update Record.
Di bagian Action details, pilih Update, pilih field Currency, dan pilih USD.
Klik Save & Close.
Uji webhook¶
Untuk menguji webhook ini, lakukan langkah berikut:
Dengan Postman terbuka, buat permintaan HTTP baru dan atur metodenya menjadi POST.
Salin URL webhook Odoo menggunakan ikon (link) dan tempelkan ke field URL di Postman.
Klik tab Body dan pilih raw.
Atur tipe file menjadi JSON, kemudian salin kode ini, yaitu payload, dan tempelkan ke editor kode:
{ "model": "sale.order", "id": "SALES ORDER NUMBER" }
Di database Odoo Anda, pilih sales order untuk menguji webhook. Dalam kode yang ditempelkan, ganti
SALES ORDER NUMBERdengan nomor sales order tanpaSatau angka nol sebelum nomor. Misalnya, sales order dengan nomorS00007harus dimasukkan sebagai7di Postman.Klik Send.
Periksa Response viewer di Postman untuk menentukan apakah webhook berfungsi dengan baik atau tidak. Jika pesan selain
200 OKataustatus: okdikembalikan, nomor yang terkait dengan pesan tersebut membantu mengidentifikasi masalah.
Buat kontak baru¶
Webhook ini menggunakan kode kustom untuk membuat kontak baru di database Odoo ketika sistem eksternal mengirimkan permintaan API POST ke URL webhook yang menyertakan informasi kontak. Ini berguna untuk membuat vendor atau pelanggan baru secara otomatis.
Buat webhook¶
Untuk membuat webhook ini, lakukan langkah berikut:
Buka aplikasi Kontak, kemudian buka Studio dan klik Webhooks. Model Contact dipilih secara default.
Klik New. Trigger diatur ke On webhook secara default.
Setel Target Record ke
model.browse([2]). Ini pada dasarnya adalah placeholder karena kode dalam automated action memberi tahu webhook apa yang perlu diambil dari payload dan di model mana record perlu dibuat.Klik Add an action.
Di bagian Type, klik Execute Code.
Salin kode ini dan tempelkan ke code editor di tab Code dari bagian Action details:
# variables to retrieve and hold data from the payload contact_name = payload.get('name') contact_email = payload.get('email') contact_phone = payload.get('phone') # a Python function to turn the variables into a contact in Odoo if contact_name and contact_email: new_partner = env['res.partner'].create({ 'name': contact_name, 'email': contact_email, 'phone': contact_phone, 'company_type':'person', 'customer_rank': 1, }) # an error message for missing required data in the payload else: raise ValueError("Missing required fields: 'name' and 'email'")
Klik Save & Close.
Uji webhook¶
Untuk menguji webhook ini, lakukan langkah berikut:
Di Postman, buat HTTP request baru dan setel method-nya ke POST.
Salin URL webhook Odoo menggunakan ikon (link) dan tempelkan ke field URL di Postman.
Klik tab Body dan pilih raw.
Atur tipe file menjadi JSON, kemudian salin kode ini, yaitu payload, dan tempelkan ke editor kode:
{ "name": "CONTACT NAME", "email": "CONTACTEMAIL@EMAIL.COM", "phone": "CONTACT PHONE NUMBER" }
Dalam kode yang ditempelkan, ganti
CONTACT NAME,CONTACTEMAIL@EMAIL.COM, danCONTACT PHONE NUMBERdengan informasi kontak baru.Klik Send.
Periksa Response viewer di Postman untuk menentukan apakah webhook berfungsi dengan baik atau tidak. Jika pesan selain
200 OKataustatus: okdikembalikan, nomor yang terkait dengan pesan tersebut membantu mengidentifikasi masalah.