Dialogflow CX: Membuat agen virtual retail

1. Sebelum memulai

Dalam codelab ini, Anda akan mempelajari cara membangun chatbot retail dengan Dialogflow CX, Platform AI Percakapan (CAIP) untuk membangun UI percakapan. Dialogflow CX dapat menerapkan agen virtual, seperti: chatbot, bot suara, gateway telepon, dan dapat mendukung beberapa saluran dalam lebih dari 50 bahasa yang berbeda.

Codelab ini akan memandu Anda cara membuat chatbot situs untuk retail. Bisnis fiktif yang kami buat chatbot-nya bernama: G-Records. G-Records adalah label rekaman rock yang berbasis di California. Label ini memiliki 4 band rock yang dikontrak; Alice Googler, G's N' Roses, The Goo Fighters, dan The Google Dolls. G-Records menjual merchandise band kepada semua penggemar musik rock.

Di akhir codelab ini, Anda dapat menggunakan chatbot untuk memesan kaus atau musik atau Anda dapat bertanya tentang pesanan Anda.

Hasil Akhir

Yang akan Anda pelajari

Anda akan mempelajari manfaat Dialogflow CX dibandingkan dengan Dialogflow ES dengan melakukannya. Isinya adalah konsep berikut:

  • Cara membuat agen virtual Dialogflow CX dalam Google Cloud
  • Pelajari cara membuat alur
  • Pelajari cara membuat entitas
  • Mempelajari cara membuat maksud (intent)
  • Pelajari cara membuat halaman dan halaman transisi dengan pengendali status
  • Mempelajari cara mentransisikan halaman dengan rute maksud
  • Mempelajari cara melakukan transisi halaman dengan parameter & rute kondisi
  • Pelajari cara menampilkan respons bersyarat dengan fungsi sistem
  • Pelajari cara membuat pesan pengganti
  • Mempelajari cara menggunakan simulator
  • Pelajari cara membuat kasus pengujian & cakupan pengujian

Desain akhir agen Dialogflow CX akan terlihat seperti ini:

Hasil Akhir

Yang Anda butuhkan

  • Anda memerlukan alamat Gmail / Identitas Google 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. Project terdiri dari sekumpulan kolaborator, API yang diaktifkan (dan resource lainnya), alat pemantauan, informasi penagihan, serta kontrol akses dan autentikasi.

Saat membuat project baru, Anda harus memasukkan Nama Project. Selain itu, Anda harus menautkannya ke Akun Penagihan dan Organisasi yang sudah 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 mengetahui informasi selengkapnya, lihat dokumentasi Penagihan. Pastikan penagihan diaktifkan untuk project Cloud Anda.

Membuat project baru

Mengaktifkan Dialogflow API

Untuk menggunakan Dialogflow, Anda harus mengaktifkan Dialogflow API untuk project Anda.

  1. Pilih project yang ingin Anda aktifkan API-nya, lalu klik Lanjutkan.
  2. Ciutkan menu API & Layanan, lalu klik Create Credentials
  3. Klik Data Aplikasi
  4. Ucapkan Tidak, saya tidak menggunakannya karena Anda tidak menggunakan Kubernetes Engine, App Engine, atau Cloud Functions untuk saat ini.
  5. Klik Selesai

Menyiapkan Kredensial

Buat agen Dialogflow CX baru

Untuk membuat agen Dialogflow CX baru, buka terlebih dahulu Konsol Dialogflow CX:

  1. Pilih project Google Cloud yang dibuat sebelumnya.
  2. 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.

Membuat Agen

Baiklah, kita sudah siap. Akhirnya kita dapat mulai memodelkan agen virtual.

3. Flows

Dialog kompleks sering kali melibatkan beberapa topik percakapan. Dalam kasus chatbot yang kami buat untuk G-Records, untuk menjual merchandise band, kami akan memiliki dialog tentang katalog produk, pembayaran, status pesanan, dan pertanyaan layanan pelanggan. Kita dapat membagi topik percakapan ini menjadi alur.

Alur Retail

Alur memungkinkan tim mengerjakan jalur percakapan masing-masing. Praktik yang baik adalah menyederhanakan alur, sehingga mudah ditampilkan di layar dan lebih modular.

Alur adalah konsep baru di Dialogflow CX. Dialogflow Essentials memiliki konsep Mega Agent, yang agak mirip dengan Flows. Namun, Anda akan lebih sering menggunakan Alur.

Nanti di lab ini, kita akan menggunakan state handler yang dapat mengakhiri alur (sehingga akan kembali ke alur berikutnya atau sebelumnya), atau Anda dapat mengakhiri sesi agen sepenuhnya.

Mari kita buat beberapa alur.

Membuat Alur

  1. Di Dialogflow CX, klik ikon + > Create flow.
  2. Tentukan nama: Catalog, lalu tekan enter.

Membuat alur

Alur pertama Anda Katalog telah dibuat. Sekarang buat alur lainnya:

  • Order Process
  • My Order
  • Customer Care

Flows

Nanti dalam lab ini, kita akan menetapkan pengendali status halaman. Hal ini akan memastikan bahwa pada akhirnya visualisasi akan terlihat seperti ini:

Flows

Simulator

Di sisi kanan Konsol Dialogflow CX, Anda dapat menguji agen virtual dengan simulator bawaan. Anda dapat menguji percakapan dari awal percakapan, atau dari alur tertentu.

  1. Klik tombol Test Agent di kanan atas layar.
  2. Di kolom bicara dengan agen, tulis: Hello Agen virtual akan merespons dengan teks sambutan default: Salam! Ada yang bisa kami bantu?

Simulator

Mari kita ubah teks sambutan default ini.

Alur Mulai Default

Mari kita mulai dengan membuat Intent Route yang akan dipicu setelah Anda menyapa agen virtual.

  1. Di sidebar Build > Flows di sebelah kiri, klik Default Start Flow, lalu pilih node pohon Start.

Tindakan ini akan membuka halaman Mulai. Secara otomatis, halaman Start dipilih di bagian sidebar Build > Pages.

  1. Di Start > Routes, klik Default Welcome Intent.

Maksud mengategorikan niat pengguna akhir untuk satu giliran percakapan. Di Dialogflow CX, intent dapat menjadi bagian dari pengendali status untuk merutekan halaman atau pemenuhan aktif berikutnya

  1. Hapus semua entri Agen berkata, 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.

  1. Klik Add dialogue option > Custom payload dan gunakan cuplikan kode di bawah.
  2. Gunakan cuplikan kode di bawah sebagai Payload kustom, lalu klik Simpan.

Untuk membaca selengkapnya tentang Payload kustom, lihat dokumentasi.

{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Which artists?"
            },
            {
              "text": "Which products?"
            },
            {
              "text": "About my order..."
            }
          ]
        }
      ]
    ]
  }

Intent Selamat Datang Default

  1. Lanjutkan dan uji intent sambutan di simulator.

