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

Fulfillment dapat berisi salah satu dari hal berikut:

  • Pesan respons statis.
  • Webhook memanggil respons dinamis dan/atau mengambil tindakan.
  • Preset parameter untuk menetapkan atau mengganti parameter value.

Selama giliran agen, Anda dapat (dan terkadang diinginkan) untuk memanggil beberapa fulfillment, yang masing-masing dapat menghasilkan pesan respons. Dialogflow menyimpan respons ini dalam antrean respons. Setelah giliran agen selesai, Dialogflow akan mengirimkan respons yang diurutkan ke pengguna akhir.

Fulfillment ES terbatas untuk menghubungkan layanan webhook. Cakupan fulfillment telah ditingkatkan untuk CX, sehingga kini mencakup semua jenis perintah dan respons.

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 akan ditambahkan ke antrean respons.

Ada beberapa jenis pesan respons, yang dijelaskan dalam subbagian di bawah ini. 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 mengirimkan dialog teks kepada pengguna akhir. Jika panggilan API atau panggilan integrasi intent Anda menggunakan sintesis ucapan, teks ini akan digunakan untuk membuat konten audio. Dalam hal ini, teks yang disediakan dapat secara opsional menggunakan Bahasa Markup Sintesis Ucapan (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 di 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 beragam. Payload kustom ini disediakan dalam format JSON yang ditentukan dalam dokumentasi integrasi. Misalnya, lihat format payload kustom Dialogflow Messenger.

Anda dapat menyertakan referensi parameter dalam JSON payload kustom. Nilai tersebut 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. Ini tidak akan diproses oleh Dialogflow, jadi Anda harus menanganinya dalam logika bisnis Anda sendiri.

Lihat juga bagian template payload kustom di bawah.

Penyerahan agen langsung

Respons ini memberi tahu pemanggil API intent bahwa percakapan harus diserahkan kepada agen manusia. Dialogflow 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 yang diperlukan untuk meneruskan percakapan. Dialogflow tidak menerapkan struktur apa pun pada data ini, sehingga Anda dapat memilih struktur yang sesuai dengan sistem Anda.

Metadata percakapan berhasil

Respons ini memberi sinyal kepada pemanggil intent API bahwa percakapan dengan agen Dialogflow berhasil. Dialogflow 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. Dialogflow tidak menerapkan struktur apa pun pada data ini, sehingga Anda dapat memilih struktur yang sesuai dengan sistem Anda.

Memutar rekaman audio

Respons ini memutar file audio untuk integrasi yang mendukung fitur ini.

Persyaratan format file audio mungkin berbeda untuk setiap integrasi. Misalnya, lihat persyaratan untuk Gateway Telepon Dialogflow CX.

Untuk integrasi telepon partner, URL untuk file audio harus dapat diakses oleh partner. URL yang tersedia untuk 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.

Teks audio output

Respons ini mirip dengan respons teks, tetapi hanya berlaku untuk sintesis ucapan. Jika agen 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 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 merupakan campuran teks dan SSML, hasil gabungan akan diperlakukan sebagai SSML. Desainer agen idealnya 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 SMS
  • 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] bergantung pada status sesi, status akan diselesaikan berdasarkan status sesi yang diperbarui pada akhir fulfillment.

Untuk agen multibahasa, [condition] umum untuk semua bahasa, sedangkan [response] adalah khusus bahasa. Jika 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 mengupdate [condition].

Panggilan transfer telepon

Untuk beberapa integrasi telepon, Anda dapat menentukan nomor telepon AS untuk transfer panggilan. Saat runtime, saat agen virtual Dialogflow memanggil fulfillment dengan transfer panggilan, panggilan akan ditransfer ke nomor yang ditentukan dan penanganan agen virtual akan ditangguhkan.

Pesan respons khusus channel

Saat menentukan fulfillment, Anda dapat membuat pesan respons khusus channel, sehingga dapat membuat respons yang ditargetkan untuk chat teks, suara, SMS, integrasi spesifik yang mendukung saluran, dan sebagainya. Setiap pesan respons yang tidak spesifik untuk suatu saluran disebut pesan respons default.

Saat runtime, Dialogflow akan memilih pesan respons default, atau pesan respons khusus saluran saat permintaan intent deteksi menentukan saluran. Sebagai praktik terbaik, Anda harus menentukan pesan respons default, meskipun Anda menggunakan pesan respons khusus saluran. Pesan respons default dapat bertindak sebagai penggantian jika sistem Anda gagal menyediakan saluran yang valid.

Nama saluran adalah bidang khusus yang dapat ditetapkan ke teks apa pun. Jika menggunakan Dialogflow 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 tersebut.

Menyetel 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 channel. Klik Tambahkan channel lagi untuk menambahkan channel 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.

Memanfaatkan pesan respons khusus saluran saat runtime

Untuk menerima pesan respons khusus saluran, saluran harus ditentukan dalam pesan permintaan intent deteksi. Lihat kolom queryParams.channel dalam metode detectIntent untuk jenis Sessions.

Pilih protokol dan versi untuk Referensi sesi:

Protocol V3 V3beta1
REST Referensi sesi Referensi 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 ditemukan saluran yang cocok dalam fulfillment, pesan respons default akan ditampilkan oleh Dialogflow.

Template payload kustom

Jika sering menggunakan payload kustom, Anda harus menggunakan template payload kustom. Payload kustom terkadang besar dan rumit, sehingga penggunaan template dapat 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 Anda.

Misalnya, payload JSON untuk tombol "yes" dan "no" dapat ditetapkan sebagai template payload kustom. Saat membuat fulfillment yang memerlukan tombol-tombol ini, Anda hanya perlu memilih template saat membuat fulfillment.

Saat Anda memilih template untuk payload kustom fulfillment, konten template akan dimasukkan ke dalam payload. Anda kemudian dapat mengedit payload sesuai kebutuhan.

Jika Anda mengubah template, perubahan tersebut tidak akan otomatis diterapkan ke semua payload fulfillment yang telah direferensikan.

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 adalah penjelasan setelan webhook untuk fulfillment:

Masa Berlaku Definisi
Aktifkan 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 pada permintaan webhook yang dikirim ke layanan webhook Anda. Ini dapat digunakan untuk mengontrol perilaku webhook dengan cara yang spesifik untuk fulfillment.

Preset parameter

Anda dapat menggunakan fulfillment untuk menyediakan preset yang menetapkan atau mengganti parameter value saat ini. Preset ini akan diterapkan sebelum menyelesaikan pesan respons statis atau memanggil webhook.

Anda juga dapat menggunakan fungsi sistem untuk preset parameter ke nilai yang dihasilkan secara dinamis.

Contohnya antara lain:

  • Menyetel parameter now ke waktu saat ini:

    Parameter Nilai
    sekarang $sys.func.NOW()
  • Menambahkan parameter counter yang ada dengan 1:

    Parameter Nilai
    penghitung $sys.func.ADD($session.params.counter, 1)
  • Menetapkan parameter new-cost ke nilai parameter other-cost, sekaligus mempertahankan nilai objek gabungan penuh:

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

Setelan ucapan lanjutan

Setelan ucapan ini dapat secara opsional mengganti setelan ucapan halaman, setelan ucapan alur, dan setelan ucapan agen yang sama.

Antrean jawaban

Selama giliran agen, Anda dapat (dan terkadang diinginkan) untuk memanggil beberapa fulfillment, yang masing-masing dapat menghasilkan pesan respons. Dialogflow menyimpan respons ini dalam antrean respons.

Respons sebagian untuk API streaming

Secara default, Dialogflow hanya mengirimkan respons yang diurutkan kepada pengguna akhir setelah giliran agen selesai. Anda juga dapat mengaktifkan opsi Tampilkan respons parsial dalam fulfillment untuk menampilkan respons yang saat ini dalam antrean sebagai respons sebagian saat menggunakan streaming API. Lihat Siklus proses halaman untuk mengetahui detail selengkapnya.

Misalnya, jika webhook Anda kemungkinan akan berjalan untuk waktu yang lama, Anda dapat menambahkan respons statis dalam fulfillment dan mengaktifkan respons parsial. Hal ini membuat Dialogflow mengosongkan antrean respons dan mengirim semua pesan sebagai respons parsial sebelum memanggil webhook.

Respons sebagian saat ini tidak didukung untuk hal berikut, tetapi nanti akan didukung:

  • Input audio di simulator.
  • Integrasi telepon partner mungkin mendukung atau tidak mendukung respons sebagian pada saat ini. Lihat dokumentasi partner untuk memverifikasi.

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

Screenshot respons sebagian simulator

Pada contoh berikut, pertimbangkan bahwa webhook Anda memerlukan waktu 5 detik untuk diselesaikan, dan Anda tidak mengaktifkan respons sebagian. Pergantian percakapan agen Dialogflow tidak berakhir sampai webhook selesai. Selama giliran 5 detik ini, respons dimasukkan ke dalam antrean saat menunggu webhook, dan respons tidak ditampilkan ke pengguna akhir hingga giliran selesai. Hal ini menyebabkan pengalaman pengguna yang buruk.

Tanpa respons sebagian.

Jika Anda mengaktifkan respons parsial dalam fulfillment pertama, Dialogflow akan menampilkan pesan fulfillment pertama dengan cepat dan memanggil webhook. Setelah webhook selesai, Dialogflow akan menampilkan respons akhir. Pengalaman pengguna akhir ditingkatkan dalam skenario ini, karena mereka diberi tahu untuk menunggu sebentar. Selain itu, panggilan webhook dijalankan serentak dengan respons yang dikirim ke pengguna akhir.

Dengan respons sebagian.

Bahasa Markup Sintesis Ucapan (SSML)

Anda dapat menggunakan Bahasa Markup Sintesis Ucapan (SSML) dalam kolom fulfillment teks audio atau teks output. Dengan begitu, Anda dapat menyesuaikan respons audio dengan memberikan detail tentang jeda dan pemformatan audio untuk akronim, tanggal, waktu, singkatan, atau teks yang harus disensor.

Untuk mengetahui detail sintaksis, lihat Dokumentasi SSML text-to-speech.