Untuk giliran percakapan agen, agen harus merespons pengguna akhir dengan jawaban atas pertanyaan, kueri untuk informasi, atau penghentian sesi. Agen Anda mungkin juga perlu menghubungi layanan Anda untuk menghasilkan respons dinamis atau mengambil tindakan untuk giliran. Fulfillment digunakan untuk menyelesaikan semua hal ini.
Fulfillment dapat berisi salah satu dari hal berikut:
- Pesan respons statis.
- Webhook memanggil respons dinamis dan/atau untuk mengambil tindakan.
- Setelan default parameter untuk menetapkan atau mengganti parameter value.
Selama giliran agen, Anda dapat (dan terkadang sebaiknya) memanggil beberapa fulfillment, yang masing-masing dapat menghasilkan pesan respons. Agen Percakapan (Dialogflow CX) menyimpan respons ini dalam antrean respons. Setelah giliran agen berakhir, Agen Percakapan (Dialogflow CX) akan mengirimkan respons yang diurutkan kepada pengguna akhir.
Kasus penggunaan fulfillment
Fulfillment digunakan di mana pun pesan respons diperlukan:
- Fulfillment entri halaman
- Rute
- Pengendali peristiwa
- Perintah awal untuk formulir
- Pemroses permintaan ulang untuk formulir
Untuk setiap kasus penggunaan ini, konsol akan membuka panel pengeditan fulfillment.
Pesan respons statis (opsi dialog)
Pesan respons statis adalah respons agen yang Anda tentukan pada waktu desain. Anda menentukannya saat membuat fulfillment. Saat runtime, respons ini ditambahkan ke antrean respons.
Ada beberapa jenis pesan respons, yang dijelaskan dalam subbagian di bawah. Saat menggunakan konsol, panel fulfillment memiliki kartu pesan respons teks awal, tetapi Anda dapat mengklik Tambahkan opsi dialog untuk menambahkan lebih banyak kartu untuk jenis pesan respons lainnya.
Teks
Pesan respons teks mengirim dialog teks kepada pengguna akhir. Jika panggilan API intent deteksi atau panggilan integrasi Anda menggunakan sintesis ucapan, teks ini akan digunakan untuk membuat konten audio. Dalam hal ini, teks yang diberikan dapat secara opsional menggunakan Speech Synthesis Markup Language (SSML).
Anda dapat menentukan beberapa kartu respons teks, dan beberapa respons teks dalam setiap kartu. Jika Anda menentukan beberapa kartu, kartu tersebut akan digabungkan untuk satu respons saat runtime. Jika Anda menentukan beberapa respons dalam kartu, salah satu pesan dalam kartu akan dipilih secara acak saat runtime.
Pesan teks ini dapat berisi referensi parameter dan fungsi sistem inline.
Payload kustom
Beberapa integrasi mendukung respons payload kustom untuk menangani respons yang kaya. Payload kustom ini disediakan dalam format JSON yang ditentukan dalam dokumentasi integrasi. Misalnya, lihat format payload kustom Messenger Dialogflow CX.
Anda dapat menyertakan referensi parameter dalam JSON payload kustom. Nilai ini harus diperlakukan sebagai nilai string JSON, jadi gabungkan dalam tanda kutip ganda. Contoh:
{ "someField": "$session.params.date" }
Anda juga dapat mengirim payload kustom ke integrasi yang Anda kembangkan. Perintah ini tidak akan diproses oleh Agen Percakapan (Dialogflow CX), sehingga Anda harus menanganinya dalam logika bisnis Anda sendiri.
Lihat juga bagian template payload kustom di bawah.
Penyerahan ke agen langsung
Respons ini memberi sinyal kepada pemanggil API intent deteksi bahwa percakapan harus diserahkan kepada agen manusia. Agen Percakapan (Dialogflow CX) hanya menggunakan sinyal ini untuk mengidentifikasi percakapan yang diserahkan untuk tujuan pengukuran, dan tidak mengubah status sesi dengan cara apa pun. Sistem atau integrasi Anda dapat menggunakan sinyal ini untuk mengambil tindakan apa pun yang diperlukan untuk meneruskan percakapan. Agen Percakapan (Dialogflow CX) tidak menerapkan struktur apa pun pada data ini, sehingga Anda dapat memilih struktur apa pun yang sesuai dengan sistem Anda.
Metadata keberhasilan percakapan
Respons ini memberi sinyal kepada pemanggil API intent deteksi bahwa percakapan dengan agen Agen Percakapan (Dialogflow CX) berhasil. Agen Percakapan (Dialogflow CX) hanya menggunakan sinyal ini untuk mengidentifikasi percakapan yang berhasil untuk tujuan pengukuran, dan tidak mengubah status sesi dengan cara apa pun. Sistem atau integrasi Anda dapat menggunakan sinyal ini untuk mengambil tindakan apa pun yang diperlukan. Agen Percakapan (Dialogflow CX) tidak menerapkan struktur apa pun pada data ini, sehingga Anda dapat memilih struktur apa pun yang sesuai dengan sistem Anda.
Memutar audio yang direkam sebelumnya
Respons ini memutar file audio untuk integrasi yang mendukung fitur ini.
Persyaratan format file audio mungkin berbeda untuk integrasi yang berbeda. Misalnya, lihat persyaratan untuk Gateway Telepon Dialogflow CX.
Untuk integrasi telepon partner, URL untuk file audio harus dapat diakses oleh partner. URL yang tersedia secara publik, seperti file publik di Cloud Storage, selalu dapat diakses oleh partner. Partner juga dapat memberikan akses terbatas untuk file audio. Lihat dokumentasi partner untuk mengetahui detailnya.
Output teks audio
Respons ini mirip dengan respons teks, tetapi hanya berlaku untuk sintesis ucapan. Jika agen Anda dapat menangani sesi teks dan suara, Anda dapat menggunakan respons teks dan teks audio output yang unik untuk menciptakan pengalaman pengguna yang berbeda untuk teks versus suara. Jika teks audio output disediakan untuk sesi suara, respons teks biasa akan diabaikan.
Jika agen Anda menangani sesi teks dan suara, dan Anda menginginkan pesan respons yang sama, cukup gunakan respons teks untuk sesi teks dan suara.
Teks audio output digabungkan mirip dengan respons teks. Jika respons teks audio output adalah campuran teks dan SSML, hasil yang digabungkan akan diperlakukan sebagai SSML. Idealnya, desainer agen harus menggunakan teks atau SSML secara konsisten.
Respons bersyarat
Jenis respons ini digunakan untuk respons bersyarat. Format umumnya adalah:
if [condition] [response] elif [condition] [response] elif [condition] [response] else [response] endif
dengan:
[condition]
adalah format yang sama dengan yang digunakan untuk kondisi rute[response]
adalah respons teks- Blok
elif
danelse
bersifat opsional
Contoh:
if $session.params.user-age >= 21 Ok, you may enter. else Sorry, you cannot enter. endif
[condition]
dan [response]
dapat menggunakan fungsi sistem inline untuk menghasilkan nilai dinamis selama percakapan.
Untuk informasi selengkapnya, lihat referensi
fungsi sistem dan
kondisi rute. [condition]
di-resolve berdasarkan status sesi di awal
fulfillment. Jika [response]
mengandalkan status sesi, status tersebut akan di-resolve
berdasarkan status sesi yang diperbarui di akhir fulfillment.
Untuk agen multibahasa,
[condition]
umum untuk semua bahasa, sedangkan [response]
bersifat spesifik per bahasa. Saat Anda mengubah [condition]
untuk satu bahasa
di konsol, bagian ini akan diperbarui dalam semua bahasa agen, dan,
karena menjadi kondisi baru, [response]
akan dihapus untuk
semua bahasa selain bahasa yang Anda pilih saat memperbarui [condition]
.
Panggilan transfer telepon
Untuk beberapa integrasi telepon, Anda dapat menentukan nomor telepon AS untuk transfer panggilan. Saat runtime, saat agen virtual Agen Percakapan (Dialogflow CX) memanggil fulfillment dengan transfer panggilan, panggilan akan dialihkan ke nomor yang ditentukan dan penanganan agen virtual akan ditangguhkan.
Pesan respons khusus channel
Saat menentukan fulfillment, Anda dapat membuat pesan respons khusus saluran, sehingga Anda dapat membuat respons yang ditargetkan untuk chat teks, suara, SMS, integrasi tertentu yang mendukung saluran, dan sebagainya. Semua pesan respons yang tidak spesifik untuk saluran disebut pesan respons default.
Saat runtime, Agen Percakapan (Dialogflow CX) akan memilih pesan respons default, atau pesan respons khusus channel saat permintaan deteksi intent menentukan channel. Sebagai praktik terbaik, Anda harus menentukan pesan respons default, meskipun Anda menggunakan pesan respons khusus saluran. Pesan respons default dapat berfungsi sebagai pengganti saat sistem Anda gagal menyediakan saluran yang valid.
Nama channel adalah kolom kustom yang dapat Anda tetapkan ke teks apa pun. Jika menggunakan Conversational Agents (Dialogflow CX) API secara langsung untuk panggilan runtime, Anda dapat menggunakan nama saluran apa pun yang Anda sukai. Jika menggunakan integrasi yang ada, Anda harus menggunakan nama saluran yang dikenali integrasi.
Menetapkan pesan respons khusus saluran pada waktu desain
Untuk memberikan pesan respons khusus saluran untuk fulfillment saat menggunakan konsol:
- Klik Tambahkan saluran setelah menambahkan pesan respons default. Antarmuka pengguna akan memungkinkan Anda menambahkan pesan respons khusus saluran. Klik Tambahkan saluran lagi untuk menambahkan saluran lain.
Untuk memberikan pesan respons khusus saluran untuk fulfillment saat menggunakan API:
- Tetapkan kolom
Fulfillment.messages[i].channel
ke saluran yang diinginkan untuk setiap pesan respons. Jika kolom ini tidak ditetapkan, responsnya adalah pesan respons default.
Menggunakan pesan respons khusus saluran saat runtime
Untuk menerima pesan respons khusus saluran, saluran harus ditentukan dalam pesan permintaan deteksi intent.
Lihat kolom queryParams.channel
dalam metode detectIntent
dari jenis Sessions
.
Pilih protokol dan versi untuk referensi Sesi:
Protokol | V3 | V3beta1 |
---|---|---|
REST | Resource sesi | Resource sesi |
RPC | Antarmuka sesi | Antarmuka sesi |
C++ | SessionsClient | Tidak tersedia |
C# | SessionsClient | Tidak tersedia |
Go | SessionsClient | Tidak tersedia |
Java | SessionsClient | SessionsClient |
Node.js | SessionsClient | SessionsClient |
PHP | Tidak tersedia | Tidak tersedia |
Python | SessionsClient | SessionsClient |
Ruby | Tidak tersedia | Tidak tersedia |
Jika tidak ada saluran yang ditentukan dalam permintaan, atau tidak ada saluran yang cocok yang ditemukan dalam fulfillment, pesan respons default akan ditampilkan oleh Agen Percakapan (Dialogflow CX).
Template payload kustom
Jika sering menggunakan payload kustom, Anda harus menggunakan template payload kustom. Payload kustom terkadang besar dan kompleks, sehingga menggunakan template dapat membantu mempermudah proses pembuatan agen.
Anda dapat menyediakan template ini di setelan agen, sehingga template tersebut tersedia untuk dipilih setiap kali Anda membuat fulfillment untuk agen.
Misalnya, payload JSON untuk tombol "ya" dan "tidak" dapat ditentukan sebagai template payload kustom. Saat membuat fulfillment yang memerlukan tombol ini, Anda hanya perlu memilih template saat membuat fulfillment.
Saat Anda memilih template untuk payload kustom fulfillment, konten template akan disisipkan ke dalam payload. Kemudian, Anda dapat mengedit payload sesuai kebutuhan.
Jika Anda mengubah template, perubahan tidak akan otomatis diterapkan ke semua payload fulfillment tempat template tersebut dirujuk.
Untuk membuat template payload kustom, lihat setelan umum agen.
Untuk memilih template payload kustom saat membuat fulfillment, klik Select template saat membuat payload kustom fulfillment.
Panggilan webhook
Saat fulfillment dipanggil, dan fulfillment memiliki webhook, agen akan mengirimkan permintaan ke webhook Anda. Webhook Anda dapat melakukan tindakan apa pun yang diperlukan dalam layanan Anda, memberikan pesan respons dinamis, mengganti parameter value, dan mengubah halaman saat ini.
Berikut ini penjelasan setelan webhook untuk fulfillment:
Istilah | Definisi |
---|---|
Mengaktifkan webhook | Tindakan ini akan mengaktifkan webhook untuk fulfillment. |
Webhook | Pilih resource webhook. |
Tag | Tag teks yang Anda berikan di sini akan diisi di kolom WebhookRequest.fulfillmentInfo.tag permintaan webhook yang dikirim ke layanan webhook Anda. Ini dapat digunakan untuk mengontrol perilaku webhook dengan cara yang khusus untuk fulfillment. |
Menampilkan respons sebagian | Memungkinkan pembatalan pemutaran respons sebagian. Lihat setelan ucapan lanjutan untuk mengetahui detailnya. |
Preset parameter
Anda dapat menggunakan fulfillment untuk menyediakan preset yang menetapkan atau mengganti parameter value saat ini. Setelan default ini akan diterapkan sebelum me-resolve pesan respons statis atau memanggil webhook.
Anda juga dapat menggunakan fungsi sistem untuk menyetel parameter ke nilai yang dihasilkan secara dinamis.
Contohnya antara lain:
Menetapkan parameter
now
ke waktu saat ini:Parameter Nilai sekarang $sys.func.NOW() Menambahkan parameter
counter
yang ada sebesar 1:Parameter Nilai penghitung $sys.func.ADD($session.params.counter, 1) Menetapkan parameter
new-cost
ke nilai parameterother-cost
, sekaligus mempertahankan nilai objek komposit lengkap:Parameter Nilai biaya-baru $sys.func.IDENTITY($session.params.other-cost)
Setelan ucapan lanjutan
Setelan ucapan lanjutan ini dapat secara opsional mengganti setelan ucapan halaman, setelan ucapan alur, dan setelan ucapan agen yang sama.
Antrean respons
Selama giliran agen, Anda dapat (dan terkadang sebaiknya) memanggil beberapa fulfillment, yang masing-masing dapat menghasilkan pesan respons. Agen Percakapan (Dialogflow CX) menyimpan respons ini dalam antrean respons.
Respons sebagian untuk streaming API
Secara default, Agen Percakapan (Dialogflow CX) hanya mengirim respons yang diurutkan kepada pengguna akhir setelah giliran agen berakhir. Anda juga dapat mengaktifkan opsi Return partial response dalam fulfillment untuk menampilkan respons yang saat ini diantrekan sebagai respons sebagian saat menggunakan API streaming. Lihat Siklus proses halaman untuk mengetahui detail selengkapnya.
Misalnya, jika webhook kemungkinan akan berjalan dalam waktu lama, Anda dapat menambahkan respons statis dalam fulfillment dan mengaktifkan respons sebagian. Tindakan ini membuat Agen Percakapan (Dialogflow CX) menghapus antrean respons dan mengirim semua pesan sebagai respons sebagian sebelum memanggil webhook.
Respons parsial saat ini tidak didukung untuk hal berikut, tetapi akan didukung nanti:
- Input audio di simulator.
- Integrasi telepon partner saat ini mungkin mendukung atau tidak mendukung respons sebagian. Lihat dokumentasi partner untuk memverifikasi.
Untuk menguji fitur ini di simulator, Anda perlu mengaktifkan respons sebagian.
Dalam contoh berikut, pertimbangkan bahwa webhook Anda memerlukan waktu 5 detik untuk selesai, dan Anda tidak mengaktifkan respons sebagian. Giliran percakapan agen Agen Percakapan (Dialogflow CX) belum selesai hingga webhook selesai. Selama giliran 5 detik ini, respons dimasukkan ke antrean sambil menunggu webhook, dan respons tersebut tidak ditampilkan kepada pengguna akhir hingga giliran selesai. Hal ini menyebabkan pengalaman pengguna yang buruk.
Jika Anda mengaktifkan respons sebagian dalam fulfillment pertama, Agen Percakapan (Dialogflow CX) akan menampilkan pesan fulfillment pertama dengan cepat dan memanggil webhook. Setelah webhook selesai, Agen Percakapan (Dialogflow CX) akan menampilkan respons akhir. Pengalaman pengguna akhir akan ditingkatkan dalam skenario ini, karena mereka diberi tahu bahwa mereka akan menunggu sebentar. Selain itu, panggilan webhook dijalankan secara serentak dengan respons yang dikirim ke pengguna akhir.
Bahasa Markup Sintesis Ucapan (SSML)
Anda dapat menggunakan Bahasa Markup Sintesis Ucapan (SSML) di kolom fulfillment teks atau output teks audio. Hal ini memungkinkan Anda menyesuaikan respons audio dengan memberikan detail tentang jeda, dan format audio untuk akronim, tanggal, waktu, singkatan, atau teks yang harus disensor.
Untuk mengetahui detail sintaksis, lihat dokumentasi SSML Text-to-speech.