Anda mungkin bertanya-tanya mengapa Anda tidak dapat melihat konten multimedia. Hal ini karena konten multimedia seperti chip saran bergantung pada integrasi. Langkah-langkah berikut memerlukan akun penagihan, tetapi Anda dapat melewatinya jika tidak memilikinya.

  1. Di sidebar kiri, klik Kelola > Integrasi.
  2. Pilih Dialogflow Messenger, lalu klik Connect.
  3. Di jendela pop-up, klik Aktifkan.

Pengaktifan Integrasi

Pop-up lain akan ditampilkan, kali ini dengan kode JavaScript integrasi yang dapat Anda tempelkan di situs untuk mengintegrasikan komponen Dialogflow Messenger di situs Anda. Karena belum memiliki situs, kita akan menguji agen virtual secara langsung di alat ini.

Coba Sekarang Dialogflow Messenger

  1. Klik link Coba Sekarang.
  2. Klik ikon chatbot di kanan bawah untuk membuka jendela chat. Tulis Hello untuk memulai percakapan.

Coba Sekarang Dialogflow Messenger

Untuk saat ini, saat Anda mengklik chip saran, agen virtual tidak akan memahami maksud Anda. Hal ini karena agen virtual kita belum beralih antar-status. Kita dapat melakukannya di Dialogflow CX dengan Halaman. Lanjutkan lab, kita akan membuat beberapa Entitas dan Maksud (Intent) terlebih dahulu.

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 standar yang dapat mencocokkan banyak 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 entity kustom sebelum kita dapat mendesain halaman dalam alur. Kita akan membuat entity berikut:

Entitas Dialogflow

Membuat Entity

Mari buat entity Artist.

  1. Klik Manage > Entity Types
  2. Klik + Buat
  • Nama Tampilan: Artist
  • 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 Opsi lanjutan, lalu centang Pencocokan Fuzzy. (Jika Anda salah mengeja nama band, nama tersebut mungkin masih cocok dengan entitas yang benar.)
  • Di Opsi lanjutan, centang juga Samarkan dalam log. (Jika Anda salah mengeja nama band, nama tersebut akan dikoreksi dalam log.)
  1. Klik Simpan

Kita juga memerlukan entity untuk item Merch:

  1. Klik Manage > Entity Types
  2. Klik + Buat
  • Nama Tampilan: Merch
  • Entitas:
  • T-shirt
  • Longsleeve (dengan sinonim: Longsleeve shirt)
  • Tour Movie
  • Digital Album (dengan sinonim: MP3 Album, MP3)
  • CD (dengan sinonim Disc, Physical CD)
  1. Klik Simpan

Kita juga akan memerlukan entity untuk Album:

  1. Klik Manage > Entity Types
  2. Klik + Buat
  • Nama Tampilan: Album
  • Entitas:
  • Live
  • Greatest Hits (dengan sinonim: Hits)
  1. Klik Simpan

Kita juga memerlukan entity untuk ukuran pakaian:

  1. Klik Manage > Entity Types
  2. Klik + Buat
  • Nama Tampilan: ShirtSize
  • 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
  1. Klik Simpan

Dan entity untuk nomor pesanan, yang biasanya terdiri dari 4 alfanumerik dan 3 angka. (seperti ABCD123)

  1. Klik Manage > Entity Types
  2. Klik + Buat
  • Nama Tampilan: OrderNumber
  • Entity Regexp
  • Entitas: [A-Z]{4}[0-9]{3}
  1. Klik Simpan

Konfigurasi entitas Anda akan terlihat seperti berikut:

@Artis: @Jenis Entitas Artis

@Merch: @Jenis Entitas Merch

@Album: @Jenis Entitas Album

@ShirtSize: Jenis Entity @ShirtSize

@OrderNumber: Jenis Entity @OrderNumber

Setelah entity kustom disiapkan, kita dapat menyiapkan maksud. Mari kita lanjutkan labnya.

5. Intent

Intent mengategorikan maksud pengguna akhir untuk satu giliran percakapan. Fitur ini telah disederhanakan secara signifikan di Dialogflow CX, dan tidak lagi menjadi elemen penyusun untuk kontrol percakapan. Dialogflow CX hanya menggunakan maksud (intent) untuk mencocokkan ucapan pengguna. Di Dialogflow ES, Anda harus mengikat semuanya ke intent (parameter, peristiwa, pemenuhan, dll.). Intent di Dialogflow CX hanya berisi frasa pelatihan dan oleh karena itu dapat digunakan kembali. Gemini tidak lagi mengontrol percakapan. Jadi, proses pembuatan intent akan mudah:

Frasa pelatihan dalam maksud dapat menggunakan Entitas untuk mengekstrak input'variabel'. Oleh karena itu, sebaiknya buat jenis entitas Anda terlebih dahulu, seperti yang kita lakukan di halaman langkah-langkah lab sebelumnya.

Membuat Intent

Mari kita mulai dengan menyiapkan semua maksud sebelum kita dapat mendesain halaman dalam alur.

  1. Klik Manage > Intents.
  2. Klik + Buat.

Gunakan detail berikut:

  • Nama tampilan redirect.artists.overview
  • Deskripsi Artists overview: The bands supported by the label

Niat Baru

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

Frasa latihan

  1. Klik Simpan.
  1. Sekarang, lanjutkan dan buat semua maksud lainnya. Gunakan imajinasi Anda sendiri untuk membuat lebih banyak frasa pelatihan. Praktik terbaiknya adalah memiliki setidaknya 10 frasa pelatihan per maksud untuk mencakup berbagai cara pengguna dapat memicu maksud 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 membuat anotasi entity Anda. Jika tidak, Anda mungkin perlu memperbarui entitas (dengan menambahkan sinonim) atau dengan membuat anotasi frasa pelatihan secara manual.
  • Frasa pelatihan yang lebih pendek: Sistem NLU Dialogflow juga dapat bekerja dengan frasa pelatihan yang lebih pendek dan kami telah memberikan beberapa contoh di sini.
  • Pelatihan berlebihan: Terlalu banyak frasa pelatihan untuk maksud (intent) dapat menyebabkan pelatihan berlebihan dan hasil yang kurang diinginkan. Sebaiknya gunakan pengujian iteratif dan inkremental serta tambahkan frasa pelatihan jika tidak ada maksud yang cocok.

Nama tampilan

Frasa pelatihan

redirect.product.overview

"Which products do you sell?", "What merchandise items do you have?", "What are you selling?", "What are the items?", "Which products?" "What merchandise?", "Please tell me what you have"

confirm.artists.overview

"Yeah, let me buy merchandise", "Yes, I want to purchase something", "Yes, I would like to order merchandise from Alice Googler" (Catatan: Alice Googler, harus dikenali sebagai entitas @Artis!), "Ok, let's buy stuff."

redirect.price

"How much does a t-shirt cost?", "What's the price for the tour movie?", "The album is how much?", "I want to know the price of a longsleeve shirt", "What's the price difference?", "What does each product costs?", "What does it cost?", "What is the price?"

redirect.product

"Tour movie", "I am interested in a t-shirt", "Can I buy a digital album?", "I want the CD", "I want to buy something", "Can I purchase a record?", "I want to buy a t-shirt size M of The Google Dolls", "Can I purchase the Alice Googler digital album?"

redirect.product.of.artist

