Dialogflow CX: Membangun agen virtual retail

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.

Hasil Akhir

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:

Hasil Akhir

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.

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 Buat Kredensial
  3. Klik Application Data
  4. Jawab Tidak, saya tidak menggunakannya karena Anda tidak menggunakan Kubernetes Engine, App Engine, atau Cloud Functions untuk saat ini.
  5. Klik Selesai

Menyiapkan Kredensial

Membuat agen Dialogflow CX baru

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

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

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

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

Membuat alur

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

  • Order Process
  • My Order
  • Customer Care

Flows

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

Flows

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.

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

Simulator

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.

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

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

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

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

  1. Di sidebar kiri, klik Manage > Integrations.
  2. Pilih Dialogflow Messenger, lalu klik Connect.
  3. Di pop-up, klik Enable.

Pengaktifan Integrasi

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.

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

Entity Dialogflow

Membuat Entity

Mari kita buat entity Artis.

  1. Klik Manage > Entity Types
  2. 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.)
  1. Klik Simpan

Kita juga memerlukan entitas untuk item Merchandise:

  1. Klik Kelola > Jenis Entity
  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 memerlukan entity untuk Album:

  1. Klik Kelola > Jenis Entity
  2. Klik + Buat
  • Nama Tampilan: Album
  • {i>Entity<i} (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
  • {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
  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
  • Entity: [A-Z]{4}[0-9]{3}
  1. Klik Simpan

Konfigurasi entity Anda akan terlihat seperti berikut:

@Artist: Jenis Entitas @Artist

@Merch: Jenis Entitas @Merch

@Album: Jenis Entitas @Album

@ShirtSize: Jenis Entitas @ShirtSize

@NomorPesanan: @OrderNumber Jenis Entitas

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.

  1. Klik Kelola > Intent.
  2. Klik + Buat

Gunakan detail berikut:

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

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

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: Anita Googler, harus diakui 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 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:

Katalog Halaman yang Terhubung

Mari kita klik tombol ini bersama-sama:

  1. Klik Build > Default Start Flow
  2. Klik Start Page
  3. Klik ikon + di samping Routes
  4. Menambahkan redirect.artists.overview
  5. Scroll ke bawah ke Transisi, lalu bertransisi ke alur Katalog.
  6. Tekan Simpan
  7. 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

Default Welcome Intent

-

Mulai

redirect.artists.overview

Alur: Katalog

Mulai

redirect.product.overview

Alur: Katalog

Mulai

redirect.shirts

Alur: Katalog

Mulai

redirect.music

Alur: Katalog

Mulai

redirect.product

Alur: Katalog

Mulai

redirect.product.of.artist

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

Rute Halaman Awal Default

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:

Halaman yang Terhubung dengan 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.

  1. Klik Build > Catalog
  2. Klik Start Page
  3. Klik ikon + di samping Routes
  4. Tambahkan 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 kita selesaikan alurnya:

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

redirect.artists.overview

Ringkasan Artis

Awal Katalog

redirect.product

Produk

Katalog Mulai

redirect.product.overview

Ringkasan Produk

Awal Katalog

redirect.product.of.artist

Ringkasan Produk

Awal Katalog

redirect.shirts

Kaus

Awal Katalog

redirect.music

Musik

Katalog Mulai

redirect.end

Akhiri Sesi

Awal Katalog

redirect.home

Alur Akhir

Ringkasan Artis

redirect.product.of.artist

Ringkasan Produk

Sekarang, mari kita lanjutkan dan tambahkan fulfillment statis lainnya.

  1. Di alur Katalog, klik halaman Ringkasan Artis.
  2. Klik Edit fulfillment di bagian Entry fulfillment.
  3. 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.
  1. Klik Simpan
  2. Dalam alur Katalog, klik halaman Ringkasan Produk.
  3. Klik Edit fulfillment di bagian Entry fulfillment.
  4. Gunakan fulfillment statis berikut (Agen mengatakan):
  • We sell shirts, music or the tour movie.
  1. 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:

  1. Di Alur Katalog, klik halaman Ringkasan Artis.
  2. Klik + di blok Parameter. Tambahkan parameter artist:
  • Nama Tampilan: artist
  • Jenis Entitas: @Artist
  • Wajib: Centang
  • Menyamarkan di log: Periksa
  1. 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?

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

  1. Scroll ke bawah ke bagian Pengendali peristiwa permintaan ulang.
  2. Klik Tambahkan pengendali peristiwa, lalu pilih peristiwa: No-match default
  3. 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?

  1. Klik Simpan
  2. Klik Tambahkan pengendali peristiwa lalu pilih peristiwa: No-input default
  3. 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?

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

  1. Di halaman Artist Overview, klik ikon + di bagian Routes.
  2. Scroll ke bawah ke bagian Kondisi.
  3. Pilih Minimal satu (ATAU)
  4. Selanjutnya, kita akan menulis ekspresi yang
  • Parameter: $page.params.status
  • Operator: =
  • Nilai: "FINAL"
  1. 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!
  1. Jika kondisinya benar, Anda harus bertransisi ke halaman Ringkasan Produk. Scroll ke bawah ke bagian Transisi dan gunakan halaman berikut: Product Overview
  2. Tekan Simpan.

Parameter

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

  1. 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"
      }
    ]
  ]
}
  1. 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"
            }
          ]
        }
      ]
    ]
  }
  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
  • Fulfillment: Alright! $session.params.merch of $session.params.artist, let's go!
  • Transisi: Halaman: Product
  1. Buat rute saat pengguna mengucapkan "Kemeja"
  • Intent: redirect.shirts
  • Transisi: Halaman: Shirts
  1. Membuat rute saat pengguna mengucapkan "Musik"
  • Intent: redirect.music
  • Transisi: Halaman: Music
  1. 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.

