1. Sebelum memulai
Dalam codelab ini, Anda akan mempelajari cara membuat chatbot retail dengan Dialogflow CX, Conversational AI Platform (CAIP) untuk membuat UI percakapan. Dialogflow CX dapat mengimplementasikan agen virtual, seperti chatbot, bot suara, gateway telepon, dan dapat mendukung banyak saluran dalam lebih dari 50 bahasa yang berbeda.
Codelab ini akan memandu Anda cara membuat chatbot situs untuk retail. Bisnis fiktif yang chatbot-nya sedang kita buat bernama: G-Records. G-Records adalah label rekaman rock yang berbasis di California. Label ini memiliki 4 band rock; Alice Googler, G's N' Roses, The Goo Fighters, dan The Google Dolls. G-Records menjual merchandise band kepada semua penggemar rock.
Di akhir codelab ini, Anda dapat menggunakan chatbot untuk memesan kemeja atau musik, atau Anda dapat bertanya tentang pesanan Anda.
Yang akan Anda pelajari
Anda akan mempelajari manfaat Dialogflow CX dibandingkan dengan Dialogflow ES langsung. Iklan ini mencakup konsep berikut:
- Cara membuat agen virtual Dialogflow CX dalam Google Cloud
- Pelajari cara membuat flow
- Pelajari cara membuat entity
- Pelajari cara membuat intent
- Pelajari cara membuat halaman dan halaman transisi dengan pengendali status
- Pelajari cara mentransisikan halaman dengan rute intent
- Pelajari cara melakukan transisi halaman dengan parameter & rute kondisi
- Pelajari cara menampilkan respons bersyarat dengan fungsi sistem
- Pelajari cara membuat pesan penggantian
- Pelajari cara menggunakan simulator
- Pelajari cara membuat kasus pengujian &cakupan pengujian
Desain akhir agen Dialogflow CX akan terlihat seperti ini:
Yang Anda butuhkan
- Anda memerlukan alamat Google Identity/Gmail untuk membuat agen Dialogflow CX.
- Akses ke Google Cloud.
2. Penyiapan Lingkungan
Membuat project Google Cloud
Karena Dialogflow CX berjalan di Google Cloud, Anda harus membuat project Google Cloud. Project menyusun semua resource Google Cloud Anda. Program ini terdiri dari sekumpulan kolaborator, API yang diaktifkan (dan resource lainnya), alat pemantauan, informasi penagihan, serta autentikasi dan kontrol akses.
Saat membuat project baru, Anda harus memasukkan Nama Project. Selain itu, Anda harus menautkannya ke Akun Penagihan dan Organisasi yang ada.
Akun penagihan digunakan untuk menentukan siapa yang membayar serangkaian resource tertentu, dan dapat ditautkan ke satu atau beberapa project. Penggunaan project ditagihkan ke akun penagihan tertaut. Dalam sebagian besar kasus, Anda mengonfigurasi penagihan saat membuat project. Untuk informasi selengkapnya, lihat Dokumentasi penagihan. Pastikan penagihan diaktifkan untuk project Cloud Anda.
Mengaktifkan Dialogflow API
Untuk menggunakan Dialogflow, Anda harus mengaktifkan Dialogflow API untuk project Anda.
- Pilih project yang ingin Anda aktifkan API-nya, lalu klik Lanjutkan.
- Ciutkan menu API & Layanan, lalu klik Buat Kredensial
- Klik Application Data
- Jawab Tidak, saya tidak menggunakannya karena Anda tidak menggunakan Kubernetes Engine, App Engine, atau Cloud Functions untuk saat ini.
- Klik Selesai
Membuat agen Dialogflow CX baru
Untuk membuat agen Dialogflow CX baru, buka Konsol Dialogflow CX terlebih dahulu:
- Pilih project Google Cloud yang dibuat sebelumnya.
- Klik Buat agen.
Isi formulir untuk setelan agen dasar:
- Anda dapat memilih nama tampilan apa pun.
- Sebagai lokasi, pilih: us-central1
- Pilih zona waktu pilihan Anda.
- Pilih en - English sebagai bahasa default
Klik Buat.
Baiklah, kita sudah siap. Kita akhirnya dapat mulai membuat model agen virtual.
3. Flows
Dialog kompleks sering kali melibatkan beberapa topik percakapan. Dalam kasus chatbot yang kita buat untuk G-Records, untuk menjual merchandise band, kita akan memiliki dialog tentang katalog produk, pembayaran, status pesanan, dan pertanyaan layanan pelanggan. Kita dapat membagi topik percakapan ini menjadi beberapa alur.
Alur memungkinkan tim mengerjakan jalur percakapan individual. Praktik yang baik adalah menyederhanakan alur, sehingga mudah dimuat di layar dan lebih modular.
Alur adalah konsep baru untuk Dialogflow CX. Dialogflow Essentials memiliki konsep Mega Agents, yang entah bagaimana mirip dengan Flow. Namun, Anda akan lebih sering menggunakan Flow.
Nanti di lab ini, kita akan menggunakan pengendali status yang dapat mengakhiri alur (sehingga akan kembali ke alur berikutnya atau sebelumnya), atau Anda dapat mengakhiri sesi agen penuh.
Mari kita lanjutkan dan buat alur.
Membuat Alur
- Di Dialogflow CX, klik ikon + > Create flow.
- Tentukan nama:
Catalog
, lalu tekan enter.
Katalog alur pertama Anda telah dibuat. Sekarang buat alur lainnya:
Order Process
My Order
Customer Care
Nanti dalam lab ini, kita akan menetapkan pengendali status halaman, yang akan memastikan bahwa pada akhirnya visualisasi akan terlihat seperti ini:
Simulator
Di sisi kanan Dialogflow CX Console, Anda dapat menguji agen virtual, dengan simulator bawaan. Anda dapat menguji percakapan dari awal percakapan, atau dari alur tertentu.
- Klik tombol Test Agent, di kanan atas layar.
- Di kolom bicara dengan agen, tulis:
Hello
Agen virtual akan merespons dengan teks selamat datang default: Salam! Ada yang bisa kami bantu?
Mari kita ubah teks sambutan default ini.
Alur Mulai Default
Mari kita mulai dengan membuat Rute Intent yang akan dipicu setelah Anda menyapa agen virtual.
- Di sidebar kiri Build > Flows, klik Default Start Flow, lalu pilih node hierarki Start.
Tindakan ini akan membuka halaman Start. Halaman ini otomatis memilih halaman Mulai, di bagian sidebar Build > Halaman.
- Di Start > Routes, klik Default Welcome Intent.
Intent mengategorikan niat pengguna akhir untuk satu giliran percakapan. Di Dialogflow CX, intent dapat menjadi bagian dari pengendali status untuk merutekan halaman aktif atau fulfillment berikutnya
- Hapus semua entri Agen mengatakan, lalu tambahkan teks baru ini:
Welcome, I am the virtual agent of G-Records, a fictional rock label. You can order artists merchandise, ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?
Untuk menyederhanakan percakapan, kita juga memerlukan beberapa tombol balasan cepat/chip saran.
- Klik Add dialogue option > Custom payload dan gunakan cuplikan kode di bawah.
- Gunakan cuplikan kode di bawah sebagai Payload kustom, lalu klik Simpan.
Untuk membaca lebih lanjut tentang Payload kustom, lihat dokumentasi.
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Lanjutkan dan uji intent selamat datang di simulator.
Anda mungkin bertanya-tanya mengapa Anda tidak dapat melihat konten lengkap. Hal ini karena konten lengkap seperti chip saran bergantung pada integrasi. Langkah-langkah berikut memerlukan akun penagihan, tetapi Anda dapat melewatinya jika tidak memilikinya.
- Di sidebar kiri, klik Manage > Integrations.
- Pilih Dialogflow Messenger, lalu klik Connect.
- Di pop-up, klik Enable.
Pop-up lain akan ditampilkan, kali ini dengan kode JavaScript integrasi yang dapat Anda tempel di situs untuk mengintegrasikan komponen Dialogflow Messenger di situs Anda. Karena belum memiliki situs, kita akan menguji agen virtual secara langsung di alat ini.
- Klik link Coba Sekarang.
- Klik ikon chatbot di kanan bawah untuk membuka jendela chat. Tulis
Hello
untuk memulai percakapan.
Untuk saat ini, saat Anda mengklik chip saran, agen virtual tidak akan memahami maksud Anda. Hal ini karena agen virtual kita belum beralih antarstatus. Kita dapat melakukannya di Dialogflow CX dengan Halaman. Mari kita lanjutkan lab ini, pertama-tama kita akan membuat beberapa Entity dan Intent.
4. Jenis Entity
Jenis entity digunakan untuk mengontrol cara data dari input pengguna akhir diekstrak. Jenis entity Dialogflow CX sangat mirip dengan jenis entity Dialogflow ES. Dialogflow menyediakan entity sistem yang telah ditetapkan sebelumnya, yang dapat cocok dengan berbagai jenis data umum. Misalnya, ada entity sistem untuk mencocokkan tanggal, waktu, warna, alamat email, dan sebagainya. Anda juga dapat membuat entitas kustom sendiri untuk mencocokkan data kustom.
Mari kita mulai dengan menyiapkan semua entitas kustom sebelum kita dapat mendesain halaman dalam alur. Kita akan membuat entity berikut:
Membuat Entity
Mari kita buat entity Artis.
- Klik Manage > Entity Types
- Klik + Buat
- Nama Tampilan:
Artist
- {i>Entity<i} (Entitas):
The Google Dolls
(dengan sinonim:Google Dolls
)The Goo Fighters
(dengan sinonim:Goo Fighters
)G's N' Roses
(dengan sinonim:Gs and Roses
)Alice Googler
- Klik Advanced options, lalu centang Fuzzy Matching. (Jika Anda salah mengeja nama band, nama tersebut mungkin masih cocok dengan entitas yang tepat.)
- Di Opsi lanjutan, centang juga Samarkan di log. (Jika Anda salah mengeja nama band, nama tersebut akan dikoreksi di log.)
- Klik Simpan
Kita juga memerlukan entitas untuk item Merchandise:
- Klik Kelola > Jenis Entity
- Klik + Buat
- Nama Tampilan:
Merch
- Entitas:
T-shirt
Longsleeve
(dengan sinonim:Longsleeve shirt
)Tour Movie
Digital Album
(dengan sinonim:MP3 Album
,MP3
)CD
(dengan sinonimDisc
,Physical CD
)
- Klik Simpan
Kita juga memerlukan entity untuk Album:
- Klik Kelola > Jenis Entity
- Klik + Buat
- Nama Tampilan:
Album
- {i>Entity<i} (Entitas):
Live
Greatest Hits
(dengan sinonim:Hits
)
- Klik Simpan
Kita juga memerlukan entity untuk ukuran pakaian:
- Klik Manage > Entity Types
- Klik + Buat
- Nama Tampilan:
ShirtSize
- {i>Entity<i} (Entitas):
XS
(dengan sinonim:Extra Small
)S
(dengan sinonim:Small
)M
(dengan sinonim:Medium
)L
(dengan sinonim:Large
)XL
(dengan sinonim:Extra Large
)2XL
(dengan sinonim:Extra Extra Large
)3XL
- Klik Simpan
Dan entity untuk nomor pesanan, yang biasanya terdiri dari 4 alfanumerik dan 3 angka. (seperti ABCD123)
- Klik Manage > Entity Types
- Klik + Buat
- Nama Tampilan:
OrderNumber
- Entity Regexp
- Entity: [A-Z]{4}[0-9]{3}
- Klik Simpan
Konfigurasi entity Anda akan terlihat seperti berikut:
@Artist:
@Merch:
@Album:
@ShirtSize:
@NomorPesanan:
Setelah entitas kustom disiapkan, kita dapat menyiapkan intent. Mari kita lanjutkan lab.
5. Intent
Intent mengategorikan niat pengguna akhir untuk satu giliran percakapan. Dialogflow CX telah menyederhanakan fitur ini secara drastis. Dialogflow CX tidak lagi menjadi elemen penyusun untuk kontrol percakapan. Dialogflow CX hanya menggunakan intent untuk mencocokkan apa yang dikatakan pengguna. Di Dialogflow ES, Anda harus mengaitkan semuanya ke intent (parameter, event, fulfillment, dll.). Intent di Dialogflow CX hanya berisi frasa pelatihan sehingga dapat digunakan kembali. Perangkat tidak lagi mengontrol percakapan. Jadi, proses pembuatan intent akan menjadi lebih mudah:
Frasa pelatihan dalam intent dapat menggunakan Entity untuk mengekstrak input 'variabel'. Oleh karena itu, sebaiknya buat jenis entity Anda terlebih dahulu, seperti yang kita lakukan di halaman langkah lab sebelumnya.
Membuat Intent
Mari kita mulai dengan menyiapkan semua intent sebelum kita dapat mendesain halaman dalam alur.
- Klik Kelola > Intent.
- Klik + Buat
Gunakan detail berikut:
- Nama tampilan
redirect.artists.overview
- Deskripsi
Artists overview: The bands supported by the label
Scroll ke bawah dan buat frasa pelatihan berikut:
Which bands are signed?
Which bands
Which artists
Which artists are part of the record label
Who is part of the label
From which bands can I buy merchandise
Band merchandise
Which music do you have?
I would like to know who are signed to the label
Who are supported by the label
From who can I buy shirts
What music can I order
Can I get an overview of all the artists
- Klik Simpan.
- Sekarang mari kita lanjutkan dan buat semua intent lainnya. Gunakan imajinasi Anda sendiri untuk membuat lebih banyak frasa pelatihan. Praktik terbaiknya adalah memiliki setidaknya 10 frasa pelatihan per intent untuk mencakup berbagai cara yang mungkin digunakan pengguna untuk memicu niat tersebut. Untuk tujuan lab ini, memiliki lebih sedikit juga tidak masalah.
Beberapa hal yang perlu diperhatikan:
- Perhatikan bahwa saat Anda memasukkan frasa pelatihan, Dialogflow CX akan otomatis menganotasi entity Anda. Jika tidak, Anda mungkin perlu memperbarui entitas (dengan menambahkan sinonim) atau dengan menganotasi frasa pelatihan secara manual.
- Frasa pelatihan yang lebih singkat: Sistem NLU Dialogflow juga dapat berfungsi dengan frasa pelatihan yang lebih pendek, dan kami telah menyediakan beberapa contoh di sini.
- Latihan yang berlebihan: Terlalu banyak frasa pelatihan untuk suatu maksud dapat menyebabkan latihan yang berlebihan dan hasil yang kurang diinginkan. Praktik terbaiknya adalah menggunakan pengujian iteratif dan inkremental serta menambahkan frasa pelatihan jika tidak ada intent yang cocok.
Nama tampilan | Frasa pelatihan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Setelah elemen yang dapat digunakan kembali (alur, entitas, dan intent) disiapkan, kita dapat menggabungkannya dengan membuat Halaman dan Pengendali Status.
6. Pengendali Halaman &Status
Percakapan Dialogflow CX (sesi) dapat dijelaskan dan divisualisasikan sebagai finite state machine. Ambil contoh mesin penjual otomatis, yang dapat dimodelkan sebagai finite state machine. Aplikasi ini memiliki status berikut: Menunggu Koin, Memilih Permen, Memberi Permen, dan dengan serangkaian input, aplikasi ini akan berpindah di antara status tersebut. Misalnya, memasukkan koin akan memindahkan mesin penjual otomatis dari Menunggu koin ke Pilih Permen. Halaman adalah cara kita membuat model status ini untuk agen virtual Dialogflow CX.
Saat pengguna akhir berinteraksi dengan Dialogflow CX dalam percakapan, percakapan tersebut berpindah dari halaman ke halaman sehingga pada saat tertentu, tepat satu halaman adalah halaman saat ini, halaman saat ini dianggap aktif, dan juga alur yang terkait dengan halaman tersebut dianggap aktif.
Untuk setiap Alur, Anda menentukan banyak halaman, tempat halaman gabungan Anda dapat menangani percakapan lengkap tentang topik yang menjadi tujuan alur. Setiap alur memiliki halaman awal khusus. Saat alur awalnya menjadi aktif, halaman awal akan menjadi halaman saat ini. Untuk setiap giliran percakapan, halaman saat ini akan tetap sama atau bertransisi ke halaman lain. Konsep ini akan memungkinkan Anda membuat agen yang lebih besar dengan banyak halaman dan beberapa giliran percakapan.
Halaman berisi fulfillment (dialog entri statis dan/atau webhook), parameter, dan pengelola status. Kontrol percakapan dilakukan melalui pengendali status, yang memungkinkan Anda membuat berbagai rute transisi untuk bertransisi ke halaman Dialogflow CX lain, termasuk menjadikannya bersyarat (untuk percabangan percakapan).
Status percakapan dikontrol dengan menangani transisi antarhalaman dengan tiga jenis rute yang berbeda:
- Rute intent: Kapan intent harus dicocokkan (misalnya, mengubah halaman berdasarkan apa yang dikatakan pengguna akhir). (Garis biru dalam diagram visual.)
- Rute kondisi: Saat kondisi harus diperiksa (misalnya, mengubah halaman berdasarkan parameter tertentu yang disimpan dalam sesi) (Garis oranye dalam diagram visual.)
- Pemroses peristiwa: Saat peristiwa penggantian tertentu harus ditangani (misalnya, menangani tidak ada input, tidak ada kecocokan, untuk membedakan pengguna akhir ke rute intent atau kondisi) (Garis hijau dalam diagram visual.)
Ucapan percakapan (yaitu konten atau respons kembali kepada pengguna) ditentukan oleh fulfillment, yang dapat berupa statis atau dinamis:
- fulfillment statis: Saat respons fulfillment statis diberikan
- Fulfillment dinamis: Saat webhook fulfillment dipanggil untuk respons dinamis
Untuk bot retail, kita akan membuat beberapa rute intent dan memberikan beberapa respons fulfillment entri statis, yang akan ditampilkan kepada pengguna segera setelah halaman diaktifkan. Nantinya, kita akan membuat parameter dengan rute kondisi untuk mengumpulkan informasi yang Anda perlukan dalam membuat pesanan merchandise.
Rute Intent Halaman
Membuat halaman dalam Alur Mulai Default
Berikut adalah diagram alir alur awal default:
Mari kita klik tombol ini bersama-sama:
- Klik Build > Default Start Flow
- Klik Start Page
- Klik ikon + di samping Routes
- Menambahkan redirect.artists.overview
- Scroll ke bawah ke Transisi, lalu bertransisi ke alur Katalog.
- Tekan Simpan
- Ulangi langkah-langkah di atas untuk
redirect.product.overview
dan 11 baris lainnya dari tabel ini:
Halaman (Dalam Alur) | Rute > Intent | Rute > Transisi Ke |
Mulai |
| - |
Mulai |
| Alur: Katalog |
Mulai |
| Alur: Katalog |
Mulai |
| Alur: Katalog |
Mulai |
| Alur: Katalog |
Mulai |
| Alur: Katalog |
Mulai |
| Alur: Katalog |
Mulai |
| Alur: Layanan Pelanggan |
Mulai |
| Alur: Layanan Pelanggan |
Mulai |
| Alur: Layanan Pelanggan |
Mulai |
| Alur: Pesanan Saya |
Mulai |
| Alur: Pesanan Saya |
Mulai |
| Alur: Pesanan Saya |
Mulai |
| Halaman: Akhiri Sesi |
Alur Mulai Default akan berfungsi seperti menu opsi yang berfungsi saat menghubungi pusat layanan telepon. Namun, dalam agen virtual ini, agen ini dilatih dengan Natural Language, dengan frasa pelatihan dalam intent. Oleh karena itu, interaksinya didorong oleh percakapan, bukan opsi DTMF, serta lebih alami dan mirip manusia.
Membuat halaman di Alur Katalog
Transkrip chat berikut adalah bagian dari alur Katalog:
> "Hi"
"Welcome, I am the virtual agent of G-Records, a fictional rock label.
You can order artists merchandise, ask questions about your order or shipping,
and I can tell you more which artists are currently signed with us. How can I help?"
> "Which bands are signed with this record label?"
"The following bands are signed with G-Records:
Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
From which of these artists would you like to order merchandise?"
> "Alice Googler"
"You want to rock with Alice Googler merchandise. Awesome!
We sell shirts, music or the tour movie.
Which merchandise item do you want?"
"(Suggestion chips: [Shirts] [Music] [Tour Movie])"
> "I would like to buy a Shirt"
"Do you want a longsleeve or a t-shirt?"
"(Suggestion chips: [T-shirt, Longsleeve, Price?])"
> "What's the price difference?"
"A t-shirt costs $25 and a longsleeve costs $30.
Do you want a longsleeve or a t-shirt?"
> "A t-shirt",
"What shirt size do you want?"
"(Suggestion chips: [XS, S, M, L, XL, 2XL, 3XL])"
> "M"
"A T-shirt of Alice Googler size: M costs $25. Shall I continue to order?"
Dialog akan berbeda saat Anda memilih Musik atau Film Tur: Untuk Musik, dialog akan terlihat seperti ini:
> "Music"
"We have a Greatest Hits Album or the Live Album. Which one do you want?"
"(Suggestion chips: [Greatest Hits, Live, Price?])"
> "The Live Album"
"Do you want this album on CD or MP3?"
"(Suggestion chips: [CD, MP3])"
> "What's the price difference?"
"A CD costs $15. The digital album on MP3 costs $10.
Do you want this album on CD or MP3?"
> "Digital Album",
"The Digital Album: Alice Googler - Live costs $10. Shall I continue to order?"
Untuk Film Tur, dialognya akan terlihat seperti ini:
> "Tour Movie"
"The Tour Movie of G's N' Roses costs $25. Shall I continue to order?
Berikut adalah diagram alir semua halaman dalam alur Katalog:
Perhatikan kompleksitas alur ini:
- Saya dapat melewati pertanyaan Artis mana dan langsung bertanya "Item merchandise mana yang tersedia".
- Dari Alur Mulai Default, saya dapat bertanya: "Saya ingin membeli kaus The Google Dolls", atau "Saya ingin membeli sesuatu". Artinya, agen virtual akan mengajukan pertanyaan lanjutan, untuk mengisi slot parameter yang diperlukan ini. Halaman ini akan langsung membuka Halaman Produk.
- Dialog Harga berasal dari halaman Harga yang akan digunakan kembali.
- Meskipun dialog untuk Film Tur terlihat seperti dialog yang paling sederhana, kita akan melakukan sesuatu yang spesial dengan dialog tersebut. Kami akan menggunakan kembali bagian dialog ini, sehingga pengguna akhir juga dapat memasukkannya langsung untuk salah satu produk lainnya, jika mereka mengkhususkan semua informasi sekaligus:
> "I want The Goo Fighters longsleeve size S."
"The longsleeve of The Goo Fighters size S costs $30. Shall I continue to order?"
Mari kita mulai dengan menghubungkan halaman-halaman.
- Klik Build > Catalog
- Klik Start Page
- Klik ikon + di samping Routes
- Tambahkan redirect.artists.overview
- Scroll ke bawah ke Transisi, pilih Halaman, lalu pilih: + Halaman baru
- Gunakan nama halaman:
Artist Overview
, lalu klik Simpan
Sekarang mari kita selesaikan alurnya:
- Langkah-langkah sebelumnya dapat diulang dengan halaman, intent, dan fulfillment berikut. Ambil alih tabel ini. Halaman, adalah Halaman yang akan Anda pilih dalam alur, Rute > Transisi Ke adalah alur atau halaman baru yang akan Anda buat dan transisikan.
Halaman (Dalam Alur) | Rute > Intent | Rute > Bertransisi Ke |
Katalog Mulai |
| Ringkasan Artis |
Awal Katalog |
| Produk |
Katalog Mulai |
| Ringkasan Produk |
Awal Katalog |
| Ringkasan Produk |
Awal Katalog |
| Kaus |
Awal Katalog |
| Musik |
Katalog Mulai |
| Akhiri Sesi |
Awal Katalog |
| Alur Akhir |
Ringkasan Artis |
| Ringkasan Produk |
Sekarang, mari kita lanjutkan dan tambahkan fulfillment statis lainnya.
- Di alur Katalog, klik halaman Ringkasan Artis.
- Klik Edit fulfillment di bagian Entry fulfillment.
- Gunakan fulfillment statis berikut (Agent says):
The following bands are signed with G-Records: Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
- Klik Simpan
- Dalam alur Katalog, klik halaman Ringkasan Produk.
- Klik Edit fulfillment di bagian Entry fulfillment.
- Gunakan fulfillment statis berikut (Agen mengatakan):
We sell shirts, music or the tour movie.
- Tekan Simpan.
Parameter Halaman
Parameter digunakan untuk mengambil dan mereferensikan nilai yang telah disediakan oleh pengguna akhir selama sesi. Setiap parameter memiliki nama dan jenis entity. @Artist
dan @Merch
adalah parameter minimum yang perlu kita kumpulkan untuk membuat pesanan merchandise. Untuk T-shirt atau Longsleeve, Anda juga ingin mengumpulkan @ShirtSize
dan jika ingin memesan musik, Anda juga memerlukan nama @Carrier
dan @Album
.
Parameter tersebut harus ditandai sebagai wajib. Setelah diperlukan, Anda dapat memberikan perintah kustom untuk mengingat pengguna akhir, guna memberikan jawaban yang benar sehingga parameter ini dapat dikumpulkan. Ada beberapa mekanisme di Dialogflow CX yang dapat membantu Anda dalam hal ini.
Misalnya, Anda dapat memberikan pesan fulfillment statis kustom di bagian Parameter. Jika parameter diperlukan, fulfillment parameter ini akan ditampilkan. Pesan respons ini akan ditambahkan ke antrean respons. Selama giliran agen, Anda dapat (dan terkadang sebaiknya) memanggil beberapa fulfillment, yang masing-masing dapat menghasilkan pesan respons. Dialogflow menyimpan respons ini dalam antrean respons. Untuk membaca selengkapnya tentang siklus proses halaman, dan urutan fulfillment ini akan ditambahkan ke antrean respons, baca Dokumen Halaman Dialogflow CX.
Membuat parameter di halaman Ringkasan Artis
Mari kita tentukan beberapa parameter halaman:
- Di Alur Katalog, klik halaman Ringkasan Artis.
- Klik + di blok Parameter. Tambahkan parameter artist:
- Nama Tampilan:
artist
- Jenis Entitas:
@Artist
- Wajib: Centang
- Menyamarkan di log: Periksa
- Sekarang kita akan menambahkan beberapa pesan fulfillment parameter kustom. Jika parameter artist belum dikumpulkan oleh agen virtual, pengguna akhir akan mendapatkan respons agen ini yang ditambahkan ke antrean respons:
From which of these artists would you like to order merchandise?
- Menambahkan opsi dialog kedua yang menyediakan chip saran lengkap. Klik Tambahkan opsi dialog dan gunakan kode ini (dalam JSON):
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
Anda dapat menangani perintah fulfillment penggantian yang berbeda berdasarkan jumlah percobaan yang dilakukan pengguna akhir untuk menjawabnya. Anda akan melakukannya dengan pengelola peristiwa parameter. Ada berbagai pengendali peristiwa bawaan yang dapat dipilih, seperti Parameter Tidak Valid, Ucapan terlalu panjang, Tidak ada input, Tidak ada input pada percobaan ke-1, Percobaan ke-2, atau Tidak Cocok. Perbedaan antara tidak ada input dan tidak ada kecocokan, adalah tanpa input, pengguna tidak pernah memberikan jawaban, dan tanpa kecocokan, pengguna memberikan jawaban, tetapi Dialogflow CX tidak dapat mencocokkan intent ini dengan suatu halaman.
- Scroll ke bawah ke bagian Pengendali peristiwa permintaan ulang.
- Klik Tambahkan pengendali peristiwa, lalu pilih peristiwa:
No-match default
- Gunakan fulfillment teks statis peristiwa berikut:
I missed that. Please, specify the artist. You can choose between: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Klik Simpan
- Klik Tambahkan pengendali peristiwa lalu pilih peristiwa:
No-input default
- Gunakan fulfillment teks statis peristiwa berikut:
I am sorry, I could understand the artist's name. You can choose between Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Klik Simpan
Rute Kondisi Halaman
Parameter sangat efektif jika dikombinasikan dengan Rute Bersyarat Halaman. Jika kondisi bernilai benar (true), rute halaman terkait akan dipanggil. Kondisinya dapat berupa, Parameter sama dengan nilai tertentu, atau Parameter tidak boleh tidak ada, atau Formulir yang telah diisi, dan banyak lagi. Anda dapat menemukan informasi selengkapnya tentang Parameter dan Kondisi dalam Dokumentasi Dialogflow CX.
Untuk agen virtual retail, kita perlu mengumpulkan urutan parameter, sehingga kita perlu membuat kondisi, untuk memeriksa apakah 'formulir' telah selesai. Formulir adalah daftar parameter yang harus dikumpulkan dari pengguna akhir untuk halaman. Agen virtual berinteraksi dengan pengguna akhir selama beberapa putaran percakapan, hingga mengumpulkan semua parameter formulir yang diperlukan, yang juga dikenal sebagai parameter halaman.
Dialogflow CX secara otomatis menetapkan parameter value yang diberikan oleh pengguna akhir selama pengisian formulir. Untuk memeriksa apakah formulir lengkap halaman saat ini telah diisi, gunakan kondisi berikut: $page.params.status = "FINAL"
Membuat rute bersyarat di halaman Ringkasan Artis
Mari kita buat rute kondisional, yang akan bertransisi ke halaman berikutnya, setelah artis diketahui:
- Di halaman Artist Overview, klik ikon + di bagian Routes.
- Scroll ke bawah ke bagian Kondisi.
- Pilih Minimal satu (ATAU)
- Selanjutnya, kita akan menulis ekspresi yang
- Parameter:
$page.params.status
- Operator:
=
- Nilai:
"FINAL"
- Sekarang, kita akan membuat pesan fulfillment statis tertentu pada rute, mengonfirmasi pilihan pengguna akhir. Scroll ke bawah ke blok Fulfillment dan tulis pesan fulfillment berikut:
$session.params.artist, great choice! Rock on!
You want to rock with $session.params.artist merchandise. Awesome!
- Jika kondisinya benar, Anda harus bertransisi ke halaman Ringkasan Produk. Scroll ke bawah ke bagian Transisi dan gunakan halaman berikut:
Product Overview
- Tekan Simpan.
Membuat rute di halaman Ringkasan Produk
Setelah mengetahui cara membuat parameter dan rute kondisional, mari kita buat lebih banyak parameter untuk halaman berikut:
Ringkasan Produk
- Buat parameter
artist
di Halaman Ringkasan Produk:
- Nama Tampilan:
artist
- Jenis Entitas:
@Artist
- Wajib: Centang
- Samarkan di log: Centang
- Pemenuhan perintah awal:
From which of these artists would you like to order merchandise?
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Penangan Peristiwa >
No-match default
:To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Payload kustom:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Pengendali Peristiwa >
No-input default
:To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist were you trying to mention?
- Payload kustom:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Buat parameter
merch
:
- Nama Tampilan:
merch
- Jenis Entitas:
@Merch
- Wajib: Centang
- Samarkan di log: Centang
- Fulfillment:
Which merchandise item do you want?
- Klik: Tambahkan opsi dialog > Payload kustom:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Penangan Peristiwa >
No-match default
- Pemenuhan Pengendali Peristiwa:
We sell Shirts, Music or the Tour movie. Which of these items do you want?
- Payload kustom:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Penangan Peristiwa >
No-input default
- Pemenuhan Pengendali Peristiwa:
I couldn't understand which merchandise item you wanted to buy. You can choose between: Shirts, Music or the Tour movie. Which item do you want?
- Payload kustom:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Buat rute yang akan bertransisi ke halaman Produk saat
artist
diberikan dan itemmerch
diberikan.
- Kondisi:
- Cocokkan Setiap aturan (DAN)
- Ekspresi:
$session.params.artist != null
- Ekspresi:
$session.params.merch != null
- Fulfillment:
Alright! $session.params.merch of $session.params.artist, let's go!
- Transisi: Halaman:
Product
- Buat rute saat pengguna mengucapkan "Kemeja"
- Intent: redirect.shirts
- Transisi: Halaman:
Shirts
- Membuat rute saat pengguna mengucapkan "Musik"
- Intent: redirect.music
- Transisi: Halaman:
Music
- Membuat rute ketika pengguna meminta informasi harga
- Intent: redirect.price
- Transisi: Membuat Halaman baru:
Price
Setelah mengatur konfigurasi di atas, Anda akan melihat visualisasi yang mirip dengan gambar di bawah ini. Perhatikan bahwa rute intent berwarna biru dalam diagram, dan rute kondisi berwarna oranye. Meskipun tidak digambarkan, pengendali peristiwa berwarna hijau, dan saat beberapa jenis rute bertransisi ke halaman, garis akan berwarna abu-abu.
Sekarang, Anda telah mempelajari cara membuat Alur, Entitas, Intent, dan Halaman dengan Pemroses Status seperti: Rute Intent dan Rute Bersyarat berdasarkan Parameter. Nanti di lab ini, kita akan menggunakan cabang bersyarat dalam fulfillment, untuk memberikan dialog yang berbeda berdasarkan input.
Anda dapat menggunakan konfigurasi berikut untuk menyelesaikan agen virtual kami.
Halaman Kaus:
- Buat konfigurasi berikut di Halaman Kemeja:
- Fulfillment entri:
Do you want a longsleeve or a t-shirt?
- Payload kustom fulfillment entri:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
},
{
"text": "Price?"
}
]
}
]
]
}
- Buat Rute Intent:
redirect.price
dengan transisi ke HalamanPrice
- Buat parameter berikut:
- Parameter:
merch
- Jenis Entitas:@Merch
,Required
, danRedact in log
- Parameter > Penangan Peristiwa >
No-match default
- Parameter > Fulfillment Penangan Peristiwa:
You can choose between a t-shirt or a longsleeve. Which of these do you want?
- Parameter > Payload Kustom Pemenuhan Pengendali Peristiwa:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Parameter > Penangan Peristiwa >
No-input default
- Parameter > Pemenuhan Pengendali Peristiwa:
I couldn't understand if you want the t-shirt or the longsleeve. Which of these do you want?
- Parameter > Payload Kustom Fulfillment Penangan Peristiwa:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Klik pemenuhan entri dan scroll ke bawah ke Preset parameter, setiap kali halaman Shirts aktif, parameter kategori akan ditetapkan ke kemeja:
Parameter | Nilai |
|
|
- Menambahkan Rute Bersyarat:
- Cocokkan Minimal Satu Aturan (ATAU)
- Ekspresi:
$session.params.merch = "T-shirt"
- Ekspresi:
$session.params.merch = "Longsleeve"
- Transisi ke halaman baru:
Shirt Size
Halaman Harga:
Karena pesan untuk harga akan bergantung pada item atau kategori merchandise yang dipilih (musik atau kemeja), kita akan memperbaiki bagian ini nanti di lab. Untuk saat ini, cukup masukkan placeholder.
- Buat konfigurasi berikut di Halaman Price:
- Fulfillment entri:
PRICE TODO
Karena Anda dapat meminta harga dari berbagai tempat dalam percakapan, sistem ini akan selalu memberikan jawaban dan mengalihkan Anda kembali ke bagian dialog sebelumnya, untuk melanjutkan pemesanan. Ada 5 tempat di hierarki dialog tempat Anda dapat bercabang untuk mendapatkan informasi harga. (Kemeja, Ukuran Kaus, Musik, Operator, dan juga pengiriman melalui Rute Intent), sehingga kita memerlukan beberapa rute bersyarat untuk kembali:
- Tambahkan Rute bersyarat:
- Cocokkan Setiap aturan (DAN)
- Ekspresi:
$session.params.category = "shirts"
- Ekspresi:
$session.params.merch = "null"
- Transisi ke halaman baru:
Shirts
- Menambahkan Rute Bersyarat:
- Cocok dengan Setiap aturan (AND)
- Ekspresi:
$session.params.category = "shirts"
- Ekspresi:
$session.params.size = "null"
- Transisi ke halaman baru:
Shirt Size
- Menambahkan Rute Bersyarat:
- Cocokkan Setiap aturan (DAN)
- Ekspresi:
$session.params.category = "music"
- Ekspresi:
$session.params.album = "null"
- Transisi ke halaman baru:
Music
- Menambahkan Rute Bersyarat:
- Cocokkan Setiap aturan (DAN)
- Ekspresi:
$session.params.category = "music"
- Ekspresi:
$session.params.merch = "null"
- Transisi ke halaman baru:
Carrier
- Tambahkan Rute Bersyarat:
- Cocokkan Setiap aturan (DAN)
- Ekspresi:
$session.params.category = "null"
- Transisi ke halaman baru:
Product Overview
Halaman Ukuran Kemeja:
- Buat konfigurasi berikut di Halaman Ukuran Kemeja:
- Pemenuhan entri:
What shirt size do you want?
- Payload kustom fulfillment:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Buat Rute intent:
redirect.price
dengan transisi ke HalamanPrice
. - Buat parameter berikut:
- Parameter:
shirtsize
- Jenis Entitas:@ShirtSize
-Required
,Redact In Log
- Parameter > Penangan Peristiwa >
No-match default
- Parameter > Fulfillment Penangan Peristiwa:
Please tell me the shirt size, such as XL.
- Parameter > Payload Kustom Pemenuhan Pengendali Peristiwa:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Parameter > Pengendali Peristiwa >
No-input default
- Parameter > Fulfillment Penangan Peristiwa:
I couldn't understand the shirt size. What size do you want?
- Parameter > Payload Kustom Fulfillment Penangan Peristiwa:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Menambahkan Rute Bersyarat:
- Cocok dengan Setiap aturan (AND)
- Ekspresi:
$page.params.shirtsize != "null"
- Transisi ke Halaman:
Product
Halaman Musik:
- Buat konfigurasi berikut di Halaman Musik:
- Pemenuhan entri:
We have a Greatest Hits Album or the Live Album. Which one do you want?
- Payload kustom fulfillment entri:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
},
{
"text": "Price?"
}
]
}
]
]
}
- Buat Rute Intent:
redirect.price
dengan transisi ke Halaman:Price
. - Buat parameter berikut:
- Parameter:
album
- Jenis Entitas:@Album
-Required
,Redact In Log
- Parameter > Penangan Peristiwa >
No-match default
- Parameter > Fulfillment Penangan Peristiwa:
You can choose between Greatest Hits and Live Album. Which of these do you want?
- Parameter > Payload Kustom Fulfillment Penangan Peristiwa:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Parameter > Penangan Peristiwa >
No-input default
- Parameter > Fulfillment Penangan Peristiwa:
I couldn't understand if you want the album: Greatest Hit or Live. Which of these do you want?
- Parameter > Payload Kustom Fulfillment Penangan Peristiwa:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Klik fulfillment entri, lalu scroll ke bawah ke Preset parameter. Setiap kali halaman Musik aktif, parameter kategori akan ditetapkan ke music:
Parameter | Nilai |
|
|
- Menambahkan Rute Bersyarat:
- Cocok dengan Setiap aturan (AND)
- Ekspresi:
$page.params.album != "null"
- Transisi ke Halaman:
Carrier
Halaman Operator:
- Buat konfigurasi berikut di Halaman Carrier:
- Pemenuhan entri:
Do you want this album on CD or MP3?
- Payload kustom fulfillment entri:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
},
{
"text": "Price?"
}
]
}
]
]
}
- Buat Rute intent:
redirect.price
yang bertransisi ke HalamanPrice
. - Buat parameter berikut:
- Parameter:
merch
- Jenis Entitas:@Merch
-Required
,Redact In Log
- Parameter > Penangan Peristiwa >
No-match default
- Parameter > Pemenuhan Pengendali Peristiwa:
Do you want a physical CD or the digital album?
- Parameter > Fulfillment Pengendali Peristiwa: Payload kustom:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "Digital Album"
}
]
}
]
]
}
- Parameter > Pengendali Peristiwa >
No-input default
- Parameter > Fulfillment Penangan Peristiwa:
I couldn't understand if you mean CD or MP3. Which one do you want?
- Parameter > Fulfillment Pengendali Peristiwa: Payload kustom:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
}
]
}
]
]
}
- Menambahkan Rute Bersyarat:
- Cocokkan Setiap aturan (DAN)
- Ekspresi:
$page.params.merch != "null"
- Transisi ke Halaman:
Product
Halaman Produk:
- Buat parameter berikut:
Parameter Displayname | Jenis Entitas Parameter | Pemeriksaan |
|
| Wajib, Samarkan di log |
|
| Wajib, Samarkan di log |
- Parameter artist memerlukan fulfillment perintah awal berikut, yang akan ditampilkan jika artis tidak diketahui.
You didn't mention which artist you are interested in. You can ask me to buy the $session.params.merch of the artist you like or ask which artists we signed. How can I help?
{
"richContent": [
[
{
"options": [
{
"text": "Which artists?"
}
],
"type": "chips"
}
]
]
}
- Selain itu, tambahkan pengendali peristiwa
No-input default
dengan fulfillment:I couldn't understand what you just said. Ask me which artists are signed.
- Dan pengendali peristiwa
No-match default
dengan fulfillment:I missed that. Please ask me which artists are signed.
- Parameter merch juga memerlukan pengendali peristiwa perintah ulang.
- Tambahkan pengendali peristiwa
No-input default
dengan fulfillment:I couldn't understand what you just said. Which merchandise item do you want?
- Dan pengendali peristiwa
No-match default
dengan fulfillment:I missed that. Which merchandise item do you want?
Rute berikutnya akan beralih ke halaman konfirmasi saat artis diketahui dan pengguna memilih "Film Tur".
- Menambahkan Rute Bersyarat:
- Cocok dengan Setiap aturan (AND)
- Ekspresi:
$session.params.artist != null
- Ekspresi:
$session.params.merch = "Tour Movie"
- Parameter Penambahan Preset Parameter >
price = 25
- Transisi ke halaman baru:
Confirmation
Rute berikutnya akan bertransisi ke halaman konfirmasi saat artis diketahui dan pengguna memilih "Kaus" dan ukuran kaus dipilih.
- Menambahkan Rute Bersyarat:
- Ekspresi Kustom:
$session.params.artist != null AND $session.params.merch = "T-shirt" AND $session.params.shirtsize != null
- Parameter Presets Add Parameter >
price = 25
- Transisi ke halaman:
Confirmation
Rute berikutnya akan bertransisi ke halaman konfirmasi saat artis diketahui dan pengguna memilih "Lengan panjang" dan ukuran kemeja dipilih.
- Tambahkan Rute Bersyarat:
- Ekspresi Kustom:
$session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
- Parameter Presets Add Parameter >
price = 30
- Transisi ke halaman:
Confirmation
Rute berikutnya akan bertransisi ke halaman konfirmasi saat artis diketahui dan pengguna memilih "CD" serta nama album dipilih.
- Tambahkan Rute Bersyarat:
- Ekspresi Kustom:
$session.params.artist != null AND $session.params.merch = "CD" AND $session.params.album != null
- Parameter Presets Add Parameter >
price = 15
- Transisi ke halaman:
Confirmation
Rute berikutnya akan bertransisi ke halaman konfirmasi saat artis diketahui dan pengguna memilih "Digital Album" dan nama album dipilih.
- Menambahkan Rute Bersyarat:
- Ekspresi Kustom:
$session.params.artist != null AND $session.params.merch = "Digital Album" AND $session.params.album != null
- Parameter Penambahan Preset Parameter >
price = 10
- Transisi ke halaman:
Confirmation
Selanjutnya, kita akan membuat beberapa kondisional lanjutan dengan perintah yang mendeteksi informasi yang tidak ada. Rute berikutnya akan bertransisi kembali ke halaman musik jika artis diketahui dan pengguna memilih "CD" atau "Digital Album", tetapi nama album tidak dipilih.
- Tambahkan Rute Bersyarat:
- Ekspresi Kustom:
$session.params.artist != null AND ($session.params.merch = "CD" OR $session.params.merch = "Digital Album") AND $session.params.album = null
- Fulfillment:
I would also need to know which album you would like to buy!
- Transisi ke halaman:
Music
Dan rute terakhir akan bertransisi ke halaman konfirmasi ketika artisnya diketahui dan pengguna memilih "Kaus" atau "Lengan Panjang", tetapi ketika ukuran kaos tidak dipilih.
- Tambahkan Rute bersyarat:
- Ekspresi Kustom:
$session.params.artist != null AND ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve") AND $session.params.shirtsize = null
- Fulfillment:
I would also need to know which shirt size you need!
- Transisi ke halaman:
Shirt Size
Di bagian lab berikutnya, kita akan menggunakan fulfillment bersyarat untuk memberikan pesan fulfillment yang berbeda-beda, bergantung pada input.
7. Respons Bersyarat
Beberapa respons akan menampilkan dialog yang berbeda berdasarkan input. Dialog akan bercabang, dan kami menyebutnya respons bersyarat. Hal ini dapat menjadi menarik, jika Anda tidak menggunakan fulfillment webhook, tempat respons bersyarat ditentukan di backend. Contohnya dapat terlihat seperti:
if [condition]
[response]
elif [condition]
[response]
elif [condition]
[response]
else
[response]
endif
- Contoh [kondisi] dapat berupa:
$session.params.user-age >= 21
. Fungsi ini menggunakan format yang serupa dengan kondisi dalam rute. - [response] mengambil respons teks statis
- Respons bersyarat selalu dimulai dengan
if
- Pemblokiran
elif
danelse
bersifat opsional
Dialogflow CX juga dapat menggunakan fungsi sistem bawaan. Misalnya untuk memformat tanggal atau waktu, atau untuk menampilkan waktu saat ini ($sys.func.NOW()
)
Mari kita selesaikan alur Catalog, dengan memperbaiki Halaman Confirmation dan Price.
Halaman Konfirmasi:
Sekarang kita akan membuat halaman konfirmasi. Parameter ini memiliki persyaratan berikut:
- Jika merch adalah CD atau Album Digital. Kami akan menampilkan kolom berikut dalam konfirmasi: artist, merch, album, dan price.
- Jika merch adalah Kaus atau Kaus lengan panjang. Kami akan menampilkan kolom berikut dalam konfirmasi: artist, merch, size, dan price.
- Lainnya (dan dengan demikian jika merch adalah Tour Movie). Kami akan menampilkan kolom berikut dalam konfirmasi: artist, merch, dan price.
- Klik Halaman Konfirmasi.
- Klik Edit Fulfillment > Agent Responses > opsi Add dialogue > Conditional Response:
if ($session.params.merch = "CD" OR $session.params.merch = "Digital Album")
The $session.params.merch: $session.params.artist - $session.params.album costs $$session.params.price. Shall I continue to order?
elif ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve")
A $session.params.merch of $session.params.artist size: $session.params.shirtsize costs $$session.params.price. Shall I continue to order?
elif $session.params.merch = "Tour Movie"
The $session.params.merch of $session.params.artist costs $$session.params.price. Shall I continue to order?
else
It looks like something went wrong with your order. You can say "Reset", to restart the order process.
endif
- Create the following Custom payload:
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Yes, confirm"
}
],
"type": "chips"
}
]
]
}
Next, create two intent routes:
confirm.proceed.order
transitions to:Order Process
Flow.decline.proceed.order
transitions toEnd Flow
When the user declines the order, and does not want to proceed the order process, we will have to transition back to the welcome page, but all the parameters have to be cleared. We can do this by specifically setting null to all the possible parameters. You can do this with Parameter presets.
- In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:
Parameter | Value |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notice that we have created an additional parameter called restart
. If this parameter is present, the Default Start Flow, should know to continue the conversation by showing a customized message.
- Click on the Default Start Flow, Start Page, and create another Conditional Route:
$session.params.restart = "true"
- Fulfillment:
"Welcome back, as the virtual agent of G-Records, I can help you order artists merchandise, you can ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?"
- Custom payload:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
Price Page:
Let's also fix the Price TODOs. The price information will be static for now. Click on the Price Page in the Catalog Flow, and use the following entry fulfillment:
- Delete the Agent Says entry fulfillment.
- Create a new Conditional Response:
if $session.params.category = "shirts"
A t-shirt costs $25 and a longsleeve costs $30.
elif $session.params.category = "music"
A CD costs $15. The digital album on MP3 costs $10.
else
A t-shirt costs $25 and a longsleeve costs $30. A CD costs $15 and a digital album on MP3 $10. In case you are interested in the Tour Movie, that one is $25.
endif
Well done, by now you completed the Catalog flow. Your flow should look similar to this diagram:
8. Wrapping up the agent
We are almost at the end of this lab. Let's configure the last flows together, and take in practice all the new things that we have learned.
Creating the My Order Flow
- Go to the My Order Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
My Order Start |
| My Order |
My Order Start |
| My Order Status |
My Order Start |
| My Order Cancellation |
My Order Start |
| End Session |
My Order Start |
| End Flow |
My Order |
| My Order Status |
My Order |
| My Order Cancellation |
Default Start Flow |
| Flow: My Order |
Default Start Flow |
| Flow: My Order |
- Let's create the following entry fulfillment for the My Order Page:
- Entry fulfillment:
I can look up the status of your order, or I can cancel an order.
- In the My Order Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required: checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Fulfillment:
And do you want to Cancel your order, or should I look up the status?
- Click on Add state handler > Event Handlers and create the Event Handler:
No-input default
- Fulfillment:
I'm sorry, what was that? Would you like me to cancel an order or look up the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- Create the Event Handler:
No-match default
- Fulfillment:
Would you like me to cancel an order or lookup the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- In the My Order Status Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Status Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been shipped, it can take up to approx 2 weeks before you will receive your items.
- Add dialogue option > Text:
Is there anything else I can help you with?
- In the My Order Cancelation Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Cancelation Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been canceled.
- Add dialogue option > Text:
Is there anything else I can help you with?
- Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"
And:
>"What's the status of order DEFG222"
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
- Select the Start Page and click on the
redirect.home
intent. Create the following parameter preset:restart = true
Default Negative intents (Fallback)
When you create a virtual agent, a default negative intent is created for you. You can add training phrases to this intent that act as negative examples that will trigger a No-match event. There may be cases where end-user input has a slight resemblance to training phrases in normal intents, but you do not want these inputs to match any normal intents.
- Try in the simulator:
I don't like Alice Googler
.
You will see that the virtual agent answers with the Product Overview Page, to continue ordering Alice Googler merchandise. However, your end user does not like that artist. Let's use the Default Negative Intent for this.
- Go to Manage > Intents and select the Default Negative Intent.
- Add the following training phrases that will trigger the No-match event.
I don't like Alice Googler
I am not a fan of G's N' Roses
I can't stand the music of the Google Dolls
- Hit Save and test the following sentence in the simulator:
I am really not a fan of the Goo Fighters
This time the No-match
event was triggered, you stayed on the Start Page.
Default Fallback Messages
- Click the Default Start Flow, select the
sys.no-input-default
event handler.
The No-input fallback basically means: No text or speech answers were detected. Likely no answers were given, or the system couldn't hear it. Therefore, let's make the fallback messages more specific. Use the tab key, to create alternative dialogues:
- Remove all answers, and add these text dialogues:
I'm sorry, I didn't receive an answer. Can you say it again?
I missed your answer, can you say it again?
Sorry, I didn't hear anything. Can you say it again?
I couldn't hear what you were saying, what was that?
I'm sorry, I missed your answer. What were you trying to say?
Don't forget to click Save.
- Click the Default Start Flow, select the
sys.no-match-default
event handler.
The No Match fallback basically means: Text or speech answers were detected but nothing in Dialogflow CX got matched.
- Remove all answers, and add these text dialogues:
Sorry, I didn't get that. Can you please rephrase?
I'm sorry, I don't understand. Can you please rephrase?
I don't understand, please rephrase.
Sorry, I didn't get that. What was that?
I didn't get that, can you please rephrase?
Don't forget to click Save.
- It's advised to repeat these steps for the Catalog, My Order, Order Process and Customer Care flows.
Here's a tip: when creating fallback messages, make them more explicit, by rephrasing the previous question or by mentioning an example. You could create these type of No-match and No-input events on Page level when creating parameters. In our labs, we have already done this.
Creating the Order Process Flow
- Go to the Order Process Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
Order Process Start |
| End Session |
Order Process Start |
| End Flow |
Order Process Start |
| New Page: Shipping Details |
- Let's create the following entry fulfillment for the Shipping Details Page:
- Entry fulfillment:
To complete your order I will first need to collect your shipping details.
- Create the following parameters:
These parameters will make use of built-in system entities. System entity support differs for each language. See the docs for more information.
Parameter Display name | Entity | Required? | Initial prompt fulfillment | No-match default | No-input default |
| @sys.person | Required |
|
|
|
| @sys.person | Required |
|
|
|
| @sys.address | Required |
|
|
|
| @sys.any | Required |
|
|
|
| @sys.geo-city | Required |
|
|
|
| @sys.geo-country | Required |
|
|
|
| @sys.email | Required |
|
|
|
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Transition to new Page:
Payment Details
- Create the following entry fulfillment.
Let's fake it that this virtual agent makes use of Google Pay. Don't worry this tutorial won't make real transactions. Create the following entry dialogues:
- Agent Says:
Alright $session.params.firstname! We will make use of Google Pay, that's connected to your email account: $session.params.email.
- Conditional Response
if $session.params.merch != "Digital Album"
Shipping costs an additional 5 dollars. This will make the total price $$sys.func.TO_TEXT($sys.func.ADD($session.params.price, 5)).
Your merchandise will be shipped to:
$session.params.firstname $session.params.lastname
$session.params.address
$session.params.zipcode $session.params.city
$session.params.country
To continue the order process please explicitly say "I confirm". Do you want to confirm your $session.params.artist $session.params.merch order?
else
The total costs will be: $$session.params.price.
After purchasing the digital album, you will receive an email with the download link.
To continue the order process please explicitly say "I confirm".
Do you want to confirm your $session.params.artist $session.params.merch order?
endif
- Buat Rute Intent berikut
- Intent:
confirm.proceed.order
- Agen Mengatakan:
Thank you for your order! Your merchandise will be shipped today!
- Tambahkan Opsi Dialog > Teks:
Here's the order number: ABCD123
. - Tambahkan Opsi Dialog > Teks:
Have a good day!
- Transisi:
End Session
- Pilih Halaman Start, lalu klik intent
redirect.end
. Buat fulfillment berikut:Thank you for contacting G-Records! Have a nice day!
- Pilih Halaman Start, lalu klik intent
redirect.home
. Buat preset parameter berikut:restart = true
Keren! Sekarang, kami memiliki chatbot retailer di dunia nyata yang berfungsi sepenuhnya. Di lab berikutnya, kita akan menguji seberapa baik performa agen virtual.
9. Menguji agen virtual
Anda dapat menggunakan simulator bawaan untuk menguji dialog agen virtual. Keuntungan menguji alur dalam simulator adalah Anda akan melihat gambaran yang bagus tentang alur, halaman, parameter, dan peristiwa (DTMF) yang dikumpulkan simulator saat menelusuri alur Anda. Hal ini membuat pengujian lebih mudah daripada mengujinya langsung dalam integrasi, karena jenis informasi tersebut akan disembunyikan dari pengguna akhir. Anda bahkan dapat membuat kasus pengujian, menyimpan, dan menggunakan kembali kasus pengujian tersebut. Hal ini masuk akal, ketika Anda mempertahankan atau mengedit alur dari waktu ke waktu, dan Anda ingin memastikan bahwa tidak ada perubahan yang merusak pekerjaan Anda sebelumnya.
Anda juga dapat mengekspor dan mengimpor kasus pengujian yang dibuat sebelumnya, dengan menyimpan pengujian di Google Cloud Storage atau lokal. Mengekspor pengujian akan mendownload file blob. Untuk mempelajari simulator dan kasus pengujian lebih lanjut, lihat Dokumen Simulator / Kasus Pengujian.
Sebelum membuat beberapa kasus pengujian, mari kita selesaikan terlebih dahulu agen virtual lainnya:
Membuat Alur Layanan Pelanggan
- Buka Alur Layanan Pelanggan, lalu buat transisi intent berikut:
Halaman (Dalam Alur) | Rute > Intent | Rute > Bertransisi Ke |
Layanan Pelanggan Dimulai |
| Pengiriman |
Customer Care Start |
| Pengembalian Dana |
Customer Care Start |
| Pertukaran |
Layanan Pelanggan Dimulai |
| Alur Akhir |
Layanan Pelanggan Dimulai |
| Akhiri Sesi |
- Buat fulfillment entri berikut untuk Halaman Pengiriman:
Shipping physical merchandise items can take up to 2 weeks.
Is there anything else I can help you with?
- Buat fulfillment entri berikut untuk Halaman Refund:
We offer free returns and refunds. We provide one free return label for each order. You can use it within 30 days from receiving your order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
Is there anything else I can help you with?
- Buat fulfillment entri berikut untuk Halaman Pertukaran:
If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
Is there anything else I can help you with?
- Pilih Halaman Start dan klik intent
redirect.end
. Buat fulfillment berikut:Thank you for contacting G-Records! Have a nice day!
- Pilih Halaman Start, lalu klik intent
redirect.home
. Buat preset parameter berikut:restart = true
Membuat kasus pengujian
- Klik tombol Test Agent di sisi kanan layar.
Saat pertama kali membuka simulator, Anda harus memilih lingkungan agen dan alur aktif. Dalam sebagian besar kasus, Anda harus menggunakan lingkungan draf dan alur awal default.
- Jenis:
Hi
- Tanya:
Which artists are signed with your label?
- Ucapkan:
The Google Dolls
- Ucapkan:
I am interested in buying a shirt
- Ucapkan:
A t-shirt
- Ucapkan:
Medium
- Sekarang klik tombol simpan kasus pengujian. Yang dapat Anda temukan di bagian atas simulator (di samping panah ulangi, dan ikon sampah reset)
- Berikan detail berikut:
- Nama kasus pengujian:
Buy Google Dolls t-shirt size M
- Tag: #catalog, #shirts, #t-shirt, #TheGoogleDolls
- Klik Simpan
Mari kita buat lebih banyak kasus pengujian.
- Pertama, hapus dialog saat ini, dengan mengklik ikon Reset (tempat sampah).
- Buat kasus pengujian berikut:
Belilah kaus Googler Alice:
>"Buy the Alice Googler t-shirt."
>"XL"
- Nama kasus pengujian:
Buy the Alice Googler t-shirt
- Tag:
#catalog, #shirts, #t-shirt, #AliceGoogler
Beli kaus ukuran M: (Perhatikan bahwa nama Artis belum disebutkan, tetapi Anda ingin melewati halaman ringkasan band, ringkasan produk, kaus, dan ukuran kaus)
>"Buy a t-shirt size M"
>"The Google Fighters"
- Nama kasus pengujian:
Buy a t-shirt size M
- Tag:
#catalog, #shirts, #t-shirt, #TheGoogleFighters
- Deskripsi: (Perhatikan bahwa nama Artis belum disebutkan, tetapi Anda ingin melewati halaman ringkasan band, ringkasan produk, kaus, dan ukuran kaus)
Beli Musik G's N' Roses (Perhatikan bahwa ini akan melewati halaman ringkasan band dan ringkasan produk)
>"Purchase music of G's N' Roses"
>"Live"
>"CD"
- Nama kasus pengujian:
Purchase music of G's N' Roses
- Tag:
#catalog, #music, #CD, #GsNRoses, #live
- Deskripsi: (Perhatikan bahwa tindakan ini akan melewati halaman ringkasan band dan ringkasan produk)
Periksa informasi harga:
>"Which products"
>"Shirts"
>"What's the price difference?"
>"Longsleeve"
>"What does it cost?"
>"M"
>"The Google Dolls"
>"No"
>"Which bands"
>"The Gooo Fighters"
>"Music"
>"How much does it cost?"
>"Greatest Hits"
>"What's the price difference?"
>"Mp3"
>"No"
>"I want to buy the tour movie"
>"Alice Googler"
>"Yes"
- Nama kasus pengujian:
Price info
- Tag:
#catalog, #music, #tourmovie, #shirts
- Deskripsi: Menguji info harga di berbagai titik dalam dialog
Menguji kasus pengujian yang direkam sebelumnya
- Pilih Kelola > Kasus Pengujian di menu utama Dialogflow di sebelah kiri.
- Pilih semua kasus pengujian dan tekan tombol Run, di atas tabel.
Dialogflow CX akan menjalankan semua kasus pengujian yang dipilih terhadap rekaman yang disimpan sebagai "Golden Test Case", jika hasilnya sama dengan cara Anda menyimpannya, berarti pengujian telah lulus. - Apakah ada perubahan dalam alur seperti Halaman yang tidak dikonfigurasi dengan benar, atau intent yang mengarahkan Anda ke halaman yang salah, pengujian akan gagal.
- Di simulator, ajukan pertanyaan berikut:
How long will shipping take?
- Perhatikan hasilnya, dan simpan kasus pengujian sebagai
Shipping
dengan tag:#shipping
. - Buka panel Kelola > Kasus Pengujian dan tekan tombol Jalankan di kanan atas petak, untuk menjalankan kasus pengujian
Shipping
saja.
Pengujian ini akan lulus.
- Kembali ke Alur Layanan Pelanggan, pilih Halaman Mulai, lalu klik header Rute.
Tindakan ini akan menampilkan layar dengan petak yang menampilkan semua rute.
- Hapus
redirect.shipping.info route
- Buka panel Kelola > Kasus Pengujian dan tekan tombol Jalankan di kanan atas petak, untuk menjalankan kasus pengujian
Shipping
saja.
Pengujian ini akan gagal.
- Anda dapat mengklik pengujian yang gagal untuk melihat detail kegagalan.
Dalam hal ini, pengujian gagal dengan pesan error di bawah:
Page: Page mismatch:
Expected: Shipping
Actual: Start Page
Alasannya adalah karena halaman tersebut tidak ada lagi dalam alur. Kami mengharapkan Halaman Shipping
, tetapi kami tidak pernah berpindah dari Halaman Start
. (atau pengguna akhir Anda akan menerima pesan penggantian.)
Dengan kata lain, ini adalah permintaan yang terlewat, hasil Pengujian Negatif Palsu. Pengujian gagal. Kami mengharapkan Halaman Pengiriman, tetapi tidak ada yang terjadi, atau pesan penggantian ditampilkan.
- Kembali ke Alur Layanan Pelanggan, dan tambahkan
redirect.shipping.info
sebagai rute intent, ke Halaman Mulai. Jangan lupa untuk beralih ke Halaman Pengiriman dan klik Simpan. - Di simulator, catat kasus pengujian berikut:
I want to swap my item
, simpan kasus pengujian ini sebagaiSwapping
#swapping
. - Buka Kelola >Intent > redirect.refund.info dan tambahkan frasa pelatihan berikut:
I want to swap this item for a refund
Tanpa frasa pelatihan tersebut, saat pengguna meminta untuk mengubah item agar mendapatkan pengembalian dana, intent redirect.swapping.info akan tercapai, tetapi kita tidak ingin memberikan informasi tentang mengubah item, kita ingin memberikan informasi tentang pengembalian dana.
- Buat kasus pengujian emas berikut:
I want to swap this item for a refund
di simulator, dan simpan kasus pengujian ini sebagaiSwap for Refund
#refund
- Kembali ke intent Manage >Intent > redirect.refund.info, lalu hapus baris
I want to swap this item for a refund
. - Kembali ke Kelola > Kasus Pengujian, pilih kasus pengujian Tukar untuk Pengembalian Dana, lalu Jalankan.
Pengujian terakhir Anda gagal, dengan pesan error di bawah:
If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.`
Is there anything else I can help you with?
Page: Page mismatch:
Expected: Refund
Actual: Swapping
Dengan kata lain, ini adalah permintaan yang tidak dipahami, hasil Pengujian Positif Palsu. Pengujian gagal. Kami mengharapkan Halaman Pengembalian Dana, tetapi Halaman Penggantian menjadi aktif.
Cakupan
Di Dialogflow CX, cakupan pengujian adalah ukuran yang digunakan untuk menjelaskan sejauh mana dialog agen virtual (Halaman dan Intent) dieksekusi saat rangkaian pengujian tertentu dijalankan. Agen virtual dengan cakupan pengujian yang tinggi, yang diukur sebagai persentase, memiliki lebih banyak dialog yang dijalankan selama pengujian, yang menunjukkan bahwa agen virtual tersebut memiliki peluang lebih rendah untuk berisi bug yang tidak terdeteksi (seperti permintaan yang tidak dipahami) dibandingkan dengan agen virtual dengan cakupan pengujian yang rendah.
- Untuk melihat laporan cakupan pengujian untuk semua kasus pengujian, klik Cakupan.
- Klik tab Transitions.
Tindakan ini akan menampilkan cakupan pengujian untuk semua transisi halaman.
- Klik tab Intent.
Ini akan menampilkan cakupan pengujian untuk semua intent.
Selamat, sekarang Anda telah membuat dan menguji contoh lengkap bot retailer di dunia nyata. Mari kita buka halaman lab berikutnya untuk membaca kesimpulan dan menemukan beberapa referensi praktis.
10. Kesimpulan
Dialogflow CX adalah Conversational AI Platform (CAIP) untuk membuat agen virtual seperti chatbot atau bot suara. Dialogflow CX mendorong tim Anda untuk mempercepat terciptanya pengalaman percakapan tingkat perusahaan melalui builder bot visual, intent yang dapat digunakan kembali, dan kemampuan untuk menangani percakapan multi-giliran.
Dalam codelab ini, Anda telah mempelajari cara membuat agen virtual retail di dunia nyata. Kami membahas konsep berikut:
- Flows
- Parameter, Entitas Khusus &Sistem
- Jumlah halaman
- Pengendali Status seperti Rute Intent dan Rute Kondisi
- Pesan Fulfillment Statis dan Respons Bersyarat
- Intent pengganti
- Simulator, Kasus Pengujian, dan Cakupan
Referensi
Untuk mempelajari Dialogflow CX lebih lanjut, lihat blog dan dokumentasi berikut.