"Yeah, let's shop", "Give me merch of Alice Googler", "Shirts of The Google Dolls that would be nice.", "Yes", "I want The Goo Fighters stuff", "Yes, I want to order merchandise", "Yep, give me items of G's N' Roses", "Go for it", "Anything Alice Googler", "I am a G's N' Roses fan!", "Google Dolls", "Yes of The Google Dolls"

redirect.shirts

"Shirts", "I want to buy shirts", "I am interested in shirts", "I want a shirt", "Shirts of G's N' Roses please", "Give me shirts of the Google Dolls", "I want to buy shirts of Alice Googler"

redirect.music

"Music", "I want to buy music", "I am interested in music", "Give me music of the Goo Fighters", "Music of Goo Fighters please", "Interested in buying the Alice Googler album", "Purchase Alice Googler music"

redirect.album

"Hits", "Live Album", "I want the Greatest Hits Digital Album", "Give me the Greatest Hits CD", "Hits on MP3"

redirect.shirt.size

"XS", "I have M", "I want Large", "My size is 3XL", "Extra Large is the size"

redirect.my.order

"About my order", "I have a question about my order", "My order is ABCD123, I have a question about my order."

status

redirect.my.order.status

redirect.my.order.canceled

"I want to cancel my order", "I want to cancel order ABCD123", "Please cancel order ABCD123", "Undo my order", "Stop my order", "Cancel"

redirect.shipping.info

"How long will it take?", "How long is shipping?", "How long does shipping take?", "When will I receive it?"

redirect.refund.info

"I want a refund.", "Can I get a refund", "I want to return the CD", "I want to return my t-shirt"

redirect.swapping.info

"I want to swap my item", "Can I change my t-shirt for a larger size?", "Can I change my product?", "I want to swap the CD"

redirect.order.process

"I want to buy a t-shirt of the Google Dolls, size S", "Let me buy the digital CD of Alice Googler", "Get me the tour movie of G's N' Roses", "Buy a longsleeve shirt of The Goo Fighters", "Purchase the Alice Googler t-shirt", "Please order me the Google Dolls CD"

confirm.proceed.order

"Yes", "Yes, please continue", "Yes order", "I want to order", "Yeah", "Yep", "I confirm", "Agree", "Go ahead", "Order", "Buy it", "Purchase", "Okay"

decline.proceed.order

"No", "I rather not", "I don't want it anymore", "Don't order", "Stop", "Not anymore", "Nope", "Go back", "Reset", "Decline", "I don't need it"

redirect.home

"Go back", "Home", "Help", "What else can I ask", "Restart", "Can you tell me what I can order?", "What questions can I ask", "I need help", "Advice please", "Hi", "Hello", "Good day!"

redirect.end

"No that's it, goodbye", "Bye", "Cheers", "End", "That's it", "No more questions", "Exit", "Have a good day", "End Call", "Close"

Setelah elemen yang dapat digunakan kembali (alur, entitas, dan maksud) disiapkan, kita dapat menggabungkannya dengan membuat Halaman dan Handler Status.

6. Halaman & Pengendali Status

Percakapan Dialogflow CX (sesi) dapat dideskripsikan dan divisualisasikan sebagai mesin status terbatas. Ambil contoh mesin penjual otomatis, mesin ini dapat dimodelkan sebagai mesin status terbatas. Game ini memiliki status berikut: Menunggu Koin, Pilih Permen, Beri Permen, dan dengan serangkaian input, game ini akan berpindah antar-status tersebut. Misalnya, memasukkan koin akan memindahkan mesin penjual otomatis dari Menunggu koin ke Pilih Permen. Halaman adalah cara kita dapat memodelkan status ini untuk agen virtual Dialogflow CX.

Saat pengguna akhir berinteraksi dengan Dialogflow CX dalam percakapan, percakapan berpindah dari halaman ke halaman sehingga pada saat tertentu, hanya ada satu halaman yang merupakan halaman saat ini, halaman saat ini dianggap aktif, dan alur yang terkait dengan halaman tersebut juga dianggap aktif.

Untuk setiap Flow, Anda menentukan banyak halaman, tempat gabungan halaman Anda dapat menangani percakapan lengkap tentang topik yang dirancang untuk alur tersebut. 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 pemenuhan (dialog entri statis dan/atau webhook), parameter, dan penangan status. Kontrol percakapan terjadi melalui pengendali status, yang memungkinkan Anda membuat berbagai rute transisi untuk bertransisi ke halaman Dialogflow CX lain, termasuk membuatnya 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.)
  • Pengendali peristiwa: Saat peristiwa penggantian tertentu harus ditangani (misalnya, menangani tidak ada input, tidak ada kecocokan, untuk membedakan pengguna akhir ke rute maksud atau kondisi) (Garis hijau dalam diagram visual.)

Ucapan percakapan (yaitu konten atau respons kembali kepada pengguna) ditentukan oleh pemenuhan, yang dapat berupa statis atau dinamis:

  • Pemenuhan statis: Saat respons pemenuhan statis diberikan
  • Pemenuhan dinamis: Saat webhook pemenuhan dipanggil untuk respons dinamis

Untuk bot retail, kita akan membuat beberapa rute intent dan memberikan beberapa respons pemenuhan entri statis, yang akan ditampilkan kepada pengguna segera setelah halaman diaktifkan. Selanjutnya, kita akan membuat parameter dengan rute kondisi untuk mengumpulkan informasi yang Anda perlukan untuk membuat pesanan merchandise.

Rute Intent Halaman

Membuat halaman di Alur Mulai Default

Berikut adalah diagram alur dari alur mulai default:

Halaman yang Terhubung ke Katalog

Mari kita klik bersama:

  1. Klik Build > Default Start Flow
  2. Klik Halaman Mulai
  3. Klik ikon + di samping Rute
  4. Menambahkan redirect.artists.overview
  5. Scroll ke bawah ke Transisi, lalu lakukan transisi ke alur Katalog.
  6. Klik Simpan.
  7. Ulangi langkah-langkah di atas untuk redirect.product.overview dan 11 baris lainnya dari tabel ini:

Halaman (Dalam Alur)

Routes > Intent

Rute > Beralih Ke

Mulai

Default Welcome Intent

-

Mulai

redirect.artists.overview

Flow: Katalog

Mulai

redirect.product.overview

Flow: Katalog

Mulai

redirect.shirts

Flow: Katalog

Mulai

redirect.music

Flow: Katalog

Mulai

redirect.product

Flow: Katalog

Mulai

redirect.product.of.artist

Flow: Katalog

Mulai

redirect.refund.info

Alur: Layanan Pelanggan

Mulai

redirect.shipping.info

Alur: Layanan Pelanggan

Mulai

redirect.swapping.info

Alur: Layanan Pelanggan

Mulai

redirect.my.order

Alur: Pesanan Saya

Mulai

redirect.my.order.canceled

Alur: Pesanan Saya

Mulai

redirect.my.order.status

Alur: Pesanan Saya

Mulai

redirect.end

Halaman: Akhiri Sesi

Rute Halaman Awal Default

