Webhook dapat berupa webhook standar atau webhook fleksibel. Dengan webhook standar, kolom permintaan dan respons ditentukan oleh Agen Percakapan (Dialogflow CX). Dengan webhook yang fleksibel, Anda menentukan kolom permintaan dan respons.
Webhook standar
Dengan webhook standar, Anda menggunakan pesan permintaan dan respons yang ditentukan oleh Agen Percakapan (Dialogflow CX). Pesan permintaan memberikan banyak detail tentang sesi. Misalnya, halaman aktif saat ini, intent yang cocok baru-baru ini, nilai parameter sesi, dan respons yang ditentukan agen semuanya disertakan.
Permintaan webhook standar
Saat
fulfillment
dengan webhook dipanggil,
Agen Percakapan (Dialogflow CX) akan mengirimkan permintaan webhook POST HTTPS ke layanan webhook Anda.
Isi permintaan ini adalah objek JSON WebhookRequest
dengan informasi tentang sesi.
Beberapa
integrasi
mengisi kolom WebhookRequest.payload
dengan informasi tambahan.
Misalnya, integrasi Gateway Telepon Dialogflow CX
menyediakan ID pemanggil pengguna akhir.
Lihat dokumentasi referensi
WebhookRequest
(V3)
atau
WebhookRequest
(V3Beta1)
untuk mengetahui detailnya.
Respons webhook standar
Setelah menerima permintaan webhook, layanan webhook Anda harus mengirim respons webhook. Batasan berikut berlaku untuk respons Anda:
- Respons harus muncul dalam waktu tunggu yang Anda konfigurasikan saat membuat resource webhook. Jika tidak, waktu tunggu permintaan akan habis.
- Ukuran respons harus kurang dari atau sama dengan 64 KiB.
Lihat dokumentasi referensi
WebhookResponse
(V3)
atau
WebhookResponse
(V3Beta1)
untuk mengetahui detailnya.
Setelan resource webhook standar
Berikut ini penjelasan setelan resource webhook untuk webhook standar:
Istilah | Definisi |
---|---|
Nama tampilan | Nama yang ditampilkan di konsol untuk webhook. |
Waktu tunggu webhook habis | Saat Agen Percakapan (Dialogflow CX) mengirim permintaan webhook ke layanan webhook Anda, permintaan tersebut mungkin kehabisan waktu tunggu saat menunggu respons. Setelan ini mengontrol waktu tunggu tersebut dalam hitungan detik. Jika waktu tunggu habis, Agen Percakapan (Dialogflow CX) akan memanggil peristiwa webhook.error.timeout. |
Jenis | Tetapkan ke Direktori layanan jika Anda menggunakan direktori layanan untuk akses jaringan pribadi, jika tidak, tetapkan ke Layanan web generik. |
URL webhook | Berikan alamat URL untuk layanan webhook Anda. |
Subjenis | Tetapkan ke Standar |
Webhook khusus lingkungan | Anda dapat menyediakan webhook khusus lingkungan. |
Autentikasi | Lihat bagian autentikasi. |
Sertifikat CA kustom | Ini digunakan untuk mengupload sertifikat CA kustom. |
Webhook fleksibel
Dengan webhook yang fleksibel, Anda menentukan metode HTTP permintaan, parameter URL permintaan, dan kolom pesan permintaan dan respons. Permintaan hanya dapat memberikan nilai parameter yang dipilih, dan respons hanya dapat memberikan nilai penggantian parameter. Batasan ini sebenarnya bermanfaat, karena menyederhanakan antarmuka antara agen dan webhook. Anda jarang perlu menyampaikan apa pun selain nilai parameter sesi antara agen dan webhook. Hal ini juga menyederhanakan penerapan webhook, karena pesan permintaan dan respons hanya berisi hal yang Anda butuhkan, dan Anda dapat memberikan pesan webhook unik untuk berbagai skenario.
Permintaan webhook fleksibel
Saat membuat resource webhook untuk agen, Anda dapat menentukan hal berikut untuk permintaan webhook:
- Metode HTTP yang digunakan untuk permintaan webhook yang dikirim ke layanan webhook Anda.
- Nilai parameter sesi yang harus dikirim Agen Percakapan (Dialogflow CX) ke layanan webhook Anda menggunakan URL.
- Jika memilih
POST
,PUT
, atauPATCH
sebagai metode, Anda dapat menentukan nilai parameter sesi yang harus dikirim Agen Percakapan (Dialogflow CX) ke layanan webhook melalui isi JSON permintaan.
Untuk mengirim nilai parameter sesi menggunakan URL permintaan atau isi JSON, gunakan referensi parameter seperti biasa. Anda tidak perlu melakukan URL-escape pada referensi parameter, dan Anda tidak perlu menggabungkan referensi dalam tanda petik. Saat runtime, Agen Percakapan (Dialogflow CX) akan melakukan URL-escape pada nilai parameter sesuai kebutuhan. Daftar atau nilai gabungan akan diberikan sebagai JSON.
Saat menggunakan referensi parameter dalam isi JSON, Anda harus menggabungkan referensi dalam tanda kutip, terlepas dari jenis parameternya. Jika parameter sebenarnya adalah nilai skalar, daftar, atau komposit numerik, Agen Percakapan (Dialogflow CX) akan menghapus tanda kutip saat mengirim permintaan saat runtime untuk mempertahankan jenis data parameter. Jenis skalar string akan tetap diapit tanda kutip. Jika nilai skalar, daftar, atau komposit numerik direferensikan dalam nilai string (misalnya: "Ini adalah angka: $session.params.size"), parameter akan diperlakukan sebagai string ("Ini adalah angka: 3").
Misalnya,
Anda dapat memberikan nilai parameter sesi fruit
dan size
ke URL permintaan seperti ini:
https://your-webhook-service.com/handler?f=$session.params.fruit&s=$session.params.size
Dan, ke isi JSON permintaan seperti ini:
{
"fruitParameter": "$session.params.fruit",
"sizeParameter": "$session.params.size"
}
Respons webhook yang fleksibel
Saat membuat resource webhook untuk agen, Anda dapat menentukan parameter sesi yang harus ditetapkan Agen Percakapan (Dialogflow CX) ke kolom tertentu dari respons webhook saat runtime.
Batasan berikut berlaku untuk respons Anda:
- Respons harus muncul dalam waktu tunggu yang Anda konfigurasikan saat membuat resource webhook. Jika tidak, waktu tunggu permintaan akan habis.
- Ukuran respons harus kurang dari atau sama dengan 64 KiB.
Gunakan format berikut untuk menentukan kolom skalar, daftar, atau komposit:
$.fully.qualified.path.to.field
Misalnya, pertimbangkan respons JSON berikut:
{
"routes" : [
{
"legs" : [
{
"distance" : {
"text" : "2,064 mi",
"value" : 3321004
}
}
]
}
]
}
Untuk menentukan kolom "value", gunakan kode berikut:
$.routes[0].legs[0].distance.value
Setelan resource webhook yang fleksibel
Berikut ini penjelasan setelan resource webhook untuk webhook fleksibel:
Istilah | Definisi |
---|---|
Nama tampilan | Nama yang ditampilkan di konsol untuk webhook. |
Waktu tunggu webhook habis | Saat Agen Percakapan (Dialogflow CX) mengirim permintaan webhook ke layanan webhook Anda, permintaan tersebut mungkin kehabisan waktu tunggu saat menunggu respons. Setelan ini mengontrol waktu tunggu tersebut dalam hitungan detik. Jika waktu tunggu habis, Agen Percakapan (Dialogflow CX) akan memanggil peristiwa webhook.error.timeout. |
Jenis | Tetapkan ke Direktori layanan jika Anda menggunakan direktori layanan untuk akses jaringan pribadi, jika tidak, tetapkan ke Layanan web generik. |
URL webhook | Berikan alamat URL untuk layanan webhook Anda, yang dapat menyertakan referensi ke parameter sesi. |
Subjenis | Tetapkan ke Fleksibel |
Metode | Tetapkan metode HTTP untuk permintaan webhook. |
Isi permintaan | Berikan isi JSON permintaan seperti yang dijelaskan di atas. |
Konfigurasi respons | Berikan parameter sesi yang harus ditetapkan ke kolom respons seperti yang dijelaskan di atas. |
Webhook khusus lingkungan | Anda dapat menyediakan webhook khusus lingkungan. |
Autentikasi | Lihat bagian autentikasi. |
Sertifikat CA kustom | Ini digunakan untuk mengupload sertifikat CA kustom. |
Menggunakan template kustom standar
Dialogflow menawarkan template kustom standar yang dapat Anda gunakan untuk mengintegrasikan webhook fleksibel dengan Salesforce CRM.
Di tab Manage, klik Webhooks, lalu + Create.
Di bagian Subtype, pilih Flexible.
Klik Konfigurasi menggunakan template standar untuk mengaktifkan fitur ini.
Di menu drop-down Jenis integrasi, pilih Salesforce.
Di menu drop-down API name, pilih nama API. Template ini akan otomatis mengisi formulir webhook berdasarkan nama API yang Anda pilih.
Anda dapat mengonfigurasi kolom berikut secara manual jika berlaku, berdasarkan parameter Anda:
- URL webhook
- Metode
- JSON isi permintaan
- Konfigurasi Respons
Kolom OAuth yang diperlukan akan ditandai di bagian Authentication.
Klik Simpan untuk membuat webhook.
Persyaratan layanan webhook
Persyaratan berikut harus dipenuhi oleh layanan webhook Anda:
- Server harus menangani permintaan HTTPS. HTTP tidak didukung. Jika Anda menghosting layanan webhook di Google Cloud Platform menggunakan solusi Compute atau Serverless Computing, lihat dokumentasi produk untuk penayangan dengan HTTPS. Untuk opsi hosting lainnya, lihat Mendapatkan sertifikat SSL untuk domain Anda.
- URL-nya untuk permintaan harus dapat diakses secara publik, kecuali jika dihosting sebagai fungsi Cloud Run atau diakses sebagai webhook Direktori layanan.
- Webhook harus menangani permintaan dan respons seperti yang dijelaskan di bagian webhook standar atau webhook fleksibel.
- Jika agen Anda tidak terintegrasi dengan akses jaringan pribadi Service Directory, panggilan webhook dianggap berada di luar perimeter layanan dan diblokir saat mengaktifkan Kontrol Layanan VPC. Endpoint terbatas didukung oleh Service Directory; lihat Service Directory untuk mengetahui detailnya.
Autentikasi
Penting untuk mengamankan layanan webhook Anda, sehingga hanya Anda atau agen Agen Percakapan (Dialogflow CX) Anda yang diberi otorisasi untuk membuat permintaan. Ini dikonfigurasi saat membuat resource webhook. Agen Percakapan (Dialogflow CX) mendukung mekanisme berikut untuk autentikasi:
Istilah | Definisi |
---|---|
Header autentikasi | Untuk setelan webhook, Anda dapat menentukan pasangan nilai kunci header HTTP opsional. Jika disediakan, Agen Percakapan (Dialogflow CX) akan menambahkan header HTTP ini ke permintaan webhook. Biasanya, satu pasangan diberikan dengan kunci authorization . Nilai header mendukung referensi parameter sesi dan penguraian fungsi sistem seperti dalam pesan respons statis. |
Autentikasi dasar dengan nama pengguna dan sandi | Untuk setelan webhook, Anda dapat menentukan nilai nama pengguna dan sandi login opsional. Jika disediakan, Agen Percakapan (Dialogflow CX) akan menambahkan header HTTP otorisasi ke permintaan webhook. Header ini memiliki format: "authorization: Basic <base 64 encoding of the string username:password>" . |
OAuth pihak ketiga | Anda dapat menentukan konfigurasi OAuth pihak ketiga sehingga Agen Percakapan (Dialogflow CX) menukar token akses dari sistem OAuth dan menambahkannya di header HTTP otorisasi. Hanya alur kredensial klien yang didukung. |
Token akses agen layanan | Anda dapat memilih token akses di Autentikasi agen layanan untuk menggunakan token akses agen layanan untuk autentikasi. Token ini dapat digunakan untuk mengakses Google Cloud API lainnya. |
Token ID agen layanan | Anda dapat memilih token ID di Autentikasi agen layanan untuk menggunakan token ID agen layanan untuk autentikasi. Akun ini dapat digunakan untuk mengakses fungsi Cloud Run dan layanan Cloud Run. |
Autentikasi TLS bersama | Lihat dokumentasi Autentikasi TLS bersama. |
OAuth pihak ketiga
Agen Percakapan (Dialogflow CX) dapat mengumpulkan token akses dari penyedia OAuth pihak ketiga dan menambahkannya ke header HTTP otorisasi saat membuat permintaan webhook.
Berikut ini penjelasan setelan resource untuk OAuth pihak ketiga:
Istilah | Definisi |
---|---|
ID Klien | Client ID yang akan digunakan saat meminta token OAuth. |
Rahasia Klien | Rahasia yang akan digunakan saat meminta token OAuth. |
URL Endpoint OAuth | URL yang akan digunakan untuk meminta token OAuth. |
Cakupan OAuth | Daftar cakupan yang dipisahkan koma yang dapat digunakan token OAuth. |
Permintaan yang dikirim ke URL Endpoint OAuth untuk menerima token tidak menyertakan header permintaan kustom yang dikonfigurasi untuk permintaan webhook. Anda dapat meneruskan informasi kustom ke server OAuth sebagai parameter dalam string kueri URL endpoint OAuth.
Token akses agen layanan
Agen Percakapan (Dialogflow CX) dapat membuat token ID atau token akses menggunakan agen layanan Agen Percakapan (Dialogflow CX).
Token ditambahkan di header HTTP otorisasi saat Agen Percakapan (Dialogflow CX) memanggil webhook.
Token ID
Token ID dapat digunakan untuk mengakses fungsi Cloud Run dan layanan Cloud Run setelah Anda memberikan peran Invoker ke
service-agent-project-number@gcp-sa-dialogflow.
Audiens yang digunakan untuk membuat token ID adalah seluruh URL webhook kecuali parameter kueri. Jika Anda menggunakan Cloud Run, pastikan URL ini didukung oleh audiens Cloud Run. Misalnya, jika URL webhook adalah
https://myproject.cloudfunctions.net/my-function/method1?query=value
URL berikut harus berada di audiens kustom.
https://myproject.cloudfunctions.net/my-function/method1
Webhook apa pun juga dapat memvalidasi token secara opsional menggunakan library klien Google atau library open source seperti github.com/googleapis/google-auth-library-nodejs.
Token akses
Token akses dapat digunakan untuk mengakses Google Cloud API lainnya setelah Anda memberikan peran yang diperlukan ke
service-agent-project-number@gcp-sa-dialogflow.
Verifikasi sertifikat HTTPS
Agen Percakapan (Dialogflow CX) secara default menggunakan trust store default Google untuk memverifikasi sertifikat HTTPS. Jika Anda ingin menggunakan sertifikat yang tidak dikenali oleh trust store default Google untuk server HTTPS, seperti sertifikat yang ditandatangani sendiri atau root certificate kustom, lihat Sertifikat CA kustom.
Webhook khusus lingkungan
Jika menggunakan lingkungan untuk mengisolasi sistem produksi dari sistem pengembangan (direkomendasikan), Anda dapat mengonfigurasi webhook agar bersifat khusus lingkungan. Untuk setiap resource webhook yang Anda tentukan, Anda dapat memberikan setelan URL dan autentikasi unik untuk setiap lingkungan yang telah Anda tentukan untuk agen.
Dengan demikian, Anda dapat mengembangkan dan menguji update kode webhook dengan aman sebelum men-deploy-nya ke produksi.
Membuat atau mengedit resource webhook
Setelah layanan webhook berjalan, Anda perlu membuat resource webhook di agen yang memiliki informasi autentikasi dan konektivitas. Setelah pembuatan, Anda juga dapat mengedit setelan resource webhook kapan saja.
Untuk membuat atau mengedit resource webhook:
Konsol
- Buka konsol Dialogflow CX.
- Pilih project Google Cloud Anda.
- Pilih agen Anda.
- Pilih tab Kelola.
- Klik Webhook.
- Klik Buat atau klik resource webhook dalam daftar yang akan diedit.
- Masukkan setelan resource webhook standar atau setelan resource webhook fleksibel.
- Klik Simpan.
API
Untuk membuat resource webhook, lihat metode create
untuk jenis Webhook
.
Untuk mengedit resource webhook (kecuali untuk setelan khusus lingkungan), lihat metode patch
atau update
untuk jenis Webhook
.
Pilih protokol dan versi untuk referensi Webhook:
Protokol | V3 | V3beta1 |
---|---|---|
REST | Referensi webhook | Referensi webhook |
RPC | Antarmuka webhook | Antarmuka webhook |
C++ | WebhooksClient | Tidak tersedia |
C# | WebhooksClient | Tidak tersedia |
Go | WebhooksClient | Tidak tersedia |
Java | WebhooksClient | WebhooksClient |
Node.js | WebhooksClient | WebhooksClient |
PHP | Tidak tersedia | Tidak tersedia |
Python | WebhooksClient | WebhooksClient |
Ruby | Tidak tersedia | Tidak tersedia |
Untuk mengedit setelan khusus lingkungan untuk webhook, lihat metode patch
atau update
untuk jenis Environment
.
Pilih protokol dan versi untuk referensi Lingkungan:
Protokol | V3 | V3beta1 |
---|---|---|
REST | Referensi lingkungan | Referensi lingkungan |
RPC | Antarmuka lingkungan | Antarmuka lingkungan |
C++ | EnvironmentsClient | Tidak tersedia |
C# | EnvironmentsClient | Tidak tersedia |
Go | EnvironmentsClient | Tidak tersedia |
Java | EnvironmentsClient | EnvironmentsClient |
Node.js | EnvironmentsClient | EnvironmentsClient |
PHP | Tidak tersedia | Tidak tersedia |
Python | EnvironmentsClient | EnvironmentsClient |
Ruby | Tidak tersedia | Tidak tersedia |
Error webhook
Jika layanan webhook Anda mengalami error saat menangani permintaan webhook, kode webhook Anda akan menampilkan salah satu kode status HTTP berikut:
400
Bad Request401
Unauthorized403
Terlarang404
Tidak ditemukan500
Server fault503
Service Unavailable
Dalam situasi error berikut, Agen Percakapan (Dialogflow CX) akan memanggil error webhook atau waktu tunggu habis peristiwa bawaan dan melanjutkan pemrosesan seperti biasa:
- Waktu tunggu respons terlampaui.
- Kode status error diterima.
- Respons tidak valid.
- Layanan webhook tidak tersedia.
Selain itu, jika panggilan layanan webhook
dipicu oleh panggilan API intent deteksi,
kolom queryResult.webhookStatuses
dalam respons intent deteksi
berisi informasi status webhook.
Percobaan ulang otomatis
Agen Percakapan (Dialogflow CX) menyertakan mekanisme internal yang otomatis mencoba lagi pada error webhook tertentu untuk meningkatkan keandalan. Hanya error non-terminal yang akan dicoba lagi (misalnya, error waktu tunggu atau koneksi).
Untuk mengurangi kemungkinan panggilan duplikat:
- Tetapkan nilai minimum waktu tunggu webhook yang lebih lama.
- Mendukung idempotensi dalam logika webhook atau menghapus duplikat.
Menggunakan fungsi Cloud Run
Agen Percakapan (Dialogflow CX) terintegrasi dengan fungsi Cloud Run, sehingga Anda dapat dengan mudah membuat webhook aman tanpa server. Jika membuat fungsi yang berada dalam project yang sama dengan agen, Anda hanya perlu memilih Service Agent Auth -> ID Token dalam konfigurasi Auth, lalu agen Anda dapat memanggil webhook dengan aman.
Namun, ada dua situasi saat Anda harus menyiapkan integrasi ini secara manual:
- Akun layanan
Agen Layanan Agen Percakapan (Dialogflow CX)
dengan alamat berikut harus ada untuk project agen Anda:
Akun layanan khusus ini dan kunci terkait biasanya dibuat secara otomatis saat Anda membuat agen pertama untuk project. Jika agen dibuat sebelum 01 November 2020, Anda dapat memicu pembuatan akun layanan khusus ini:service-agent-project-number@gcp-sa-dialogflow.
- Buat agen baru untuk project.
- Jalankan perintah berikut:
gcloud beta services identity create --service=dialogflow.googleapis.com --project=agent-project-id
- Jika fungsi webhook Anda berada dalam project yang berbeda dengan agen, Anda harus memberikan peran IAM Cloud Functions Invoker ke akun layanan Conversational Agents (Dialogflow CX) Service Agent dalam project fungsi Anda.
- Pilih Service Agent Auth -> ID Token di bagian konfigurasi Auth.
Menggunakan webhook dalam container dan framework ezcx Go
Jika Anda ingin menerapkan webhook dalam container menggunakan Go, lihat framework ezcx Go. Framework ini dapat menyederhanakan banyak langkah yang diperlukan saat membuat webhook.
Menggunakan fungsi Cloud Run dengan traffic khusus internal
Fungsi Cloud Run yang disiapkan untuk menerima traffic internal dari jaringan VPC dalam project yang sama atau perimeter VPC SC yang sama dapat digunakan sebagai webhook selama agen berada dalam project yang sama atau perimeter VPC SC yang sama.
Menggunakan Direktori Layanan untuk akses jaringan pribadi
Agen Percakapan (Dialogflow CX) terintegrasi dengan akses jaringan pribadi Service Directory, sehingga dapat terhubung ke target webhook di dalam jaringan VPC Anda. Tindakan ini akan menjaga traffic tetap berada dalam jaringan Google Cloud dan menerapkan IAM serta Kontrol Layanan VPC.
Untuk menyiapkan webhook yang menargetkan jaringan pribadi:
Ikuti Konfigurasi jaringan pribadi Service Directory untuk mengonfigurasi jaringan VPC dan endpoint Service Directory Anda.
Akun layanan Agen Layanan Agen Percakapan (Dialogflow CX) dengan alamat berikut harus ada untuk project agen Anda:
Berikan peran IAM berikut ke akun layanan Conversational Agents (Dialogflow CX) Service Agent:service-agent-project-number@gcp-sa-dialogflow.
servicedirectory.viewer
project Service Directoryservicedirectory.pscAuthorizedService
dari project jaringan
Berikan Layanan Direktori Layanan beserta URL dan informasi autentikasi opsional saat membuat webhook.
Konsol
API
Lihat kolom
serviceDirectory
untuk jenisWebhook
.Pilih protokol dan versi untuk referensi Webhook:
Protokol V3 V3beta1 REST Referensi webhook Referensi webhook RPC Antarmuka webhook Antarmuka webhook C++ WebhooksClient Tidak tersedia C# WebhooksClient Tidak tersedia Go WebhooksClient Tidak tersedia Java WebhooksClient WebhooksClient Node.js WebhooksClient WebhooksClient PHP Tidak tersedia Tidak tersedia Python WebhooksClient WebhooksClient Ruby Tidak tersedia Tidak tersedia
Untuk memecahkan masalah, Anda dapat menyiapkan pemeriksaan uptime pribadi untuk memeriksa apakah Direktori Layanan Anda dikonfigurasi dengan benar.
Contoh dan pemecahan masalah
Lihat panduan cara kerja webhook.