Awal alur Katalog

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:

  1. 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?"
            }
          ]
        }
      ]
    ]
  }
  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 > 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"
            }
          ]
        }
      ]
    ]
  }
  1. Klik pemenuhan entri dan scroll ke bawah ke Preset parameter, setiap kali halaman Shirts aktif, parameter kategori akan ditetapkan 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 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:

  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:
  • Cocok dengan Setiap aturan (AND)
  • 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. Tambahkan Rute Bersyarat:
  • Cocokkan Setiap aturan (DAN)
  • Ekspresi: $session.params.category = "null"
  • Transisi ke halaman baru: Product Overview

Halaman Ukuran Kemeja:

  1. 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"
            }
          ]
        }
      ]
    ]
  }
  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 > 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"
            }
          ]
        }
      ]
    ]
  }
  1. Menambahkan Rute Bersyarat:
  • Cocok dengan Setiap aturan (AND)
  • 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 fulfillment 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 > 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"
            }
          ]
        }
      ]
    ]
  }
  1. Klik fulfillment entri, lalu scroll ke bawah ke Preset parameter. Setiap kali halaman Musik aktif, parameter kategori akan ditetapkan ke music:

Parameter

Nilai

category

music

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

Halaman Operator:

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

merch

@Merch

Wajib, Samarkan di log

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

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

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

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

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

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

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

  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
  • 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 dan else 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.
  1. Klik Halaman Konfirmasi.
  2. 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
  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 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
  1. Pilih Halaman Start, lalu klik intent redirect.end. Buat fulfillment berikut: Thank you for contacting G-Records! Have a nice day!
  2. 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

  1. Buka Alur Layanan Pelanggan, lalu buat transisi intent berikut:

Halaman (Dalam Alur)

Rute > Intent

Rute > Bertransisi Ke

Layanan Pelanggan Dimulai

redirect.shipping.info

Pengiriman

Customer Care Start

redirect.refund.info

Pengembalian Dana

Customer Care Start

redirect.swapping.info

Pertukaran

Layanan Pelanggan Dimulai

redirect.home

Alur Akhir

Layanan Pelanggan Dimulai

redirect.end

Akhiri Sesi

Alur Layanan Pelanggan

  1. 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?
  1. 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?
  1. 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?
  1. Pilih Halaman Start dan klik intent redirect.end. Buat fulfillment berikut: Thank you for contacting G-Records! Have a nice day!
  2. Pilih Halaman Start, 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 harus memilih lingkungan agen dan alur aktif. Dalam sebagian besar kasus, Anda harus menggunakan lingkungan draf dan alur awal 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. Yang dapat Anda temukan di bagian atas simulator (di samping panah ulangi, dan ikon sampah reset)

Alur Layanan Pelanggan

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

Mari kita buat lebih banyak kasus pengujian.

  1. Pertama, hapus dialog saat ini, dengan mengklik ikon Reset (tempat sampah).
  2. 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

  1. Pilih Kelola > Kasus Pengujian di menu utama Dialogflow di sebelah kiri.
  2. 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.

Uji Kasus

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

Pengujian ini akan lulus.

  1. Kembali ke Alur Layanan Pelanggan, 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 dan 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 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.

  1. 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.
  2. Di simulator, catat kasus pengujian berikut: I want to swap my item, simpan kasus pengujian ini sebagai Swapping #swapping.
  3. 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.

  1. Buat kasus pengujian emas berikut: I want to swap this item for a refund di simulator, dan simpan kasus pengujian ini sebagai Swap for Refund #refund
  2. Kembali ke intent Manage >Intent > 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 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.

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

Tindakan ini akan menampilkan cakupan pengujian untuk semua transisi halaman.

Cakupan Transisi

  1. Klik tab Intent.

Ini akan menampilkan cakupan pengujian untuk semua intent.

Cakupan 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

Hasil Akhir

Referensi

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