Alur Mulai Default akan berfungsi seperti menu opsi saat memanggil pusat panggilan. Namun, di agen virtual ini, agen dilatih dengan Natural Language, dengan frasa pelatihan dalam maksud (intent). Oleh karena itu, interaksi didorong oleh percakapan, bukan oleh opsi DTMF, dan lebih natural serta menyerupai manusia.

Rute Halaman Awal Default

Membuat halaman di Alur Katalog

Transkrip chat berikut termasuk dalam 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 diagram alir semua halaman dalam alur Katalog:

Halaman yang Terhubung ke 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 t-shirt The Google Dolls", atau "Saya ingin membeli sesuatu". Artinya, agen virtual akan mengajukan pertanyaan lanjutan untuk mengisi slot parameter yang diperlukan ini. Link ini akan langsung membuka Halaman Produk.
  • Dialog Harga berasal dari halaman Harga yang akan digunakan kembali.
  • Meskipun dialog untuk Tour Movie terlihat seperti dialog yang paling sederhana, kita akan melakukan sesuatu yang istimewa dengannya. Kami akan menggunakan kembali bagian dialog ini, sehingga pengguna akhir juga dapat memasukkannya secara 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?"

Pertama, mari kita mulai dengan menghubungkan halaman.

  1. Klik Build > Catalog
  2. Klik Halaman Mulai
  3. Klik ikon + di samping Rute
  4. Menambahkan redirect.artists.overview
  5. Scroll ke bawah ke Transisi, pilih Halaman, lalu pilih: + Halaman baru
  6. Gunakan nama halaman: Artist Overview, lalu klik Simpan

Sekarang, mari selesaikan alur lainnya:

  1. Langkah-langkah sebelumnya dapat diulangi dengan halaman, maksud (intent), dan pemenuhan (fulfillment) berikutnya. Mengambil alih tabel ini. Halaman adalah Halaman yang akan Anda pilih dalam alur, Rute > Beralih Ke adalah alur atau halaman baru yang akan Anda buat dan tuju.

Halaman (Dalam Alur)

Routes > Intent

Rute > Beralih Ke

Mulai Katalog

redirect.artists.overview

Ringkasan Artis

Mulai Katalog

redirect.product

Produk

Mulai Katalog

redirect.product.overview

Ringkasan Produk

Mulai Katalog

redirect.product.of.artist

Ringkasan Produk

Mulai Katalog

redirect.shirts

Kaus

Mulai Katalog

redirect.music

Musik

Mulai Katalog

redirect.end

Akhiri Sesi

Mulai Katalog

redirect.home

Akhiri Flow

Ringkasan Artis

redirect.product.of.artist

Ringkasan Produk

Sekarang, lanjutkan dan tambahkan pemenuhan statis lainnya.

  1. Di alur Katalog, klik halaman Ringkasan Artis.
  2. Klik Edit pemenuhan di bagian Pemenuhan entri.
  3. Gunakan pemenuhan 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.
  1. Klik Simpan
  2. Di alur Katalog, klik halaman Ringkasan Produk.
  3. Klik Edit pemenuhan di bagian Pemenuhan entri.
  4. Gunakan pemenuhan statis berikut (Agent says):
  • We sell shirts, music or the tour movie.
  1. Tekan Simpan.

Parameter Halaman

Parameter digunakan untuk merekam dan mereferensikan nilai yang telah diberikan 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 diisi. Setelah diperlukan, Anda harus memberikan perintah kustom untuk mengingat pengguna akhir Anda, untuk 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 pemenuhan statis kustom di bagian Parameter. Jika parameter wajib diisi, maka pemenuhan parameter ini akan ditampilkan. Pesan respons ini akan ditambahkan ke antrean respons. Selama giliran agen, beberapa pemenuhan dapat dipanggil (dan terkadang diinginkan), yang masing-masing dapat menghasilkan pesan respons. Dialogflow menyimpan respons ini dalam antrean respons. Untuk membaca lebih lanjut siklus proses halaman, dan urutan pemenuhan ini akan ditambahkan ke antrean respons, baca Dokumen Halaman Dialogflow CX.

Membuat parameter di halaman Ringkasan Artis

Mari kita tentukan beberapa parameter halaman:

  1. Di Alur Katalog, klik halaman Ringkasan Artis.
  2. Klik + di blok Parameter. Tambahkan parameter artist:
  • Nama Tampilan: artist
  • Jenis Entitas: @Artist
  • Wajib: Periksa
  • Samarkan di log: Periksa
  1. Sekarang kita akan menambahkan beberapa pesan pemenuhan 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?

  1. Tambahkan 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 berbagai perintah pemenuhan penggantian berdasarkan jumlah percobaan yang dilakukan pengguna akhir untuk menjawabnya. Anda dapat melakukannya dengan pemroses peristiwa parameter. Ada berbagai handler peristiwa bawaan yang dapat dipilih seperti Parameter Tidak Valid, Ucapan terlalu panjang, Tidak ada input, Tidak ada input pada percobaan pertama, Percobaan ke-2, atau Tidak Ada Kecocokan. Perbedaan antara tidak ada input dan tidak ada kecocokan adalah bahwa dengan tidak ada input, pengguna tidak pernah memberikan jawaban, sedangkan dengan tidak ada kecocokan, pengguna memberikan jawaban, tetapi Dialogflow CX tidak dapat mencocokkan maksud ini dengan halaman.

  1. Scroll ke bawah ke bagian Reprompt event handlers.
  2. Klik Tambahkan pengendali peristiwa, lalu pilih peristiwa: No-match default
  3. Gunakan pengisian teks statis text fulfillment 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?

  1. Klik Simpan
  2. Klik Tambahkan pengendali peristiwa, lalu pilih peristiwa: No-input default
  3. Gunakan pengisian teks statis text fulfillment 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?

  1. Klik Simpan

Rute Kondisi Halaman

Parameter sangat efektif jika dikombinasikan dengan Rute Bersyarat Halaman. Saat kondisi bernilai benar (true), rute halaman terkait akan dipanggil. Kondisinya bisa 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 di Dokumentasi Dialogflow CX.

Untuk agen virtual retail kami, kami perlu mengumpulkan serangkaian parameter, sehingga kami perlu membuat kondisi, untuk memeriksa apakah 'formulir' telah diisi. Formulir adalah daftar parameter yang harus dikumpulkan dari pengguna akhir untuk halaman. Agen virtual berinteraksi dengan pengguna akhir untuk beberapa giliran percakapan, hingga mengumpulkan semua parameter formulir yang diperlukan, yang juga dikenal sebagai parameter halaman.

Dialogflow CX secara otomatis menetapkan nilai parameter 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 bersyarat, yang akan bertransisi ke halaman berikutnya, setelah artis diketahui:

  1. Di halaman Ringkasan Artis, klik ikon + di bagian Rute.
  2. Scroll ke bawah ke bagian Kondisi.
  3. Pilih Setidaknya satu (OR)
  4. Selanjutnya, kita akan menulis ekspresi yang
  • Parameter: $page.params.status
  • Operator: =
  • Nilai: "FINAL"
  1. Sekarang, kita akan membuat pesan pemenuhan statis tertentu di rute, yang mengonfirmasi pilihan pengguna akhir. Scroll ke bawah ke blok Pemenuhan dan tulis pesan pemenuhan berikut:
  • $session.params.artist, great choice! Rock on!
  • You want to rock with $session.params.artist merchandise. Awesome!
  1. Jika kondisinya benar, Anda harus beralih ke halaman Product Overview. Scroll ke bawah ke bagian Transisi dan gunakan halaman berikut: Product Overview
  2. Tekan Simpan.

