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

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

Screenshot 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 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 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 parameter other-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:

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 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.

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

Dengan respons sebagian.

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.