1. Trước khi bắt đầu
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách tạo chatbot bán lẻ bằng Dialogflow CX, một Nền tảng AI đàm thoại (CAIP) để tạo giao diện người dùng đàm thoại. Dialogflow CX có thể triển khai các nhân viên hỗ trợ ảo, chẳng hạn như: chatbot, bot thoại, cổng điện thoại và có thể hỗ trợ nhiều kênh bằng hơn 50 ngôn ngữ.
Lớp học lập trình này sẽ hướng dẫn bạn cách tạo chatbot cho trang web của một nhà bán lẻ. Doanh nghiệp hư cấu mà chúng ta đang xây dựng chatbot có tên là: G-Records. G-Records là một hãng nhạc rock có trụ sở tại California. Hãng nhạc này đã ký hợp đồng với 4 ban nhạc rock: Alice Googler, G's N' Roses, The Goo Fighters và The Google Dolls. G-Records đang bán hàng hoá của ban nhạc cho tất cả người hâm mộ nhạc rock.
Khi kết thúc lớp học lập trình này, bạn có thể sử dụng chatbot để đặt áo phông hoặc nhạc hoặc bạn có thể hỏi về đơn đặt hàng của mình.
Kiến thức bạn sẽ học được
Bạn sẽ tìm hiểu các lợi ích của Dialogflow CX so với Dialogflow ES bằng cách thực hành! Trong đó có các khái niệm sau:
- Cách tạo nhân viên hỗ trợ ảo Dialogflow CX trong Google Cloud
- Tìm hiểu cách tạo flow
- Tìm hiểu cách tạo thực thể
- Tìm hiểu cách tạo ý định
- Tìm hiểu cách tạo trang và chuyển đổi trang bằng trình xử lý trạng thái
- Tìm hiểu cách chuyển đổi trang bằng tuyến ý định
- Tìm hiểu cách chuyển đổi trang bằng các tham số và tuyến điều kiện
- Tìm hiểu cách trả về phản hồi có điều kiện bằng các hàm hệ thống
- Tìm hiểu cách tạo thông báo dự phòng
- Tìm hiểu cách sử dụng trình mô phỏng
- Tìm hiểu cách tạo trường hợp kiểm thử và phạm vi kiểm thử
Thiết kế cuối cùng của nhân viên hỗ trợ CX Dialogflow sẽ có dạng như sau:
Bạn cần có
- Bạn cần có địa chỉ Google Identity / Gmail để tạo một nhân viên hỗ trợ Dialogflow CX.
- Quyền truy cập vào Google Cloud.
2. Thiết lập môi trường
Tạo dự án trên Google Cloud
Vì Dialogflow CX chạy trong Google Cloud, nên bạn phải tạo một dự án Google Cloud. Dự án sắp xếp tất cả tài nguyên của bạn trên Google Cloud. Tài khoản này bao gồm một nhóm cộng tác viên, các API đã bật (và các tài nguyên khác), công cụ giám sát, thông tin thanh toán, cũng như các chế độ kiểm soát truy cập và xác thực.
Khi tạo dự án mới, bạn cần nhập Project Name (Tên dự án). Ngoài ra, bạn sẽ phải liên kết tài khoản đó với một Tài khoản thanh toán và Tổ chức hiện có.
Tài khoản thanh toán được dùng để xác định người thanh toán cho một nhóm tài nguyên nhất định và có thể được liên kết với một hoặc nhiều dự án. Mức sử dụng dự án sẽ được tính vào tài khoản thanh toán được liên kết. Trong hầu hết các trường hợp, bạn sẽ định cấu hình thông tin thanh toán khi tạo dự án. Để biết thêm thông tin, hãy xem tài liệu về việc thanh toán. Đảm bảo bạn đã bật tính năng thanh toán cho dự án trên Cloud.
Bật Dialogflow API
Để sử dụng Dialogflow, bạn sẽ phải bật API Dialogflow cho dự án của mình.
- Chọn dự án mà bạn muốn bật API, rồi nhấp vào Tiếp tục.
- Thu gọn trình đơn API và Dịch vụ rồi nhấp vào Tạo thông tin xác thực
- Nhấp vào Dữ liệu ứng dụng
- Nói Không, tôi không sử dụng các dịch vụ đó vì hiện tại bạn không sử dụng Kubernetes Engine, App Engine hoặc Cloud Functions.
- Nhấp vào Xong
Tạo một nhân viên hỗ trợ Dialogflow CX mới
Để tạo một nhân viên hỗ trợ CX mới trên Dialogflow, trước tiên, hãy mở Bảng điều khiển CX của Dialogflow:
- Chọn dự án Google Cloud đã tạo trước đó.
- Nhấp vào Tạo tác nhân.
Hoàn tất biểu mẫu để cài đặt các chế độ cơ bản cho nhân viên hỗ trợ:
- Bạn có thể chọn bất kỳ tên hiển thị nào.
- Chọn vị trí: us-central1
- Chọn múi giờ bạn muốn.
- Chọn en – Tiếng Anh làm ngôn ngữ mặc định
Nhấp vào Tạo.
Được rồi, chúng ta đã hoàn tất. Cuối cùng, chúng ta có thể bắt đầu lập mô hình cho trợ lý ảo.
3. Luồng
Hộp thoại phức tạp thường liên quan đến nhiều chủ đề trò chuyện. Trong trường hợp của chatbot mà chúng ta đang xây dựng cho G-Records để bán hàng hoá của ban nhạc, chúng ta sẽ có các hộp thoại về danh mục sản phẩm, phương thức thanh toán, trạng thái đơn đặt hàng và câu hỏi về dịch vụ chăm sóc khách hàng. Chúng ta có thể chia các chủ đề trò chuyện này thành luồng.
Luồng cho phép các nhóm làm việc trên từng lộ trình trò chuyện. Bạn nên đơn giản hoá luồng để luồng này dễ dàng vừa với màn hình và có tính mô-đun hơn.
Flow (Luồng) là một khái niệm mới đối với Dialogflow CX. Dialogflow Essentials có khái niệm Mega Agent (Nhân viên hỗ trợ dự án lớn) tương tự như Flow (Luồng). Tuy nhiên, bạn sẽ sử dụng Flow thường xuyên hơn nhiều.
Trong phần sau của lớp học này, chúng ta sẽ sử dụng trình xử lý trạng thái có thể kết thúc một luồng (vì vậy, luồng sẽ quay lại luồng tiếp theo hoặc luồng trước đó) hoặc bạn có thể kết thúc toàn bộ phiên của tác nhân.
Hãy cùng tạo một số flow.
Tạo Flow
- Trong Dialogflow CX, hãy nhấp vào biểu tượng + > Tạo luồng.
- Chỉ định tên:
Catalog
rồi nhấn enter.
Danh mục luồng đầu tiên của bạn đã được tạo. Bây giờ, hãy tạo các flow khác:
Order Process
My Order
Customer Care
Trong phần sau của lớp học lập trình này, chúng ta sẽ thiết lập trình xử lý trạng thái trang. Điều này sẽ đảm bảo rằng cuối cùng, hình ảnh trực quan sẽ có dạng như sau:
Trình mô phỏng
Ở bên phải của Dialogflow CX Console, bạn có thể kiểm thử nhân viên hỗ trợ ảo bằng trình mô phỏng tích hợp sẵn. Bạn có thể kiểm thử cuộc trò chuyện từ đầu cuộc trò chuyện hoặc từ một luồng cụ thể.
- Nhấp vào nút Test Agent (Trình tác vụ kiểm thử) ở trên cùng bên phải màn hình.
- Trong trường trò chuyện với nhân viên hỗ trợ, hãy viết:
Hello
Nhân viên hỗ trợ ảo sẽ phản hồi bằng văn bản chào mừng mặc định: Xin chào! Tôi có thể hỗ trợ gì cho bạn?
Hãy sửa đổi văn bản chào mừng mặc định này.
Quy trình bắt đầu mặc định
Hãy bắt đầu bằng cách tạo một Tuyến ý định sẽ được kích hoạt sau khi bạn chào nhân viên hỗ trợ ảo.
- Trong thanh bên Build > Flows (Tạo > Luồng) ở bên trái, hãy nhấp vào Default Start Flow (Luồng bắt đầu mặc định) rồi chọn nút cây Start (Bắt đầu).
Thao tác này sẽ mở trang Bắt đầu. Thao tác này sẽ tự động chọn trang Bắt đầu trong phần thanh bên Build > Pages (Tạo > Trang).
- Trong Start (Bắt đầu) > Routes (Tuyến), hãy nhấp vào Default Welcome Intent (Ý định chào mừng mặc định).
Ý định phân loại ý định của người dùng cuối cho một lượt trò chuyện. Trong Dialogflow CX, ý định có thể là một phần của trình xử lý trạng thái để định tuyến trang hoặc phương thức thực hiện đang hoạt động tiếp theo
- Xoá tất cả mục Nhân viên hỗ trợ nói rồi thêm văn bản mới sau:
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?
Để đơn giản hoá cuộc trò chuyện, chúng ta cũng cần một số nút trả lời nhanh / khối đề xuất.
- Nhấp vào Add dialogue option > Custom payload (Thêm tuỳ chọn hộp thoại > Gói tải tuỳ chỉnh) rồi sử dụng đoạn mã bên dưới.
- Sử dụng đoạn mã bên dưới làm Gói dữ liệu tuỳ chỉnh rồi nhấn Lưu.
Để đọc thêm về Gói tải tuỳ chỉnh, hãy xem tài liệu.
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Hãy tiếp tục kiểm thử ý định chào mừng trong trình mô phỏng.
Có thể bạn đang thắc mắc tại sao không thấy nội dung đa dạng thức nào. Điều này là do nội dung đa dạng thức (chẳng hạn như khối đề xuất) phụ thuộc vào một tính năng tích hợp. Các bước sau đây yêu cầu bạn phải có tài khoản thanh toán, nhưng bạn có thể bỏ qua các bước này nếu không có tài khoản thanh toán.
- Trong thanh bên trái, hãy nhấp vào Quản lý > Tích hợp.
- Chọn Dialogflow Messenger rồi nhấp vào Connect (Kết nối).
- Trong cửa sổ bật lên, hãy nhấp vào Bật.
Một cửa sổ bật lên khác sẽ xuất hiện, lần này là mã JavaScript tích hợp mà bạn có thể dán vào trang web của mình để tích hợp thành phần Messenger của Dialogflow trên trang web. Vì chưa có trang web nên chúng ta sẽ kiểm thử trực tiếp trợ lý ảo trong công cụ này.
- Nhấp vào đường liên kết Dùng thử ngay.
- Nhấp vào biểu tượng chatbot ở dưới cùng bên phải để mở cửa sổ trò chuyện. Viết
Hello
để bắt đầu cuộc trò chuyện.
Hiện tại, khi bạn nhấp vào khối đề xuất, nhân viên hỗ trợ ảo sẽ không hiểu ý bạn. Lý do là vì trợ lý ảo của chúng ta chưa chuyển đổi giữa các trạng thái. Chúng ta có thể thực hiện việc này trong Dialogflow CX bằng Trang. Hãy tiếp tục lớp học này, trước tiên, chúng ta sẽ tạo một số Thực thể và Ý định.
4. Loại thực thể
Loại thực thể được dùng để kiểm soát cách trích xuất dữ liệu từ dữ liệu đầu vào của người dùng cuối. Các loại thực thể Dialogflow CX rất giống với các loại thực thể Dialogflow ES. Dialogflow cung cấp các thực thể hệ thống được xác định trước có thể khớp với nhiều loại dữ liệu phổ biến. Ví dụ: có các thực thể hệ thống để so khớp ngày, giờ, màu sắc, địa chỉ email, v.v. Bạn cũng có thể tạo các thực thể tuỳ chỉnh của riêng mình để so khớp dữ liệu tuỳ chỉnh.
Hãy bắt đầu bằng cách chuẩn bị tất cả các thực thể tuỳ chỉnh trước khi chúng ta có thể thiết kế các trang trong một luồng. Chúng ta sẽ tạo các thực thể sau:
Tạo thực thể
Hãy tạo một thực thể Nghệ sĩ.
- Nhấp vào Quản lý > Loại thực thể
- Nhấp vào + Tạo
- Tên hiển thị:
Artist
- Các thực thể:
The Google Dolls
(có từ đồng nghĩa:Google Dolls
)The Goo Fighters
(có từ đồng nghĩa:Goo Fighters
)G's N' Roses
(có từ đồng nghĩa:Gs and Roses
)Alice Googler
- Nhấp vào Tuỳ chọn nâng cao rồi đánh dấu vào So khớp không chính xác. (Nếu bạn đánh vần sai tên ban nhạc, hệ thống vẫn có thể so khớp tên đó với thực thể phù hợp.)
- Trong phần Tuỳ chọn nâng cao, hãy đánh dấu vào Xoá trong nhật ký. (Nếu bạn đánh sai chính tả tên ban nhạc, ứng dụng sẽ sửa tên trong nhật ký.)
- Nhấp vào Lưu
Chúng ta cũng cần một thực thể cho mục Merch (Hàng hoá):
- Nhấp vào Quản lý > Loại thực thể
- Nhấp vào + Tạo
- Tên hiển thị:
Merch
- Các thực thể:
T-shirt
Longsleeve
(có từ đồng nghĩa:Longsleeve shirt
)Tour Movie
Digital Album
(có từ đồng nghĩa:MP3 Album
,MP3
)CD
(có từ đồng nghĩaDisc
,Physical CD
)
- Nhấp vào Lưu
Chúng ta cũng cần một thực thể cho Album:
- Nhấp vào Quản lý > Loại thực thể
- Nhấp vào + Tạo
- Tên hiển thị:
Album
- Các thực thể:
Live
Greatest Hits
(có từ đồng nghĩa:Hits
)
- Nhấp vào Lưu
Chúng ta cũng cần một thực thể cho kích thước quần áo:
- Nhấp vào Quản lý > Loại thực thể
- Nhấp vào + Tạo
- Tên hiển thị:
ShirtSize
- Các thực thể:
XS
(có từ đồng nghĩa:Extra Small
)S
(có từ đồng nghĩa:Small
)M
(có từ đồng nghĩa:Medium
)L
(có từ đồng nghĩa:Large
)XL
(có từ đồng nghĩa:Extra Large
)2XL
(có từ đồng nghĩa:Extra Extra Large
)3XL
- Nhấp vào Lưu
Và một thực thể cho số thứ tự, thường là 4 chữ cái và 3 chữ số. (chẳng hạn như ABCD123)
- Nhấp vào Quản lý > Loại thực thể
- Nhấp vào + Tạo
- Tên hiển thị:
OrderNumber
- Thực thể Regexp
- Thực thể: [A-Z]{4}[0-9]{3}
- Nhấp vào Lưu
Cấu hình thực thể của bạn sẽ có dạng như sau:
@Artist:
@Merch:
@Album:
@ShirtSize:
@OrderNumber:
Sau khi chuẩn bị các thực thể tuỳ chỉnh, chúng ta có thể chuẩn bị ý định. Hãy tiếp tục lớp học này.
5. Ý định
Ý định phân loại ý định của người dùng cuối cho một lượt trò chuyện. Chúng đã được đơn giản hoá đáng kể trong Dialogflow CX, không còn là một khối xây dựng để kiểm soát cuộc trò chuyện nữa. Dialogflow CX chỉ sử dụng ý định để so khớp với nội dung người dùng đang nói. Trong Dialogflow ES, bạn phải liên kết mọi thứ với một ý định (tham số, sự kiện, phương thức thực hiện, v.v.). Ý định trong Dialogflow CX chỉ chứa cụm từ huấn luyện và do đó có thể sử dụng lại. Ứng dụng này không còn kiểm soát cuộc trò chuyện nữa. Vì vậy, quy trình tạo ý định sẽ rất đơn giản:
Các cụm từ huấn luyện trong ý định có thể sử dụng Thực thể để trích xuất dữ liệu đầu vào "biến". Đó là lý do bạn nên tạo trước các loại thực thể, như chúng ta đã làm ở trang trước trong các bước của lớp học lập trình.
Tạo ý định
Hãy bắt đầu bằng cách chuẩn bị tất cả ý định trước khi chúng ta có thể thiết kế các trang trong một luồng.
- Nhấp vào Quản lý > Ý định.
- Nhấp vào + Tạo
Hãy sử dụng các thông tin sau:
- Tên hiển thị
redirect.artists.overview
- Nội dung mô tả
Artists overview: The bands supported by the label
Di chuyển xuống rồi tạo các cụm từ huấn luyện sau:
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
- Nhấp vào Lưu.
- Bây giờ, hãy tiếp tục và tạo tất cả các ý định khác. Hãy vận dụng trí tưởng tượng của riêng bạn để tạo ra nhiều cụm từ huấn luyện hơn. Tốt nhất là bạn nên có ít nhất 10 cụm từ huấn luyện cho mỗi ý định để bao gồm nhiều cách mà người dùng có thể kích hoạt ý định đó. Đối với mục đích của lớp học lập trình này, bạn cũng có thể sử dụng ít hơn.
Một số điều cần lưu ý:
- Xin lưu ý rằng khi bạn nhập cụm từ huấn luyện, Dialogflow CX sẽ tự động chú thích các thực thể của bạn. Nếu không, bạn có thể cần cập nhật thực thể (bằng cách thêm từ đồng nghĩa) hoặc tự chú thích cụm từ huấn luyện theo cách thủ công.
- Cụm từ huấn luyện ngắn hơn: Hệ thống NLU của Dialogflow cũng có thể hoạt động với các cụm từ huấn luyện ngắn hơn. Chúng tôi đã cung cấp một số ví dụ tại đây.
- Tập luyện quá mức: Quá nhiều cụm từ huấn luyện cho một ý định có thể khiến hệ thống huấn luyện quá mức và cho kết quả không mong muốn. Tốt nhất bạn nên sử dụng phương pháp kiểm thử lặp lại và gia tăng, đồng thời thêm các cụm từ huấn luyện trong trường hợp không có ý định nào được so khớp.
Tên hiển thị | Cụm từ huấn luyện |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Giờ đây, khi các phần tử có thể sử dụng lại (luồng, thực thể và ý định) đã được chuẩn bị, chúng ta có thể kết hợp các phần tử này bằng cách tạo Trang và Trình xử lý trạng thái.
6. Trang và Trình xử lý trạng thái
Bạn có thể mô tả và hình dung một cuộc trò chuyện CX trên Dialogflow (một phiên) dưới dạng máy trạng thái hữu hạn. Lấy máy bán hàng tự động làm ví dụ, máy này có thể được mô hình hoá dưới dạng một máy trạng thái hữu hạn. Trạng thái này có các trạng thái sau: Chờ tiền xu, Chọn kẹo, Đưa kẹo và khi được cung cấp một tập hợp dữ liệu đầu vào, trạng thái này sẽ di chuyển giữa các trạng thái đó. Ví dụ: việc chèn một đồng xu sẽ chuyển máy bán hàng tự động từ trạng thái Đang chờ tiền xu sang trạng thái Chọn kẹo. Trang là cách chúng ta có thể lập mô hình các trạng thái này cho một nhân viên hỗ trợ ảo CX của Dialogflow.
Khi người dùng cuối tương tác với Dialogflow CX trong một cuộc trò chuyện, cuộc trò chuyện sẽ di chuyển từ trang này sang trang khác. Vì vậy, tại bất kỳ thời điểm nào, chỉ có một trang là trang hiện tại, trang hiện tại được coi là đang hoạt động và luồng liên kết với trang đó cũng được coi là đang hoạt động.
Đối với mỗi Luồng, bạn xác định nhiều trang, trong đó các trang kết hợp có thể xử lý một cuộc trò chuyện hoàn chỉnh về(các) chủ đề mà luồng được thiết kế. Mỗi luồng đều có một trang bắt đầu đặc biệt. Khi một luồng bắt đầu hoạt động, trang bắt đầu sẽ trở thành trang hiện tại. Đối với mỗi lượt trò chuyện, trang hiện tại sẽ giữ nguyên hoặc chuyển sang một trang khác. Khái niệm này sẽ cho phép bạn tạo các trợ lý lớn hơn với nhiều trang và nhiều lượt trò chuyện.
Các trang chứa thực hiện (hộp thoại nhập tĩnh và/hoặc webhook), tham số và trình xử lý trạng thái. Việc kiểm soát cuộc trò chuyện diễn ra thông qua trình xử lý trạng thái, cho phép bạn tạo nhiều tuyến chuyển đổi để chuyển đổi sang một trang CX khác của Dialogflow, bao gồm cả việc tạo tuyến có điều kiện (để phân nhánh cuộc trò chuyện).
Trạng thái của cuộc trò chuyện được kiểm soát bằng cách xử lý các lượt chuyển đổi giữa các trang bằng 3 loại tuyến khác nhau:
- Tuyến ý định: Thời điểm so khớp ý định (ví dụ: thay đổi trang dựa trên nội dung người dùng cuối nói). (Đường màu xanh dương trong sơ đồ trực quan.)
- Đường dẫn điều kiện: Thời điểm cần kiểm tra một điều kiện (ví dụ: thay đổi trang dựa trên một số tham số nhất định được lưu trữ trong phiên) (Đường màu cam trong sơ đồ trực quan.)
- Trình xử lý sự kiện: Khi cần xử lý một sự kiện dự phòng nhất định (ví dụ: xử lý không có dữ liệu đầu vào, không khớp để phân biệt người dùng cuối với một ý định hoặc tuyến điều kiện) (Các đường màu xanh lục trong sơ đồ trực quan.)
Nội dung trò chuyện (tức là nội dung hoặc phản hồi trả về cho người dùng) được xác định bằng phương thức thực hiện, có thể là tĩnh hoặc động:
- Thực hiện tĩnh: Khi hệ thống cung cấp phản hồi thực hiện tĩnh
- Thực hiện động: Khi một webhook thực hiện được gọi để phản hồi động
Đối với bot bán lẻ, chúng ta sẽ tạo một số tuyến ý định và cung cấp một số phản hồi thực hiện mục nhập tĩnh. Các phản hồi này sẽ được hiển thị cho người dùng ngay khi một trang được kích hoạt. Sau đó, chúng ta sẽ tạo các thông số bằng các tuyến điều kiện để thu thập thông tin bạn cần để tạo đơn đặt hàng hàng hoá.
Tuyến đường theo ý định trên trang
Tạo các trang trong Quy trình bắt đầu mặc định
Dưới đây là sơ đồ quy trình của quy trình bắt đầu mặc định:
Hãy cùng nhấp vào nút này:
- Nhấp vào Build (Tạo) > Default Start Flow (Luồng bắt đầu mặc định)
- Nhấp vào Trang bắt đầu
- Nhấp vào biểu tượng + bên cạnh Tuyến
- Thêm redirect.artists.overview
- Di chuyển xuống mục Chuyển đổi rồi chuyển sang quy trình Danh mục.
- Nhấn vào Lưu
- Lặp lại các bước trên cho
redirect.product.overview
và 11 hàng khác trong bảng này:
Trang (Trong luồng) | Routes (Tuyến đường) > Intent (Ý định) | Routes (Tuyến) > Transition To (Chuyển đổi đến) |
Bắt đầu |
| - |
Bắt đầu |
| Quy trình: Danh mục |
Bắt đầu |
| Quy trình: Danh mục |
Bắt đầu |
| Quy trình: Danh mục |
Bắt đầu |
| Quy trình: Danh mục |
Bắt đầu |
| Quy trình: Danh mục |
Bắt đầu |
| Quy trình: Danh mục |
Bắt đầu |
| Quy trình: Chăm sóc khách hàng |
Bắt đầu |
| Quy trình: Chăm sóc khách hàng |
Bắt đầu |
| Quy trình: Chăm sóc khách hàng |
Bắt đầu |
| Quy trình: Đơn đặt hàng của tôi |
Bắt đầu |
| Quy trình: Đơn đặt hàng của tôi |
Bắt đầu |
| Quy trình: Đơn đặt hàng của tôi |
Bắt đầu |
| Trang: Kết thúc phiên |
Quy trình bắt đầu mặc định sẽ hoạt động như một trình đơn tuỳ chọn khi gọi đến trung tâm cuộc gọi. Tuy nhiên, trong nhân viên hỗ trợ ảo này, nó được huấn luyện bằng Ngôn ngữ tự nhiên, với các cụm từ huấn luyện trong ý định. Do đó, hoạt động tương tác được điều khiển bằng cuộc trò chuyện chứ không phải bằng các tuỳ chọn DTMF, đồng thời hoạt động này tự nhiên và giống con người hơn.
Tạo các trang trong Quy trình tạo danh mục
Bản chép lời trò chuyện sau đây thuộc quy trình Danh mục:
> "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?"
Hộp thoại sẽ khác khi bạn chọn Nhạc hoặc Phim lưu diễn: Đối với Nhạc, hộp thoại sẽ có dạng như sau:
> "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?"
Đối với Tour Movie, hộp thoại sẽ có dạng như sau:
> "Tour Movie"
"The Tour Movie of G's N' Roses costs $25. Shall I continue to order?
Dưới đây là sơ đồ quy trình của tất cả các trang trong quy trình Danh mục:
Hãy lưu ý độ phức tạp của luồng này:
- Tôi có thể bỏ qua câu hỏi về nghệ sĩ và hỏi ngay "Bạn có mặt hàng nào không?".
- Trong quy trình bắt đầu mặc định, tôi có thể hỏi: "Tôi muốn mua áo thun The Google Dolls" hoặc "Tôi muốn mua một thứ gì đó". Điều này có nghĩa là nhân viên hỗ trợ ảo sẽ đặt câu hỏi tiếp theo để điền vào các vị trí cho các tham số bắt buộc này. Thao tác này sẽ chuyển thẳng đến Trang sản phẩm.
- Hộp thoại Giá đến từ trang Giá sẽ được sử dụng lại.
- Mặc dù có vẻ như đây là đoạn hội thoại đơn giản nhất cho Phim lưu diễn, nhưng chúng ta sẽ thực sự làm điều gì đó đặc biệt với đoạn hội thoại này. Chúng ta sẽ sử dụng lại phần này của hộp thoại, vì vậy, người dùng cuối cũng có thể nhập trực tiếp thông tin này cho một trong các sản phẩm khác, nếu họ chuyên biệt hoá tất cả thông tin cùng một lúc:
> "I want The Goo Fighters longsleeve size S."
"The longsleeve of The Goo Fighters size S costs $30. Shall I continue to order?"
Trước tiên, hãy bắt đầu bằng cách kết nối các trang.
- Nhấp vào Build > Catalog (Tạo > Danh mục)
- Nhấp vào Trang bắt đầu
- Nhấp vào biểu tượng + bên cạnh Tuyến
- Thêm redirect.artists.overview
- Di chuyển xuống phần Chuyển đổi, chọn Trang rồi chọn: + Trang mới
- Sử dụng tên trang:
Artist Overview
rồi nhấn vào Lưu
Bây giờ, hãy hoàn tất phần còn lại của quy trình:
- Bạn có thể lặp lại các bước trước đó với các trang, ý định và phương thức thực hiện sau. Kiểm soát bảng này. Trang là Trang mà bạn sẽ chọn trong luồng, Tuyến > Chuyển đổi đến là luồng hoặc trang mới mà bạn sẽ tạo và chuyển đổi đến.
Trang (Trong luồng) | Routes (Tuyến đường) > Intent (Ý định) | Routes (Tuyến) > Transition To (Chuyển đổi đến) |
Bắt đầu danh mục |
| Tổng quan về nghệ sĩ |
Bắt đầu danh mục |
| Sản phẩm |
Bắt đầu danh mục |
| Tổng quan về sản phẩm |
Bắt đầu danh mục |
| Tổng quan về sản phẩm |
Bắt đầu danh mục |
| Áo |
Bắt đầu danh mục |
| Âm nhạc |
Bắt đầu danh mục |
| Kết thúc phiên |
Bắt đầu danh mục |
| Kết thúc luồng |
Tổng quan về nghệ sĩ |
| Tổng quan về sản phẩm |
Bây giờ, hãy tiếp tục và thêm các phương thức thực hiện tĩnh khác.
- Trong quy trình Danh mục, hãy nhấp vào trang Tổng quan về nghệ sĩ.
- Nhấp vào Chỉnh sửa phương thức thực hiện trong phần Thực hiện mục nhập.
- Sử dụng các phương thức thực hiện tĩnh sau (Nhân viên hỗ trợ nói):
The following bands are signed with G-Records: Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
- Nhấp vào Lưu
- Trong quy trình của danh mục, hãy nhấp vào trang Tổng quan về sản phẩm.
- Nhấp vào Chỉnh sửa phương thức thực hiện trong phần Thực hiện mục nhập.
- Sử dụng phương thức thực hiện tĩnh sau (Nhân viên hỗ trợ nói):
We sell shirts, music or the tour movie.
- Nhấp vào Lưu.
Thông số trang
Thông số được dùng để ghi lại và tham chiếu các giá trị do người dùng cuối cung cấp trong một phiên. Mỗi tham số có một tên và một loại thực thể. @Artist
và @Merch
là các thông số tối thiểu mà chúng ta cần thu thập để tạo đơn đặt hàng hàng hoá. Đối với áo thun hoặc áo dài tay, bạn cũng nên thu thập @ShirtSize
và trong trường hợp muốn đặt nhạc, bạn cũng cần có tên @Carrier
và @Album
.
Bạn cần đánh dấu các tham số đó là bắt buộc. Và khi cần, bạn nên cung cấp lời nhắc tuỳ chỉnh để ghi nhớ người dùng cuối, cung cấp câu trả lời chính xác để có thể thu thập các tham số này. Có một số cơ chế trong Dialogflow CX có thể giúp bạn giải quyết vấn đề này.
Ví dụ: bạn có thể cung cấp thông báo thực hiện tĩnh tuỳ chỉnh trong mục Thông số. Nếu tham số là bắt buộc, thì các phương thức thực hiện tham số này sẽ xuất hiện. Những thông báo phản hồi này sẽ được thêm vào hàng đợi phản hồi. Trong lượt của một nhân viên hỗ trợ, bạn có thể (và đôi khi nên) gọi nhiều phương thức thực hiện, mỗi phương thức có thể tạo một thông báo phản hồi. Dialogflow duy trì các phản hồi này trong một hàng đợi phản hồi. Để đọc thêm về vòng đời của trang và thứ tự các phương thức thực hiện này sẽ được thêm vào hàng đợi phản hồi, hãy đọc Tài liệu về trang CX Dialogflow.
Tạo thông số trên trang Tổng quan về nghệ sĩ
Hãy xác định một số thông số trang:
- Trong quy trình Danh mục, hãy nhấp vào trang Tổng quan về nghệ sĩ.
- Nhấp vào dấu + trong khối Parameters (Tham số). Thêm tham số artist:
- Tên hiển thị:
artist
- Loại thực thể:
@Artist
- Bắt buộc: Đánh dấu vào ô
- Loại bỏ trong nhật ký: Đánh dấu vào
- Bây giờ, chúng ta sẽ thêm một số thông báo thực hiện thông số tuỳ chỉnh. Nếu tham số artist chưa được nhân viên hỗ trợ ảo thu thập, thì người dùng cuối sẽ nhận được phản hồi của nhân viên hỗ trợ này được thêm vào hàng đợi phản hồi:
From which of these artists would you like to order merchandise?
- Thêm một tuỳ chọn hộp thoại thứ hai cung cấp các khối đề xuất đa dạng. Nhấp vào Thêm tuỳ chọn hộp thoại rồi sử dụng mã sau (ở định dạng JSON):
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
Bạn có thể xử lý các lời nhắc thực hiện dự phòng khác nhau dựa trên số lần người dùng cuối cố gắng trả lời các lời nhắc này. Bạn sẽ thực hiện việc này bằng trình xử lý sự kiện tham số. Có nhiều trình xử lý sự kiện tích hợp sẵn để bạn lựa chọn, chẳng hạn như Thông số không hợp lệ, Cụm từ quá dài, Không có dữ liệu đầu vào, Không có dữ liệu đầu vào trong lần thử đầu tiên, Lần thử thứ hai hoặc Không khớp. Sự khác biệt giữa không có dữ liệu đầu vào và không có kết quả trùng khớp là khi không có dữ liệu đầu vào, người dùng chưa bao giờ cung cấp câu trả lời, còn khi không có kết quả trùng khớp, người dùng đã cung cấp câu trả lời nhưng Dialogflow CX không thể so khớp ý định này với một trang.
- Di chuyển xuống phần Trình xử lý sự kiện nhắc lại.
- Nhấp vào Thêm trình xử lý sự kiện rồi chọn sự kiện:
No-match default
- Sử dụng thực hiện văn bản tĩnh sau đây cho sự kiện:
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?
- Nhấp vào Lưu
- Nhấp vào Thêm trình xử lý sự kiện rồi chọn sự kiện:
No-input default
- Sử dụng thực hiện văn bản tĩnh sau đây cho sự kiện:
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?
- Nhấp vào Lưu
Tuyến đường điều kiện trang
Tham số rất mạnh mẽ khi kết hợp với Tuyến đường có điều kiện của trang. Khi một điều kiện đánh giá là đúng, tuyến trang được liên kết sẽ được gọi. Một điều kiện có thể là Một tham số bằng một giá trị cụ thể hoặc Không được thiếu một tham số hoặc Một biểu mẫu đã hoàn tất và nhiều điều kiện khác. Bạn có thể tìm thêm thông tin về Tham số và Điều kiện trong Tài liệu về trải nghiệm khách hàng của Dialogflow.
Đối với nhân viên hỗ trợ ảo trong ngành bán lẻ, chúng ta cần thu thập một chuỗi tham số, do đó, chúng ta cần tạo một điều kiện để kiểm tra xem "biểu mẫu" đã được hoàn tất hay chưa. Biểu mẫu là danh sách các thông số cần thu thập từ người dùng cuối cho trang. Nhân viên hỗ trợ ảo tương tác với người dùng cuối trong nhiều lượt trò chuyện cho đến khi thu thập được tất cả các tham số bắt buộc của biểu mẫu, còn gọi là tham số trang.
Dialogflow CX tự động đặt các giá trị tham số do người dùng cuối cung cấp trong quá trình điền thông tin vào biểu mẫu. Để kiểm tra xem biểu mẫu đầy đủ của trang hiện tại đã được điền hay chưa, hãy sử dụng điều kiện sau: $page.params.status = "FINAL"
Tạo các tuyến có điều kiện trên trang Tổng quan về nghệ sĩ
Hãy tạo một tuyến có điều kiện sẽ chuyển sang trang tiếp theo sau khi biết nghệ sĩ:
- Trên trang Artist Overview (Tổng quan về nghệ sĩ), hãy nhấp vào biểu tượng + trong mục Routes (Tuyến).
- Di chuyển xuống phần Tình trạng.
- Chọn Ít nhất một (HOẶC)
- Tiếp theo, chúng ta sẽ viết một biểu thức
- Tham số:
$page.params.status
- Toán tử:
=
- Giá trị:
"FINAL"
- Bây giờ, chúng ta sẽ tạo một thông báo thực hiện tĩnh cụ thể trên tuyến, xác nhận lựa chọn của người dùng cuối. Di chuyển xuống khối Fulfillment (Thực hiện) rồi viết các thông báo thực hiện sau:
$session.params.artist, great choice! Rock on!
You want to rock with $session.params.artist merchandise. Awesome!
- Khi điều kiện này là đúng, bạn nên chuyển sang trang Tổng quan về sản phẩm. Di chuyển xuống phần Chuyển đổi và sử dụng trang sau:
Product Overview
- Nhấp vào Lưu.
Tạo tuyến trên trang Tổng quan về sản phẩm
Giờ đây, chúng ta đã biết cách tạo tham số và tuyến có điều kiện, hãy tạo thêm tham số cho các trang sau:
Tổng quan về sản phẩm
- Tạo tham số
artist
trong trang Tổng quan về sản phẩm:
- Tên hiển thị:
artist
- Loại thực thể:
@Artist
- Bắt buộc: Đánh dấu vào ô
- Loại bỏ trong nhật ký: Đánh dấu vào
- Thực hiện lời nhắc ban đầu:
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"
}
]
]
}
- Trình xử lý sự kiện >
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?
- Trọng tải tuỳ chỉnh:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Trình xử lý sự kiện >
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?
- Trọng tải tuỳ chỉnh:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Tạo tham số
merch
:
- Tên hiển thị:
merch
- Loại thực thể:
@Merch
- Bắt buộc: Đánh dấu vào ô
- Loại bỏ trong nhật ký: Đánh dấu vào
- Thực hiện đơn hàng:
Which merchandise item do you want?
- Nhấp vào: Add dialogue option > Custom payload (Thêm tuỳ chọn hộp thoại > Gói tải tuỳ chỉnh):
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Trình xử lý sự kiện >
No-match default
- Thực hiện trình xử lý sự kiện:
We sell Shirts, Music or the Tour movie. Which of these items do you want?
- Trọng tải tuỳ chỉnh:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Trình xử lý sự kiện >
No-input default
- Thực hiện trình xử lý sự kiện:
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?
- Trọng tải tuỳ chỉnh:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Tạo một tuyến sẽ chuyển đến trang Sản phẩm khi
artist
được cung cấp và mụcmerch
được cung cấp.
- Điều kiện:
- Đối sánh mọi quy tắc (AND)
- Biểu thức:
$session.params.artist != null
- Biểu thức:
$session.params.merch != null
- Thực hiện đơn hàng:
Alright! $session.params.merch of $session.params.artist, let's go!
- Chuyển đổi: Trang:
Product
- Tạo một tuyến đường khi người dùng nói "Áo sơ mi"
- Ý định: redirect.shirts
- Chuyển đổi: Trang:
Shirts
- Tạo một tuyến đường khi người dùng nói "Nhạc"
- Ý định: redirect.music
- Chuyển đổi: Trang:
Music
- Tạo một tuyến đường khi người dùng yêu cầu thông tin về giá
- Ý định: redirect.price
- Chuyển đổi: Tạo trang mới:
Price
Khi thiết lập cấu hình ở trên, bạn sẽ thấy một hình ảnh trực quan tương tự như hình bên dưới. Xin lưu ý rằng các tuyến ý định có màu xanh dương trong sơ đồ và các tuyến điều kiện có màu cam. Mặc dù không được mô tả, nhưng trình xử lý sự kiện có màu xanh lục và khi nhiều loại tuyến chuyển đổi sang một trang, dòng sẽ có màu xám.
Đến đây, bạn đã tìm hiểu cách tạo Flow, Thực thể, Ý định và Trang bằng Trình xử lý trạng thái như: Tuyến ý định và Tuyến có điều kiện dựa trên Thông số. Trong phần sau của lớp học lập trình này, chúng ta sẽ sử dụng tính năng phân nhánh có điều kiện trong quá trình thực hiện để cung cấp nhiều cuộc trò chuyện dựa trên dữ liệu đầu vào.
Bạn có thể sử dụng các cấu hình sau để hoàn tất nhân viên hỗ trợ ảo của chúng tôi.
Trang áo sơ mi:
- Tạo các cấu hình sau trong trang Áo sơ mi:
- Thực hiện mục nhập:
Do you want a longsleeve or a t-shirt?
- Trọng tải tuỳ chỉnh để thực hiện mục nhập:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
},
{
"text": "Price?"
}
]
}
]
]
}
- Tạo Đường dẫn theo ý định:
redirect.price
với hiệu ứng chuyển đổi đến TrangPrice
- Tạo tham số sau:
- Thông số:
merch
– Loại thực thể:@Merch
,Required
vàRedact in log
- Thông số > Trình xử lý sự kiện >
No-match default
- Thông số > Thực hiện trình xử lý sự kiện:
You can choose between a t-shirt or a longsleeve. Which of these do you want?
- Thông số > Trọng tải tuỳ chỉnh của phương thức thực hiện trình xử lý sự kiện:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Thông số > Trình xử lý sự kiện >
No-input default
- Thông số > Thực hiện trình xử lý sự kiện:
I couldn't understand if you want the t-shirt or the longsleeve. Which of these do you want?
- Thông số > Trọng tải tuỳ chỉnh của phương thức thực hiện trình xử lý sự kiện:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Nhấp vào phương thức thực hiện mục nhập rồi di chuyển xuống phần Thông số đặt trước. Mỗi khi trang Áo sơ mi hoạt động, thông số danh mục sẽ được đặt thành shirts:
Tham số | Giá trị |
|
|
- Thêm Tuyến có điều kiện:
- Khớp với ít nhất một quy tắc (HOẶC)
- Biểu thức:
$session.params.merch = "T-shirt"
- Biểu thức:
$session.params.merch = "Longsleeve"
- Chuyển đổi sang trang mới:
Shirt Size
Trang giá:
Vì thông báo về giá sẽ phụ thuộc vào mặt hàng hoặc danh mục hàng hoá đã chọn (nhạc hoặc áo sơ mi), nên chúng ta sẽ khắc phục phần này sau trong lớp học lập trình. Hiện tại, bạn chỉ cần nhập một phần giữ chỗ là đủ.
- Tạo các cấu hình sau trong Trang Giá:
- Thực hiện mục nhập:
PRICE TODO
Vì bạn có thể yêu cầu giá ở nhiều vị trí trong cuộc trò chuyện, nên bot phải luôn trả lời bạn và chuyển bạn trở lại phần trước của cuộc trò chuyện để tiếp tục đặt hàng. Có 5 vị trí trong cây hộp thoại mà bạn có thể phân nhánh để nhận thông tin về giá. (Áo, Kích thước áo, Nhạc, Nhà mạng và cũng trực tiếp thông qua Tuyến theo ý định), do đó, chúng ta sẽ cần một số tuyến có điều kiện để quay lại:
- Thêm một Tuyến có điều kiện:
- Đối sánh mọi quy tắc (AND)
- Biểu thức:
$session.params.category = "shirts"
- Biểu thức:
$session.params.merch = "null"
- Chuyển đổi sang trang mới:
Shirts
- Thêm Tuyến có điều kiện:
- Đối sánh mọi quy tắc (AND)
- Biểu thức:
$session.params.category = "shirts"
- Biểu thức:
$session.params.size = "null"
- Chuyển đổi sang trang mới:
Shirt Size
- Thêm Tuyến có điều kiện:
- Đối sánh mọi quy tắc (AND)
- Biểu thức:
$session.params.category = "music"
- Biểu thức:
$session.params.album = "null"
- Chuyển đổi sang trang mới:
Music
- Thêm Tuyến có điều kiện:
- Đối sánh mọi quy tắc (AND)
- Biểu thức:
$session.params.category = "music"
- Biểu thức:
$session.params.merch = "null"
- Chuyển đổi sang trang mới:
Carrier
- Thêm Tuyến có điều kiện:
- Đối sánh mọi quy tắc (AND)
- Biểu thức:
$session.params.category = "null"
- Chuyển đổi sang trang mới:
Product Overview
Trang Kích thước áo sơ mi:
- Tạo các cấu hình sau trong trang Kích thước áo sơ mi:
- Thực hiện mục nhập:
What shirt size do you want?
- Trọng tải tuỳ chỉnh để thực hiện mục nhập:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Tạo Tuyến ý định:
redirect.price
với hiệu ứng chuyển đổi đến TrangPrice
. - Tạo tham số sau:
- Tham số:
shirtsize
– Loại thực thể:@ShirtSize
–Required
,Redact In Log
- Thông số > Trình xử lý sự kiện >
No-match default
- Thông số > Thực hiện trình xử lý sự kiện:
Please tell me the shirt size, such as XL.
- Thông số > Trọng tải tuỳ chỉnh của phương thức thực hiện trình xử lý sự kiện:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Thông số > Trình xử lý sự kiện >
No-input default
- Thông số > Thực hiện trình xử lý sự kiện:
I couldn't understand the shirt size. What size do you want?
- Thông số > Trọng tải tuỳ chỉnh của phương thức thực hiện trình xử lý sự kiện:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Thêm Tuyến có điều kiện:
- Đối sánh mọi quy tắc (AND)
- Biểu thức:
$page.params.shirtsize != "null"
- Chuyển đổi sang trang:
Product
Trang nhạc:
- Tạo các cấu hình sau trong trang Âm nhạc:
- Thực hiện mục nhập:
We have a Greatest Hits Album or the Live Album. Which one do you want?
- Trọng tải tuỳ chỉnh để thực hiện mục nhập:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
},
{
"text": "Price?"
}
]
}
]
]
}
- Tạo Đường dẫn theo ý định:
redirect.price
với chuyển đổi đến Trang:Price
. - Tạo tham số sau:
- Tham số:
album
– Loại thực thể:@Album
–Required
,Redact In Log
- Thông số > Trình xử lý sự kiện >
No-match default
- Thông số > Thực hiện trình xử lý sự kiện:
You can choose between Greatest Hits and Live Album. Which of these do you want?
- Thông số > Trọng tải tuỳ chỉnh của phương thức thực hiện trình xử lý sự kiện:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Thông số > Trình xử lý sự kiện >
No-input default
- Thông số > Thực hiện trình xử lý sự kiện:
I couldn't understand if you want the album: Greatest Hit or Live. Which of these do you want?
- Thông số > Trọng tải tuỳ chỉnh của phương thức thực hiện trình xử lý sự kiện:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Nhấp vào mục thực hiện mục nhập rồi di chuyển xuống phần Thông số đặt trước. Mỗi khi trang Music hoạt động, tham số danh mục sẽ được đặt thành music:
Tham số | Giá trị |
|
|
- Thêm Tuyến có điều kiện:
- Đối sánh mọi quy tắc (AND)
- Biểu thức:
$page.params.album != "null"
- Chuyển đổi sang trang:
Carrier
Trang nhà mạng:
- Tạo các cấu hình sau trong Trang Nhà mạng:
- Thực hiện mục nhập:
Do you want this album on CD or MP3?
- Trọng tải tuỳ chỉnh để thực hiện mục nhập:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
},
{
"text": "Price?"
}
]
}
]
]
}
- Tạo Đường dẫn theo ý định:
redirect.price
chuyển đổi sang TrangPrice
. - Tạo tham số sau:
- Tham số:
merch
– Loại thực thể:@Merch
–Required
,Redact In Log
- Thông số > Trình xử lý sự kiện >
No-match default
- Thông số > Thực hiện trình xử lý sự kiện:
Do you want a physical CD or the digital album?
- Thông số > Thực hiện trình xử lý sự kiện: Gói dữ liệu tuỳ chỉnh:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "Digital Album"
}
]
}
]
]
}
- Thông số > Trình xử lý sự kiện >
No-input default
- Thông số > Thực hiện trình xử lý sự kiện:
I couldn't understand if you mean CD or MP3. Which one do you want?
- Thông số > Thực hiện trình xử lý sự kiện: Gói dữ liệu tuỳ chỉnh:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
}
]
}
]
]
}
- Thêm Tuyến có điều kiện:
- Đối sánh mọi quy tắc (AND)
- Biểu thức:
$page.params.merch != "null"
- Chuyển đổi sang trang:
Product
Trang sản phẩm:
- Tạo các tham số sau:
Tên hiển thị của thông số | Loại thực thể thông số | Kiểm tra |
|
| Bắt buộc, Xoá trong nhật ký |
|
| Bắt buộc, Xoá trong nhật ký |
- Tham số artist cần có phương thức thực hiện lời nhắc ban đầu sau đây. Phương thức này sẽ xuất hiện khi không xác định được nghệ sĩ.
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"
}
]
]
}
- Ngoài ra, hãy thêm trình xử lý sự kiện
No-input default
có phương thức thực hiện:I couldn't understand what you just said. Ask me which artists are signed.
- Và trình xử lý sự kiện
No-match default
có phương thức thực hiện:I missed that. Please ask me which artists are signed.
- Thông số merch cũng cần có trình xử lý sự kiện nhắc lại.
- Thêm trình xử lý sự kiện
No-input default
có phương thức thực hiện:I couldn't understand what you just said. Which merchandise item do you want?
- Và trình xử lý sự kiện
No-match default
có phương thức thực hiện:I missed that. Which merchandise item do you want?
Tuyến tiếp theo sẽ chuyển đến trang xác nhận khi người dùng biết nghệ sĩ và chọn "Tour Movie" (Video nhạc).
- Thêm Tuyến có điều kiện:
- Đối sánh mọi quy tắc (AND)
- Biểu thức:
$session.params.artist != null
- Biểu thức:
$session.params.merch = "Tour Movie"
- Tự đặt tham số Thêm tham số >
price = 25
- Chuyển đổi sang trang mới:
Confirmation
Tuyến tiếp theo sẽ chuyển đến trang xác nhận khi người dùng chọn một "Áo phông" và chọn kích thước áo.
- Thêm Tuyến có điều kiện:
- Biểu thức tuỳ chỉnh:
$session.params.artist != null AND $session.params.merch = "T-shirt" AND $session.params.shirtsize != null
- Tự đặt tham số Thêm tham số >
price = 25
- Chuyển đổi sang trang:
Confirmation
Tuyến tiếp theo sẽ chuyển sang trang xác nhận khi người dùng chọn một nghệ sĩ, "Áo dài tay" và kích thước áo.
- Thêm Tuyến có điều kiện:
- Biểu thức tuỳ chỉnh:
$session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
- Tự đặt tham số Thêm tham số >
price = 30
- Chuyển đổi sang trang:
Confirmation
Tuyến tiếp theo sẽ chuyển sang trang xác nhận khi người dùng chọn một "CD" và tên đĩa nhạc cũng được chọn.
- Thêm Tuyến có điều kiện:
- Biểu thức tuỳ chỉnh:
$session.params.artist != null AND $session.params.merch = "CD" AND $session.params.album != null
- Tự đặt tham số Thêm tham số >
price = 15
- Chuyển đổi sang trang:
Confirmation
Tuyến tiếp theo sẽ chuyển sang trang xác nhận khi người dùng biết nghệ sĩ và chọn "Digital Album" (Album kỹ thuật số) và tên album.
- Thêm Tuyến có điều kiện:
- Biểu thức tuỳ chỉnh:
$session.params.artist != null AND $session.params.merch = "Digital Album" AND $session.params.album != null
- Tự đặt tham số Thêm tham số >
price = 10
- Chuyển đổi sang trang:
Confirmation
Tiếp theo, chúng ta sẽ tạo một số điều kiện nâng cao với lời nhắc phát hiện thông tin bị thiếu. Tuyến tiếp theo sẽ chuyển về trang nhạc khi người dùng biết nghệ sĩ và chọn "CD" hoặc "Đĩa nhạc kỹ thuật số" nhưng chưa chọn tên đĩa nhạc.
- Thêm Tuyến có điều kiện:
- Biểu thức tuỳ chỉnh:
$session.params.artist != null AND ($session.params.merch = "CD" OR $session.params.merch = "Digital Album") AND $session.params.album = null
- Thực hiện đơn hàng:
I would also need to know which album you would like to buy!
- Chuyển đổi sang trang:
Music
Và tuyến cuối cùng sẽ chuyển sang trang xác nhận khi người dùng chọn một "Áo phông" hoặc "Áo dài tay", nhưng chưa chọn kích thước áo phông.
- Thêm một Tuyến có điều kiện:
- Biểu thức tuỳ chỉnh:
$session.params.artist != null AND ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve") AND $session.params.shirtsize = null
- Thực hiện đơn hàng:
I would also need to know which shirt size you need!
- Chuyển đổi sang trang:
Shirt Size
Trong phần tiếp theo của lớp học này, chúng ta sẽ sử dụng phương thức thực hiện có điều kiện để đưa ra các thông báo thực hiện khác nhau tuỳ thuộc vào dữ liệu đầu vào.
7. Phản hồi có điều kiện
Một số câu trả lời sẽ trả về một hộp thoại khác dựa trên dữ liệu đầu vào. Các hộp thoại sẽ phân nhánh, chúng ta gọi đây là câu trả lời có điều kiện. Điều này có thể trở nên thú vị khi bạn không sử dụng phương thức thực hiện webhook, trong đó các phản hồi có điều kiện được xác định ở phần phụ trợ. Ví dụ:
if [condition]
[response]
elif [condition]
[response]
elif [condition]
[response]
else
[response]
endif
- Ví dụ về [condition] có thể là:
$session.params.user-age >= 21
. Hàm này sử dụng định dạng tương tự như các điều kiện trong tuyến. - [response] nhận phản hồi văn bản tĩnh
- Phản hồi có điều kiện luôn bắt đầu bằng
if
- Bạn không bắt buộc phải sử dụng các khối
elif
vàelse
Dialogflow CX cũng có thể sử dụng các hàm hệ thống tích hợp sẵn. Ví dụ: để định dạng ngày hoặc giờ hoặc để hiển thị thời gian hiện tại ($sys.func.NOW()
)
Hãy hoàn tất quy trình Danh mục bằng cách sửa Trang Xác nhận và Trang Giá.
Trang xác nhận:
Bây giờ, chúng ta sẽ tạo trang xác nhận. Phương thức này có các yêu cầu sau:
- Nếu hàng hoá là CD hoặc Album kỹ thuật số. Chúng tôi sẽ hiển thị các trường sau trong thông báo xác nhận: artist (nghệ sĩ), merch (hàng hoá), album (album) và price (giá).
- Nếu hàng hoá là Áo thun hoặc Áo dài tay. Chúng tôi sẽ hiển thị các trường sau trong thông báo xác nhận: artist (nghệ sĩ), merch (hàng hoá), size (kích thước) và price (giá).
- Nếu không (và do đó nếu merch là Tour Movie). Chúng tôi sẽ hiển thị các trường sau trong thông báo xác nhận: nghệ sĩ, hàng hoá và giá.
- Nhấp vào Trang Xác nhận.
- Nhấp vào Chỉnh sửa phương thức thực hiện > Câu trả lời của nhân viên hỗ trợ > tuỳ chọn Thêm cuộc trò chuyện > Câu trả lời có điều kiện:
if ($session.params.merch = "CD" OR $session.params.merch = "Digital Album")
The $session.params.merch: $session.params.artist - $session.params.album costs $$session.params.price. Shall I continue to order?
elif ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve")
A $session.params.merch of $session.params.artist size: $session.params.shirtsize costs $$session.params.price. Shall I continue to order?
elif $session.params.merch = "Tour Movie"
The $session.params.merch of $session.params.artist costs $$session.params.price. Shall I continue to order?
else
It looks like something went wrong with your order. You can say "Reset", to restart the order process.
endif
- Create the following Custom payload:
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Yes, confirm"
}
],
"type": "chips"
}
]
]
}
Next, create two intent routes:
confirm.proceed.order
transitions to:Order Process
Flow.decline.proceed.order
transitions toEnd Flow
When the user declines the order, and does not want to proceed the order process, we will have to transition back to the welcome page, but all the parameters have to be cleared. We can do this by specifically setting null to all the possible parameters. You can do this with Parameter presets.
- In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:
Parameter | Value |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notice that we have created an additional parameter called restart
. If this parameter is present, the Default Start Flow, should know to continue the conversation by showing a customized message.
- Click on the Default Start Flow, Start Page, and create another Conditional Route:
$session.params.restart = "true"
- Fulfillment:
"Welcome back, as the virtual agent of G-Records, I can help you order artists merchandise, you can ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?"
- Custom payload:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
Price Page:
Let's also fix the Price TODOs. The price information will be static for now. Click on the Price Page in the Catalog Flow, and use the following entry fulfillment:
- Delete the Agent Says entry fulfillment.
- Create a new Conditional Response:
if $session.params.category = "shirts"
A t-shirt costs $25 and a longsleeve costs $30.
elif $session.params.category = "music"
A CD costs $15. The digital album on MP3 costs $10.
else
A t-shirt costs $25 and a longsleeve costs $30. A CD costs $15 and a digital album on MP3 $10. In case you are interested in the Tour Movie, that one is $25.
endif
Well done, by now you completed the Catalog flow. Your flow should look similar to this diagram:
8. Wrapping up the agent
We are almost at the end of this lab. Let's configure the last flows together, and take in practice all the new things that we have learned.
Creating the My Order Flow
- Go to the My Order Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
My Order Start |
| My Order |
My Order Start |
| My Order Status |
My Order Start |
| My Order Cancellation |
My Order Start |
| End Session |
My Order Start |
| End Flow |
My Order |
| My Order Status |
My Order |
| My Order Cancellation |
Default Start Flow |
| Flow: My Order |
Default Start Flow |
| Flow: My Order |
- Let's create the following entry fulfillment for the My Order Page:
- Entry fulfillment:
I can look up the status of your order, or I can cancel an order.
- In the My Order Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required: checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Fulfillment:
And do you want to Cancel your order, or should I look up the status?
- Click on Add state handler > Event Handlers and create the Event Handler:
No-input default
- Fulfillment:
I'm sorry, what was that? Would you like me to cancel an order or look up the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- Create the Event Handler:
No-match default
- Fulfillment:
Would you like me to cancel an order or lookup the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- In the My Order Status Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Status Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been shipped, it can take up to approx 2 weeks before you will receive your items.
- Add dialogue option > Text:
Is there anything else I can help you with?
- In the My Order Cancelation Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Cancelation Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been canceled.
- Add dialogue option > Text:
Is there anything else I can help you with?
- Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"
And:
>"What's the status of order DEFG222"
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
- Select the Start Page and click on the
redirect.home
intent. Create the following parameter preset:restart = true
Default Negative intents (Fallback)
When you create a virtual agent, a default negative intent is created for you. You can add training phrases to this intent that act as negative examples that will trigger a No-match event. There may be cases where end-user input has a slight resemblance to training phrases in normal intents, but you do not want these inputs to match any normal intents.
- Try in the simulator:
I don't like Alice Googler
.
You will see that the virtual agent answers with the Product Overview Page, to continue ordering Alice Googler merchandise. However, your end user does not like that artist. Let's use the Default Negative Intent for this.
- Go to Manage > Intents and select the Default Negative Intent.
- Add the following training phrases that will trigger the No-match event.
I don't like Alice Googler
I am not a fan of G's N' Roses
I can't stand the music of the Google Dolls
- Hit Save and test the following sentence in the simulator:
I am really not a fan of the Goo Fighters
This time the No-match
event was triggered, you stayed on the Start Page.
Default Fallback Messages
- Click the Default Start Flow, select the
sys.no-input-default
event handler.
The No-input fallback basically means: No text or speech answers were detected. Likely no answers were given, or the system couldn't hear it. Therefore, let's make the fallback messages more specific. Use the tab key, to create alternative dialogues:
- Remove all answers, and add these text dialogues:
I'm sorry, I didn't receive an answer. Can you say it again?
I missed your answer, can you say it again?
Sorry, I didn't hear anything. Can you say it again?
I couldn't hear what you were saying, what was that?
I'm sorry, I missed your answer. What were you trying to say?
Don't forget to click Save.
- Click the Default Start Flow, select the
sys.no-match-default
event handler.
The No Match fallback basically means: Text or speech answers were detected but nothing in Dialogflow CX got matched.
- Remove all answers, and add these text dialogues:
Sorry, I didn't get that. Can you please rephrase?
I'm sorry, I don't understand. Can you please rephrase?
I don't understand, please rephrase.
Sorry, I didn't get that. What was that?
I didn't get that, can you please rephrase?
Don't forget to click Save.
- It's advised to repeat these steps for the Catalog, My Order, Order Process and Customer Care flows.
Here's a tip: when creating fallback messages, make them more explicit, by rephrasing the previous question or by mentioning an example. You could create these type of No-match and No-input events on Page level when creating parameters. In our labs, we have already done this.
Creating the Order Process Flow
- Go to the Order Process Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
Order Process Start |
| End Session |
Order Process Start |
| End Flow |
Order Process Start |
| New Page: Shipping Details |
- Let's create the following entry fulfillment for the Shipping Details Page:
- Entry fulfillment:
To complete your order I will first need to collect your shipping details.
- Create the following parameters:
These parameters will make use of built-in system entities. System entity support differs for each language. See the docs for more information.
Parameter Display name | Entity | Required? | Initial prompt fulfillment | No-match default | No-input default |
| @sys.person | Required |
|
|
|
| @sys.person | Required |
|
|
|
| @sys.address | Required |
|
|
|
| @sys.any | Required |
|
|
|
| @sys.geo-city | Required |
|
|
|
| @sys.geo-country | Required |
|
|
|
| @sys.email | Required |
|
|
|
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Transition to new Page:
Payment Details
- Create the following entry fulfillment.
Let's fake it that this virtual agent makes use of Google Pay. Don't worry this tutorial won't make real transactions. Create the following entry dialogues:
- Agent Says:
Alright $session.params.firstname! We will make use of Google Pay, that's connected to your email account: $session.params.email.
- Conditional Response
if $session.params.merch != "Digital Album"
Shipping costs an additional 5 dollars. This will make the total price $$sys.func.TO_TEXT($sys.func.ADD($session.params.price, 5)).
Your merchandise will be shipped to:
$session.params.firstname $session.params.lastname
$session.params.address
$session.params.zipcode $session.params.city
$session.params.country
To continue the order process please explicitly say "I confirm". Do you want to confirm your $session.params.artist $session.params.merch order?
else
The total costs will be: $$session.params.price.
After purchasing the digital album, you will receive an email with the download link.
To continue the order process please explicitly say "I confirm".
Do you want to confirm your $session.params.artist $session.params.merch order?
endif
- Tạo Đường dẫn theo ý định sau đây
- Ý định:
confirm.proceed.order
- Nhân viên hỗ trợ nói:
Thank you for your order! Your merchandise will be shipped today!
- Thêm tuỳ chọn đối thoại > Văn bản:
Here's the order number: ABCD123
. - Thêm tuỳ chọn hộp thoại > Văn bản:
Have a good day!
- Hiệu ứng chuyển đổi:
End Session
- Chọn Trang Bắt đầu rồi nhấp vào ý định
redirect.end
. Tạo phương thức thực hiện sau:Thank you for contacting G-Records! Have a nice day!
- Chọn Trang Bắt đầu rồi nhấp vào ý định
redirect.home
. Tạo giá trị đặt trước tham số sau:restart = true
Tuyệt vời! Hiện tại, chúng ta đã có một chatbot hoạt động hoàn chỉnh cho nhà bán lẻ thực tế! Trong lớp học lập trình tiếp theo, chúng ta sẽ kiểm tra hiệu suất của nhân viên hỗ trợ ảo!
9. Kiểm thử nhân viên hỗ trợ ảo
Bạn có thể sử dụng trình mô phỏng tích hợp sẵn để kiểm thử các cuộc trò chuyện của trợ lý ảo. Ưu điểm của việc kiểm thử luồng trong trình mô phỏng là bạn sẽ thấy thông tin tổng quan rõ ràng về các luồng, trang, thông số và sự kiện (DTMF) mà trình mô phỏng đã thu thập được trong khi đi qua các luồng của bạn. Điều này giúp việc kiểm thử dễ dàng hơn so với việc kiểm thử trực tiếp trong một chế độ tích hợp, vì những loại thông tin đó sẽ bị ẩn khỏi người dùng cuối. Bạn thậm chí có thể tạo, lưu và sử dụng lại các trường hợp kiểm thử đó. Điều này rất hợp lý khi bạn duy trì hoặc chỉnh sửa luồng theo thời gian và muốn đảm bảo rằng không có thay đổi nào làm hỏng công việc trước đó của bạn.
Bạn cũng có thể xuất và nhập các trường hợp kiểm thử đã tạo trước đó bằng cách lưu trữ các kiểm thử đó trong Google Cloud Storage hoặc trên máy. Thao tác xuất một kiểm thử sẽ tải một tệp blob xuống. Để tìm hiểu thêm về trình mô phỏng và các trường hợp kiểm thử, hãy xem Tài liệu về trình mô phỏng / trường hợp kiểm thử.
Trước khi tạo một số trường hợp kiểm thử, trước tiên, hãy hoàn tất phần còn lại của trợ lý ảo:
Tạo quy trình chăm sóc khách hàng
- Chuyển đến Quy trình Chăm sóc khách hàng và tạo các lượt chuyển đổi ý định sau:
Trang (Trong luồng) | Routes (Tuyến đường) > Intent (Ý định) | Routes (Tuyến) > Transition To (Chuyển đổi đến) |
Bắt đầu chăm sóc khách hàng |
| Giao hàng |
Bắt đầu chăm sóc khách hàng |
| Hoàn tiền |
Bắt đầu chăm sóc khách hàng |
| Hoán đổi |
Bắt đầu chăm sóc khách hàng |
| Kết thúc luồng |
Bắt đầu chăm sóc khách hàng |
| Kết thúc phiên |
- Tạo các phương thức thực hiện mục nhập sau đây cho Trang Vận chuyển:
Shipping physical merchandise items can take up to 2 weeks.
Is there anything else I can help you with?
- Tạo các phương thức thực hiện mục nhập sau đây cho Trang Refund (Hoàn tiền):
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?
- Tạo các phương thức thực hiện mục nhập sau đây cho Trang Hoán đổi:
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?
- Chọn Trang Bắt đầu rồi nhấp vào ý định
redirect.end
. Tạo phương thức thực hiện sau:Thank you for contacting G-Records! Have a nice day!
- Chọn Trang Bắt đầu rồi nhấp vào ý định
redirect.home
. Tạo giá trị đặt trước tham số sau:restart = true
Tạo trường hợp kiểm thử
- Nhấp vào nút Test Agent (Trình thử nghiệm) ở bên phải màn hình.
Khi mở trình mô phỏng lần đầu, bạn cần chọn một môi trường tác nhân và luồng đang hoạt động. Trong hầu hết các trường hợp, bạn nên sử dụng môi trường nháp và quy trình bắt đầu mặc định.
- Loại:
Hi
- Hỏi:
Which artists are signed with your label?
- Nói:
The Google Dolls
- Nói:
I am interested in buying a shirt
- Nói:
A t-shirt
- Nói:
Medium
- Bây giờ, hãy nhấp vào nút lưu trường hợp kiểm thử. Bạn có thể tìm thấy biểu tượng này ở đầu trình mô phỏng (bên cạnh mũi tên làm lại và biểu tượng thùng rác đặt lại)
- Cung cấp các thông tin sau:
- Tên trường hợp kiểm thử:
Buy Google Dolls t-shirt size M
- Thẻ: #catalog, #shirts, #t-shirt, #TheGoogleDolls
- Nhấp vào Lưu
Hãy tạo thêm các trường hợp kiểm thử.
- Trước tiên, hãy xoá hộp thoại hiện tại bằng cách nhấp vào biểu tượng Đặt lại (thùng rác).
- Tạo các trường hợp kiểm thử sau:
Mua áo thun Alice Googler:
>"Buy the Alice Googler t-shirt."
>"XL"
- Tên trường hợp kiểm thử:
Buy the Alice Googler t-shirt
- Thẻ:
#catalog, #shirts, #t-shirt, #AliceGoogler
Mua áo phông cỡ M: (Lưu ý: Tên nghệ sĩ chưa được đề cập, nhưng bạn nên bỏ qua trang tổng quan về ban nhạc, trang tổng quan về sản phẩm, trang áo phông và trang kích thước áo phông)
>"Buy a t-shirt size M"
>"The Google Fighters"
- Tên trường hợp kiểm thử:
Buy a t-shirt size M
- Thẻ:
#catalog, #shirts, #t-shirt, #TheGoogleFighters
- Nội dung mô tả: (Lưu ý: Tên nghệ sĩ chưa được đề cập, nhưng bạn nên bỏ qua trang tổng quan về ban nhạc, trang tổng quan về sản phẩm, trang áo sơ mi và trang kích thước áo sơ mi)
Mua nhạc của G's N' Roses (Xin lưu ý rằng thao tác này sẽ bỏ qua trang tổng quan về ban nhạc và trang tổng quan về sản phẩm)
>"Purchase music of G's N' Roses"
>"Live"
>"CD"
- Tên trường hợp kiểm thử:
Purchase music of G's N' Roses
- Thẻ:
#catalog, #music, #CD, #GsNRoses, #live
- Mô tả: (Lưu ý rằng thao tác này sẽ bỏ qua trang tổng quan về dải tần và trang tổng quan về sản phẩm)
Kiểm tra thông tin về giá:
>"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"
- Tên trường hợp kiểm thử:
Price info
- Thẻ:
#catalog, #music, #tourmovie, #shirts
- Mô tả: Thử nghiệm thông tin giá ở nhiều điểm trong hộp thoại
Kiểm thử các trường hợp kiểm thử được ghi sẵn
- Chọn Quản lý > Trường hợp kiểm thử trong trình đơn chính của Dialogflow ở bên trái.
- Chọn tất cả các trường hợp kiểm thử rồi nhấn nút Run (Chạy) ở phía trên bảng.
Dialogflow CX sẽ chạy tất cả các trường hợp kiểm thử đã chọn dựa trên bản ghi được lưu dưới dạng "Trường hợp kiểm thử vàng". Nếu kết quả giống với cách bạn lưu, thì các kiểm thử sẽ đạt. – Có gì thay đổi trong các luồng như Trang không được định cấu hình chính xác hoặc ý định đã chuyển hướng bạn đến trang không chính xác, thì các kiểm thử sẽ không thành công.
- Trong trình mô phỏng, hãy đặt câu hỏi sau:
How long will shipping take?
- Lưu ý kết quả và lưu trường hợp kiểm thử dưới dạng
Shipping
với thẻ:#shipping
. - Chuyển đến bảng điều khiển Manage (Quản lý) > Test Cases (Trường hợp kiểm thử) rồi nhấn nút Run (Chạy) ở trên cùng bên phải của lưới để chỉ chạy trường hợp kiểm thử
Shipping
.
Kiểm thử này sẽ thành công.
- Quay lại quy trình Chăm sóc khách hàng, chọn trang Bắt đầu rồi nhấp vào tiêu đề Tuyến.
Thao tác này sẽ hiển thị một màn hình có lưới hiển thị tất cả các tuyến.
- Xoá
redirect.shipping.info route
- Chuyển đến bảng điều khiển Manage (Quản lý) > Test Cases (Trường hợp kiểm thử) rồi nhấn nút Run (Chạy) ở trên cùng bên phải của lưới để chỉ chạy trường hợp kiểm thử
Shipping
.
Kiểm thử này sẽ không thành công.
- Bạn có thể nhấp vào bài kiểm thử không thành công để xem thông tin chi tiết về bài kiểm thử không thành công đó.
Trong trường hợp này, kiểm thử không thành công với thông báo lỗi dưới đây:
Page: Page mismatch:
Expected: Shipping
Actual: Start Page
Lý do là vì trang đó không còn tồn tại trong luồng nữa. Chúng tôi dự kiến sẽ thấy Trang Shipping
, nhưng thay vào đó, chúng tôi không bao giờ rời khỏi Trang Start
. (hoặc người dùng cuối sẽ nhận được thông báo dự phòng).
Nói cách khác, đây là một yêu cầu bị bỏ lỡ, kết quả kiểm thử Sai âm. Kiểm thử không thành công. Chúng tôi dự kiến Trang Shipping (Phí vận chuyển), nhưng không có gì xảy ra hoặc một thông báo dự phòng đã xuất hiện.
- Quay lại Quy trình chăm sóc khách hàng và thêm
redirect.shipping.info
làm tuyến đường ý định vào Trang Bắt đầu. Đừng quên chuyển sang trang Vận chuyển rồi nhấn vào Lưu. - Trong trình mô phỏng, hãy ghi lại trường hợp kiểm thử sau:
I want to swap my item
, lưu trường hợp kiểm thử này dưới dạngSwapping
#swapping
. - Mở Quản lý > Ý định > redirect.refund.info rồi thêm cụm từ huấn luyện sau:
I want to swap this item for a refund
Nếu không có cụm từ huấn luyện đó, khi người dùng yêu cầu thay đổi một mặt hàng để được hoàn tiền, thì cụm từ này sẽ kích hoạt ý định redirect.swapping.info. Tuy nhiên, chúng ta không muốn cung cấp thông tin về việc thay đổi mặt hàng mà muốn cung cấp thông tin về việc hoàn tiền.
- Tạo trường hợp kiểm thử vàng sau:
I want to swap this item for a refund
trong trình mô phỏng và lưu trường hợp kiểm thử này dưới dạngSwap for Refund
#refund
- Quay lại ý định Quản lý > Ý định > redirect.refund.info và xoá dòng
I want to swap this item for a refund
. - Quay lại trang Quản lý > Trường hợp kiểm thử, chọn trường hợp kiểm thử Hoán đổi để hoàn tiền rồi Chạy trường hợp kiểm thử đó.
Thử nghiệm mới nhất của bạn không thành công, kèm theo thông báo lỗi bên dưới:
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
Nói cách khác, đây là một yêu cầu bị hiểu nhầm, kết quả kiểm thử Dương tính giả. Kiểm thử không thành công. Chúng tôi dự kiến Trang Hoàn tiền sẽ xuất hiện, nhưng Trang Hoán đổi lại hoạt động.
Phạm vi tổng hợp dữ liệu
Trong Dialogflow CX, mức độ sử dụng kiểm thử là một chỉ số dùng để mô tả mức độ thực thi cuộc trò chuyện của nhân viên hỗ trợ ảo (Trang và Ý định) khi một bộ kiểm thử cụ thể chạy. Một trợ lý ảo có mức độ kiểm thử cao (được đo bằng tỷ lệ phần trăm) có nhiều cuộc trò chuyện được thực thi hơn trong quá trình kiểm thử. Điều này cho thấy trợ lý ảo đó có ít khả năng chứa lỗi chưa phát hiện (chẳng hạn như bỏ lỡ các yêu cầu không được hiểu) so với trợ lý ảo có mức độ kiểm thử thấp.
- Để xem báo cáo mức độ bao phủ kiểm thử cho tất cả các trường hợp kiểm thử, hãy nhấp vào Mức độ bao phủ.
- Nhấp vào thẻ Chuyển đổi.
Thao tác này sẽ cho bạn thấy mức độ kiểm thử cho tất cả các lượt chuyển đổi trang.
- Nhấp vào thẻ Ý định.
Thao tác này sẽ cho bạn thấy mức độ sử dụng bài kiểm thử cho tất cả ý định.
Chúc mừng! Giờ đây, bạn đã xây dựng và kiểm thử một ví dụ hoàn chỉnh về bot của nhà bán lẻ trong thực tế! Hãy chuyển đến trang tiếp theo của lớp học để đọc kết luận và tìm một số tài liệu tham khảo hữu ích!
10. Kết luận
Dialogflow CX là một Nền tảng AI đàm thoại (CAIP) để tạo các nhân viên hỗ trợ ảo như bot trò chuyện hoặc bot thoại. Dialogflow CX giúp nhóm của bạn đẩy nhanh việc tạo trải nghiệm trò chuyện cấp doanh nghiệp thông qua các trình tạo bot trực quan, ý định có thể sử dụng lại và khả năng xử lý các cuộc trò chuyện nhiều lượt.
Trong lớp học lập trình này, bạn đã tìm hiểu cách xây dựng một nhân viên hỗ trợ ảo trong ngành bán lẻ thực tế. Chúng tôi đã đề cập đến các khái niệm sau:
- Luồng
- Tham số, thực thể tuỳ chỉnh và thực thể hệ thống
- Pages
- Trình xử lý trạng thái như Tuyến đường theo ý định và Tuyến đường theo điều kiện
- Thông báo thực hiện đơn hàng tĩnh và phản hồi có điều kiện
- Ý định dự phòng
- Trình mô phỏng, Trường hợp kiểm thử và Mức độ sử dụng
Tài liệu tham khảo
Để tìm hiểu thêm về Dialogflow CX, hãy xem các blog và tài liệu sau!