Parameter

Membuat rute di halaman Ringkasan Produk

Sekarang, setelah kita mengetahui cara membuat parameter dan rute bersyarat, mari kita buat lebih banyak parameter untuk halaman berikut:

Ringkasan Produk

  1. Buat parameter artist di Halaman Ringkasan Produk:
  • Nama Tampilan: artist
  • Jenis Entitas: @Artist
  • Wajib: Periksa
  • Samarkan di log: Periksa
  • 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"
      }
    ]
  ]
}
  • Event Handler > 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"
      }
    ]
  ]
}
  • Event Handler > 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"
      }
    ]
  ]
}
  1. Buat parameter merch:
  • Nama Tampilan: merch
  • Jenis Entitas: @Merch
  • Wajib: Periksa
  • Samarkan di log: Periksa
  • Pemenuhan: Which merchandise item do you want?
  • Klik: Tambahkan opsi dialog > Payload kustom:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Shirts"
            },
            {
              "text": "Music"
            },
            {
              "text": "Tour movie"
            }
          ]
        }
      ]
    ]
  }
  • Event Handler > No-match default
  • Pemenuhan Handler 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"
            }
          ]
        }
      ]
    ]
  }
  • Event Handler > No-input default
  • Pemenuhan Handler 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"
            }
          ]
        }
      ]
    ]
  }
  1. Buat rute yang akan bertransisi ke halaman Produk saat artist diberikan dan item merch diberikan.
  • Kondisi:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $session.params.artist != null
  • Ekspresi: $session.params.merch != null
  • Pemenuhan: Alright! $session.params.merch of $session.params.artist, let's go!
  • Transisi: Halaman: Product
  1. Buat rute saat pengguna mengatakan "Kemeja"
  • Intent: redirect.shirts
  • Transisi: Halaman: Shirts
  1. Buat rute saat pengguna mengucapkan "Musik"
  • Intent: redirect.music
  • Transisi: Halaman: Music
  1. Buat rute saat pengguna meminta informasi harga
  • Intent: redirect.price
  • Transisi: Buat Halaman baru: Price

Setelah menetapkan konfigurasi di atas, Anda akan melihat visualisasi yang mirip dengan gambar di bawah. Perhatikan bahwa rute maksud 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.

Awal alur Katalog

Sekarang, Anda telah mempelajari cara membuat Flow, Entitas, Intent, dan Halaman dengan Penangan Status seperti: Rute Intent dan Rute Bersyarat berdasarkan Parameter. Nanti di lab ini, kita akan menggunakan percabangan bersyarat dalam pemenuhan, untuk memberikan dialog yang berbeda berdasarkan input.

Anda dapat menggunakan konfigurasi berikut untuk menyelesaikan agen virtual kami.

Halaman Kaus:

  1. Buat konfigurasi berikut di Halaman Shirts:
  • Pemenuhan entri: Do you want a longsleeve or a t-shirt?
  • Payload kustom pemenuhan entri:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "T-shirt"
            },
            {
              "text": "Longsleeve"
            },
            {
              "text": "Price?"
            }
          ]
        }
      ]
    ]
  }
  1. Buat Rute Intent: redirect.price dengan transisi ke Halaman Price
  2. Buat parameter berikut:
  • Parameter: merch - Jenis Entitas: @Merch, Required, dan Redact in log
  • Parameter > Event Handler > No-match default
  • Parameter > Pemenuhan Handler Peristiwa: You can choose between a t-shirt or a longsleeve. Which of these do you want?
  • Parameter > Payload Kustom Pemenuhan Handler Peristiwa:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "T-shirt"
            },
            {
              "text": "Longsleeve"
            }
          ]
        }
      ]
    ]
  }
  • Parameter > Event Handler > No-input default
  • Parameter > Pemenuhan Handler Peristiwa: I couldn't understand if you want the t-shirt or the longsleeve. Which of these do you want?
  • Parameter > Payload Kustom Pemenuhan Handler Peristiwa:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "T-shirt"
            },
            {
              "text": "Longsleeve"
            }
          ]
        }
      ]
    ]
  }
  1. Klik pemenuhan entri dan scroll ke bawah ke Preset parameter, setiap kali halaman Kemeja aktif, parameter kategori akan disetel ke kemeja:

Parameter

Nilai

category

shirts

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

  1. Buat konfigurasi berikut di Halaman Harga:
  • Pemenuhan entri: PRICE TODO

Karena Anda dapat meminta harga dari berbagai tempat dalam percakapan, Gemini akan selalu memberikan jawaban dan mengalihkan Anda kembali ke bagian dialog sebelumnya untuk melanjutkan pesanan. Ada 5 tempat di pohon dialog tempat Anda dapat bercabang untuk mendapatkan informasi harga. (Kemeja, Ukuran Kemeja, Musik, Ekspedisi, dan juga langsung melalui Rute Intent), jadi kita akan memerlukan beberapa rute bersyarat untuk kembali:

  1. Tambahkan Rute bersyarat:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $session.params.category = "shirts"
  • Ekspresi: $session.params.merch = "null"
  • Transisi ke halaman baru: Shirts
  1. Menambahkan Rute Bersyarat:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $session.params.category = "shirts"
  • Ekspresi: $session.params.size = "null"
  • Transisi ke halaman baru: Shirt Size
  1. Menambahkan Rute Bersyarat:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $session.params.category = "music"
  • Ekspresi: $session.params.album = "null"
  • Transisi ke halaman baru: Music
  1. Menambahkan Rute Bersyarat:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $session.params.category = "music"
  • Ekspresi: $session.params.merch = "null"
  • Transisi ke halaman baru: Carrier
  1. Menambahkan Rute Bersyarat:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $session.params.category = "null"
  • Transisi ke halaman baru: Product Overview

Halaman Ukuran Kaus:

  1. Buat konfigurasi berikut di Halaman Ukuran Baju:
  • Pemenuhan entri: What shirt size do you want?
  • Payload kustom pemenuhan entri:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "XS"
            },
            {
              "text": "S"
            },
            {
              "text": "M"
            },
            {
              "text": "L"
            },
            {
              "text": "XL"
            },
            {
              "text": "2XL"
            },
            {
              "text": "3XL"
            }
          ]
        }
      ]
    ]
  }
  1. Buat Rute intent: redirect.price dengan transisi ke Halaman Price.
  2. Buat parameter berikut:
  • Parameter: shirtsize - Jenis Entitas: @ShirtSize - Required, Redact In Log
  • Parameter > Event Handler > No-match default
  • Parameter > Pemenuhan Handler Peristiwa: Please tell me the shirt size, such as XL.
  • Parameter > Payload Kustom Pemenuhan Handler Peristiwa:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "XS"
            },
            {
              "text": "S"
            },
            {
              "text": "M"
            },
            {
              "text": "L"
            },
            {
              "text": "XL"
            },
            {
              "text": "2XL"
            },
            {
              "text": "3XL"
            }
          ]
        }
      ]
    ]
  }
  • Parameter > Event Handler > No-input default
  • Parameter > Pemenuhan Handler Peristiwa: I couldn't understand the shirt size. What size do you want?
  • Parameter > Payload Kustom Pemenuhan Handler Peristiwa:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "XS"
            },
            {
              "text": "S"
            },
            {
              "text": "M"
            },
            {
              "text": "L"
            },
            {
              "text": "XL"
            },
            {
              "text": "2XL"
            },
            {
              "text": "3XL"
            }
          ]
        }
      ]
    ]
  }
  1. Menambahkan Rute Bersyarat:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $page.params.shirtsize != "null"
  • Transisi ke Halaman: Product

