Fulfillment

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 membuat 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:

Untuk setiap kasus penggunaan ini, konsol akan membuka panel pengeditan fulfillment.

Screenshot fulfillment

Respons agen (opsi dialog)

Pesan respons agen 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 berikut. Saat menggunakan konsol, panel fulfillment memiliki kartu Dialog agen awal, tetapi Anda dapat mengklik + Tambahkan respons dialog untuk menambahkan lebih banyak kartu untuk jenis pesan respons lain.

Respons teks statis

Pesan respons teks statis mengirim dialog teks kepada pengguna akhir. Jika panggilan API intent atau panggilan integrasi deteksi Anda menggunakan sintesis ucapan, teks ini akan digunakan untuk membuat konten audio. Dalam hal ini, teks yang disediakan 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 harus diberikan 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 pastikan untuk menggabungkannya 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), jadi Anda harus menanganinya dalam logika bisnis Anda sendiri.

Lihat juga bagian template payload kustom berikut.

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 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 memberlakukan struktur apa pun pada data ini, sehingga Anda dapat memilih struktur apa pun yang sesuai dengan sistem Anda.

Memutar audio yang telah 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 dan 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 dan else 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 mengetahui 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.

Respons alat penyimpanan data

Jenis respons ini mengonfigurasi respons agen yang ditampilkan dari alat penyimpanan data tertaut. Jika Anda mengonfigurasi alat penyimpanan data dalam fulfillment ini, kartu respons alat penyimpanan data akan diisi secara otomatis.

  • Link sumber: Memungkinkan Anda menetapkan jumlah maksimum kutipan yang akan ditampilkan kepada pengguna setelah respons. Kutipan adalah link ke sumber informasi di penyimpanan data, yang dirender sebagai tombol. Nilai defaultnya adalah 1.
  • Kutipan inline: Kolom ini memungkinkan Anda membatasi jumlah kutipan inline yang ditampilkan per kalimat, bukan link yang tercantum setelah respons.
  • Penggantian generatif: Mencentang kotak ini akan memberi tahu agen untuk mencoba respons yang dihasilkan AI jika penyimpanan data menampilkan hasil kosong. Jika gagal, respons akan beralih ke respons statis.
  • Respons statis: Anda dapat memasukkan respons teks statis di kolom akhir. Pesan ini dikirimkan kepada pengguna kata demi kata.

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 parameter other-cost, sekaligus mempertahankan nilai objek komposit lengkap:

    Parameter Nilai
    biaya-baru $sys.func.IDENTITY($session.params.other-cost)

Alat penyimpanan data

Lihat dokumentasi alat penyimpanan data untuk informasi selengkapnya tentang fitur ini.

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 API streaming

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 Anda kemungkinan akan berjalan dalam waktu lama, Anda dapat menambahkan respons statis dalam fulfillment dan mengaktifkan respons sebagian. Hal 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:

Untuk menguji fitur ini di simulator, Anda perlu mengaktifkan respons sebagian.

Screenshot respons sebagian simulator

Dalam contoh berikut, pertimbangkan bahwa webhook Anda memerlukan waktu 5 detik untuk selesai, dan Anda tidak mengaktifkan respons parsial. 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.

Tanpa respons sebagian.

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 kepada pengguna akhir.

Dengan respons sebagian.

Bahasa Markup Sintesis Ucapan (SSML)

Anda dapat menggunakan Bahasa Markup Sintesis Ucapan (SSML) dalam 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.