Halaman Musik:

  1. 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 pemenuhan entri:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            },
            {
              "text": "Price?"
            }
          ]
        }
      ]
    ]
  }
  1. Buat Rute Intent: redirect.price dengan transisi ke Halaman: Price.
  2. Buat parameter berikut:
  • Parameter: album - Jenis Entitas: @Album - Required, Redact In Log
  • Parameter > Event Handler > No-match default
  • Parameter > Pemenuhan Handler Peristiwa: You can choose between Greatest Hits and Live Album. Which of these do you want?
  • Parameter > Payload Kustom Pemenuhan Handler Peristiwa:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            }
          ]
        }
      ]
    ]
  }
  • Parameter > Event Handler > No-input default
  • Parameter > Pemenuhan Handler Peristiwa: I couldn't understand if you want the album: Greatest Hit or Live. Which of these do you want?
  • Parameter > Payload Kustom Pemenuhan Handler Peristiwa:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            }
          ]
        }
      ]
    ]
  }
  1. Klik pemenuhan entri dan scroll ke bawah ke Preset parameter. Setiap kali halaman Musik aktif, parameter kategori akan disetel ke musik:

Parameter

Nilai

category

music

  1. Menambahkan Rute Bersyarat:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $page.params.album != "null"
  • Transisi ke Halaman: Carrier

Halaman Operator:

  1. Buat konfigurasi berikut di Halaman Operator:
  • Pemenuhan entri: Do you want this album on CD or MP3?
  • Payload kustom pemenuhan entri:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "CD"
            },
            {
              "text": "MP3"
            },
            {
              "text": "Price?"
            }
          ]
        }
      ]
    ]
  }
  1. Buat Rute intent: redirect.price yang bertransisi ke Halaman Price.
  2. Buat parameter berikut:
  • Parameter: merch - Jenis Entitas: @Merch - Required, Redact In Log
  • Parameter > Event Handler > No-match default
  • Parameter > Pemenuhan Handler Peristiwa: Do you want a physical CD or the digital album?
  • Parameter > Pemenuhan Pengendali Peristiwa: Payload kustom:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "CD"
            },
            {
              "text": "Digital Album"
            }
          ]
        }
      ]
    ]
  }
  • Parameter > Event Handler > No-input default
  • Parameter > Pemenuhan Handler Peristiwa: I couldn't understand if you mean CD or MP3. Which one do you want?
  • Parameter > Pemenuhan Pengendali Peristiwa: Payload kustom:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "CD"
            },
            {
              "text": "MP3"
            }
          ]
        }
      ]
    ]
  }
  1. Menambahkan Rute Bersyarat:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $page.params.merch != "null"
  • Transisi ke Halaman: Product

Halaman Produk:

  1. Buat parameter berikut:

Parameter Displayname

Jenis Entitas Parameter

Pemeriksaan

artist

@Artist

Wajib, Samarkan dalam log

merch

@Merch

Wajib, Samarkan dalam log

  1. Parameter artist memerlukan pemenuhan perintah awal berikut, yang akan ditampilkan saat 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"
      }
    ]
  ]
}
  • Tambahkan juga pengendali peristiwa No-input default dengan pemenuhan: I couldn't understand what you just said. Ask me which artists are signed.
  • Dan pengendali peristiwa No-match default dengan pemenuhan: I missed that. Please ask me which artists are signed.
  1. Parameter merch juga memerlukan handler peristiwa reprompt.
  • Tambahkan pengendali peristiwa No-input default dengan pemenuhan: I couldn't understand what you just said. Which merchandise item do you want?
  • Dan pengendali peristiwa No-match default dengan pemenuhan: I missed that. Which merchandise item do you want?

Rute berikutnya akan bertransisi ke halaman konfirmasi saat artis diketahui dan pengguna memilih "Film Tur".

  1. Menambahkan Rute Bersyarat:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $session.params.artist != null
  • Ekspresi: $session.params.merch = "Tour Movie"
  • Preset Parameter Tambahkan Parameter > price = 25
  • Transisi ke halaman baru: Confirmation

Rute berikutnya akan bertransisi ke halaman konfirmasi saat artis diketahui dan pengguna memilih "T-shirt" serta ukuran kaus dipilih.

  1. Menambahkan Rute Bersyarat:
  • Ekspresi Kustom: $session.params.artist != null AND $session.params.merch = "T-shirt" AND $session.params.shirtsize != null
  • Preset Parameter Tambahkan Parameter > price = 25
  • Transisi ke halaman: Confirmation

Rute berikutnya akan bertransisi ke halaman konfirmasi saat artis diketahui dan pengguna memilih "Longsleeve" serta ukuran kemeja dipilih.

  1. Menambahkan Rute Bersyarat:
  • Ekspresi Kustom: $session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
  • Preset Parameter Tambahkan 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.

  1. Menambahkan Rute Bersyarat:
  • Ekspresi Kustom: $session.params.artist != null AND $session.params.merch = "CD" AND $session.params.album != null
  • Preset Parameter Tambahkan Parameter > price = 15
  • Transisi ke halaman: Confirmation

Rute berikutnya akan bertransisi ke halaman konfirmasi saat artis diketahui dan pengguna memilih "Album Digital" serta nama album dipilih.

  1. Menambahkan Rute Bersyarat:
  • Ekspresi Kustom: $session.params.artist != null AND $session.params.merch = "Digital Album" AND $session.params.album != null
  • Preset Parameter Tambahkan Parameter > price = 10
  • Transisi ke halaman: Confirmation

Selanjutnya, kita akan membuat beberapa kondisi lanjutan dengan perintah yang mendeteksi informasi yang hilang. Rute berikutnya akan bertransisi kembali ke halaman musik saat artis diketahui dan pengguna memilih "CD" atau "Album Digital", tetapi nama album tidak dipilih.

  1. Menambahkan Rute Bersyarat:
  • Ekspresi Kustom: $session.params.artist != null AND ($session.params.merch = "CD" OR $session.params.merch = "Digital Album") AND $session.params.album = null
  • Pemenuhan: I would also need to know which album you would like to buy!
  • Transisi ke halaman: Music

Rute terakhir akan bertransisi ke halaman konfirmasi saat artis diketahui dan pengguna memilih "T-shirt" atau "Longsleeve", tetapi saat ukuran t-shirt tidak dipilih.

  1. 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
  • Pemenuhan: I would also need to know which shirt size you need!
  • Transisi ke halaman: Shirt Size

Di bagian selanjutnya dari lab ini, kita akan menggunakan pemenuhan bersyarat untuk memberikan pesan pemenuhan yang berbeda-beda, bergantung pada inputnya.

7. Respons Bersyarat

Beberapa respons akan menampilkan dialog yang berbeda berdasarkan input. Dialog akan bercabang, dan kami menyebutnya respons bersyarat. Hal ini bisa menjadi menarik, saat Anda tidak menggunakan pemenuhan webhook, yang mana respons bersyarat ditentukan di backend. Contohnya dapat terlihat seperti:

if [condition]
  [response]
elif [condition]
  [response]
elif [condition]
  [response]
else
  [response]
endif
  • Contoh [condition] adalah: $session.params.user-age >= 21. Kode ini menggunakan format yang serupa dengan kondisi dalam rute.
  • [response] mengambil respons teks statis
  • Respons bersyarat selalu dimulai dengan if
  • Blok elif dan else bersifat opsional

Dialogflow CX juga dapat memanfaatkan fungsi sistem bawaan. Misalnya, untuk memformat tanggal atau waktu, atau untuk menampilkan waktu saat ini ($sys.func.NOW())

Mari selesaikan alur Catalog dengan memperbaiki Halaman Confirmation dan Price.

Halaman Konfirmasi:

Sekarang kita akan membuat halaman konfirmasi. Persyaratannya adalah sebagai berikut:

  • Jika merchandise adalah CD atau Album Digital. Kami akan menampilkan kolom berikut dalam konfirmasi: artist, merch, album, dan price.
  • Jika merchandise adalah T-shirt atau Longsleeve. Kami akan menampilkan kolom berikut dalam konfirmasi: artis, merchandise, ukuran, dan harga.
  • Else (dan dengan demikian jika merch adalah Tour Movie). Kami akan menampilkan kolom berikut dalam konfirmasi: artist, merch, dan price.
  1. Klik Halaman Konfirmasi.
  2. Klik Edit Pemenuhan > Respons Agen > opsi Tambahkan dialog > Respons Bersyarat:
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
  1. Create the following Custom payload:
  • Custom payload:
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "Yes, confirm"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}

Next, create two intent routes:

  1. confirm.proceed.order transitions to: Order Process Flow.
  2. decline.proceed.order transitions to End 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.

  1. In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:

Parameter

Value

artist

null

merch

null

shirtsize

null

category

null

album

null

price

null

restart

true

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.

  1. 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..."
            }
          ]
        }
      ]
    ]
  }
  1. 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

Conditional Responses

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

  1. Go to the My Order Flow, and create the following intent transitions:

Page (In Flow)

Routes > Intent

Routes > Transition To

My Order Start

redirect.my.order

My Order

My Order Start

redirect.my.order.status

My Order Status

My Order Start

redirect.my.order.canceled

My Order Cancellation

My Order Start

redirect.end

End Session

My Order Start

redirect.home

End Flow

My Order

redirect.my.order.status

My Order Status

My Order

redirect.my.order.canceled

My Order Cancellation

Default Start Flow

redirect.my.order.canceled

Flow: My Order

Default Start Flow

redirect.my.order.status

Flow: My Order

  1. 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.
  1. 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?
  1. 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?
  1. 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"
      }
    ]
  ]
}
  1. 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"
      }
    ]
  ]
}
  1. 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?
  1. 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?
  1. 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?
  1. 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?
  1. Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"

And:

>"What's the status of order DEFG222"
  1. 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!
  2. 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.

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

  1. Go to Manage > Intents and select the Default Negative Intent.
  2. 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
  1. 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

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

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

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

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

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

  1. Go to the Order Process Flow, and create the following intent transitions:

Page (In Flow)

Routes > Intent

Routes > Transition To

Order Process Start

redirect.end

End Session

Order Process Start

redirect.home

End Flow

Order Process Start

confirm.proceed.order

New Page: Shipping Details

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

firstname

@sys.person

Required

What's your first name?

I'm sorry I missed that. What's the first name?

I'm sorry, I didn't understand. What's the first name?

lastname

@sys.person

Required

What's your last name?

I'm sorry I missed that. What's the last name?

I'm sorry, I didn't understand. What's the last name?

address

@sys.address

Required

What's your address?

I missed that. What's the address?

I'm sorry, I didn't understand. What's the address?

zipcode

@sys.any

Required

What postal code or zipcode do you have?

I'm sorry, what's the zip or postal code? For example: 1234AB or 10001.

I'm sorry, I didn't understand. What's the zip or postal code? For example: 1234AB or 10001.

city

@sys.geo-city

Required

What's the name of the city?

I missed that, what's the name of the city?

I'm sorry, I didn't understand. What's the name of the city?

country

@sys.geo-country

Required

What's the name of the country?

I missed that, what's the name of the country?

I'm sorry, I didn't understand. What's the name of the country?

email

@sys.email

Required

Lastly, what's your email address?

I am sorry. What's the email address? For example name@domain.com.

I am sorry, I didn't understand. What's the email address? For example name@domain.com.

  1. Create the following conditional route:
  • Customize Expression: $page.params.status = "FINAL"
  • Transition to new Page: Payment Details
  1. 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
  1. Buat Rute Intent berikut
  • Intent: confirm.proceed.order
  • Agen Berkata: 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
  1. Pilih Halaman Mulai, lalu klik intent redirect.end. Buat pemenuhan berikut: Thank you for contacting G-Records! Have a nice day!
  2. Pilih Halaman Mulai, lalu klik intent redirect.home. Buat preset parameter berikut: restart = true

Keren! Sekarang kita memiliki chatbot retailer dunia nyata yang berfungsi penuh. Di lab berikutnya, kita akan menguji seberapa baik performa agen virtual.

9. Menguji agen virtual Anda

Anda dapat menggunakan simulator bawaan untuk menguji dialog agen virtual Anda. Keuntungan menguji alur di simulator adalah Anda akan melihat ringkasan alur, halaman, parameter, dan peristiwa (DTMF) yang dikumpulkan simulator saat menelusuri alur Anda. Hal ini membuat pengujian lebih mudah daripada mengujinya secara 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 sangat masuk akal, karena saat Anda memelihara atau mengedit alur dari waktu ke waktu, 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 secara 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 selesaikan terlebih dahulu bagian lainnya dari agen virtual kita:

Membuat Alur Customer Care

  1. Buka Alur Customer Care, lalu buat transisi maksud berikut:

Halaman (Dalam Alur)

Routes > Intent

Rute > Beralih Ke

Mulai Layanan Pelanggan

redirect.shipping.info

Pengiriman

Mulai Layanan Pelanggan

redirect.refund.info

Pengembalian Dana

Mulai Layanan Pelanggan

redirect.swapping.info

Menukar

Mulai Layanan Pelanggan

redirect.home

Akhiri Flow

Mulai Layanan Pelanggan

redirect.end

Akhiri Sesi

Alur Layanan Pelanggan

  1. Buat pemenuhan entri berikut untuk Halaman Pengiriman:
  • Shipping physical merchandise items can take up to 2 weeks.
  • Is there anything else I can help you with?
  1. Buat pemenuhan entri berikut untuk Halaman Pengembalian Dana:
  • 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?
  1. Buat pemenuhan 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?
  1. Pilih Halaman Mulai, lalu klik intent redirect.end. Buat pemenuhan berikut: Thank you for contacting G-Records! Have a nice day!
  2. Pilih Halaman Mulai, lalu klik intent redirect.home. Buat preset parameter berikut: restart = true

Membuat kasus pengujian

  1. Klik tombol Test Agent di sisi kanan layar.

Saat pertama kali membuka simulator, Anda perlu memilih lingkungan agen dan alur aktif. Dalam sebagian besar kasus, Anda harus menggunakan lingkungan draf dan alur mulai default.

  1. Jenis: Hi

Alur Layanan Pelanggan

  1. Tanya: Which artists are signed with your label?
  2. Ucapkan: The Google Dolls
  3. Ucapkan: I am interested in buying a shirt
  4. Ucapkan: A t-shirt
  5. Ucapkan: Medium
  6. Sekarang, klik tombol simpan kasus pengujian. Anda dapat menemukannya di bagian atas simulator (di samping panah ulangi, dan ikon reset tempat sampah)

Alur Layanan Pelanggan

  1. Berikan detail berikut:
  • Nama kasus pengujian: Buy Google Dolls t-shirt size M
  • Tag: #katalog, #kaus, #t-shirt, #TheGoogleDolls
  1. Klik Simpan

Mari buat kasus pengujian lainnya.

  1. Pertama, hapus percakapan saat ini dengan mengklik ikon Reset (tempat sampah).
  2. Buat kasus pengujian berikut:

Beli kaos Alice Googler:

>"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 tindakan 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 grup 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 uji yang direkam sebelumnya

  1. Pilih Kelola > Test Case di menu utama Dialogflow di sebelah kiri.
  2. Pilih semua kasus pengujian dan tekan tombol Jalankan di atas tabel.

Dialogflow CX akan menjalankan semua kasus pengujian yang dipilih terhadap rekaman yang disimpan sebagai "Kasus Pengujian Emas". Jika hasilnya sama dengan cara Anda menyimpannya, pengujian akan lulus. - Jika ada perubahan dalam alur seperti Halaman yang tidak dikonfigurasi dengan benar, atau maksud (intent) yang mengarahkan Anda ke halaman yang salah, maka pengujian akan gagal.

Uji Kasus

  1. Di simulator, ajukan pertanyaan berikut: How long will shipping take?
  2. Catat hasilnya, dan simpan kasus pengujian sebagai Shipping dengan tag: #shipping.
  3. Buka panel Kelola > Kasus Pengujian, lalu tekan tombol Jalankan di kanan atas petak, untuk menjalankan kasus pengujian Shipping saja.

Pengujian ini akan berhasil.

  1. Kembali ke Alur Customer Care, pilih Halaman Mulai, lalu klik header Rute.

Tindakan ini akan menampilkan layar dengan petak yang menampilkan semua rute.

  1. Hapus redirect.shipping.info route
  2. Buka panel Kelola > Kasus Pengujian, lalu tekan tombol Jalankan di kanan atas petak, untuk menjalankan kasus pengujian Shipping saja.

Pengujian ini akan gagal.

  1. 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 keluar dari Halaman Start. (atau pengguna akhir Anda akan menerima pesan pengganti.)

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.

  1. Kembali ke Alur Layanan Pelanggan, dan tambahkan redirect.shipping.info sebagai rute maksud, ke Halaman Mulai. Jangan lupa untuk beralih ke Halaman Pengiriman dan klik Simpan.
  2. Di simulator, rekam kasus pengujian berikut: I want to swap my item, simpan kasus pengujian ini sebagai Swapping #swapping.
  3. Buka Manage >Intents > 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 menukar item agar mendapatkan pengembalian dana, maksudnya akan cocok dengan maksud redirect.swapping.info, tetapi kita tidak ingin memberikan informasi tentang penukaran item, kita ingin memberikan informasi tentang pengembalian dana.

  1. Buat kasus pengujian standar berikut: I want to swap this item for a refund di simulator, lalu simpan kasus pengujian ini sebagai Swap for Refund #refund
  2. Kembali ke maksud Manage >Intents > redirect.refund.info, lalu hapus baris I want to swap this item for a refund.
  3. Kembali ke Kelola > Kasus Pengujian, pilih kasus pengujian Tukar dengan Pengembalian Dana, lalu Jalankan.

Pengujian terbaru 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 salah dipahami, hasil pengujian Positif Palsu. Pengujian gagal. Kami mengharapkan Halaman Pengembalian Dana, tetapi Halaman Penukaran menjadi aktif.

Cakupan

Di Dialogflow CX, cakupan pengujian adalah ukuran yang digunakan untuk mendeskripsikan tingkat pelaksanaan dialog agen virtual (Halaman dan Maksud) saat rangkaian pengujian tertentu dijalankan. Agen virtual dengan cakupan pengujian yang tinggi, yang diukur sebagai persentase, telah menjalankan lebih banyak dialognya selama pengujian, yang menunjukkan bahwa agen tersebut memiliki peluang lebih rendah untuk berisi bug yang tidak terdeteksi (seperti permintaan yang salah dipahami) dibandingkan dengan agen virtual dengan cakupan pengujian yang rendah.

  1. Untuk melihat laporan cakupan pengujian untuk semua kasus pengujian, klik Cakupan.
  2. Klik tab Transisi.

Tindakan ini akan menampilkan cakupan pengujian untuk semua transisi halaman.

Cakupan Transisi

  1. Klik tab Intents.

Tindakan ini akan menampilkan cakupan pengujian untuk semua maksud.

Cakupan Intent

Selamat, sekarang Anda telah membuat dan menguji contoh bot retailer lengkap di dunia nyata. Buka halaman lab berikutnya untuk membaca kesimpulan dan menemukan beberapa referensi berguna.

10. Kesimpulan

Dialogflow CX adalah Platform AI Percakapan (CAIP) untuk membuat agen virtual seperti bot chat atau suara. Dialogflow CX memungkinkan tim Anda mempercepat pembuatan pengalaman percakapan tingkat perusahaan melalui builder bot visual, intent yang dapat digunakan kembali, dan kemampuan untuk menangani percakapan multi-turn.

Dalam codelab ini, Anda telah mempelajari cara membuat agen virtual retail dunia nyata. Kami membahas konsep berikut:

  • Flows
  • Parameter, Entity Kustom & Sistem
  • Halaman
  • State Handler seperti Rute Maksud dan Rute Kondisi
  • Pesan Pemenuhan Statis dan Respons Bersyarat
  • Intent pengganti
  • Simulator, Kasus Pengujian, dan Cakupan

Hasil Akhir

Referensi

Untuk mempelajari lebih lanjut Dialogflow CX, lihat blog dan dokumentasi berikut.