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à trang chuyển đổi 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ử
Bản thiết kế cuối cùng của nhân viên hỗ trợ Dialogflow CX 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. Một 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
- Hãy nói Không, tôi không dùng vì bạn hiệ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 nhân viên hỗ trợ Dialogflow CX mới, trước tiên, hãy mở Bảng điều khiển Dialogflow CX:
- Chọn dự án đã tạo trước đó trên Google Cloud.
- Nhấp vào Tạo tác nhân.
Hoàn tất biểu mẫu để thiết lập các chế độ cài đặt 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 – English làm ngôn ngữ mặc định
Nhấp vào Tạo.
Được rồi, chúng ta đã xong. 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, 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 các 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á quy trình để dễ dàng hiển thị trên màn hình và có nhiều 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 phòng thí nghiệm này, chúng ta sẽ sử dụng trình xử lý trạng thái có thể kết thúc quy trình (để quay lại quy trình tiếp theo hoặc trước đó), hoặc bạn có thể kết thúc phiên tác nhân đầy đủ.
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ẽ trả lờ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 (Bản dựng > 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 > Routes (Bắt đầu > 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 Thêm tuỳ chọn hộp thoại > Tải trọng tuỳ chỉnh rồi sử dụng đoạn mã dưới đây.
- 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ề Tải trọng tuỳ chỉnh, hãy xem tài liệu này.
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Hãy tiếp tục và 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 bot trò chuyện ở 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 các 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 phòng thí nghiệm này. Trước tiên, chúng ta sẽ tạo một số Thực thể và Ý định.
4. Các loại thực thể
Các loại thực thể dùng để kiểm soát cách trích xuất dữ liệu từ hoạt động đầ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ể Artist (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, thì tên đó vẫn có thể khớp 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
(với 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:
@Nghệ sĩ:
@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.). Các ý định trong Dialogflow CX chỉ chứa các cụm từ huấn luyện và do đó có thể sử dụng lại được. Nút 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". Đây là lý do bạn nên tạo trước các loại thực thể. Đây là cách chúng ta đã làm ở trang trước về các bước trong phòng thí nghiệm.
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ể có í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ể phải cập nhật thực thể của mình (bằng cách thêm một từ đồng nghĩa) hoặc tự chú thích cụm từ huấn luyện theo cách thủ công.
- Các 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 và chúng tôi đã cung cấp một vài ví dụ ở đây.
- Huấn luyện quá mức: Quá nhiều cụm từ huấn luyện cho một ý định có thể dẫn đến việc huấn luyện quá mức và dẫn đến kết quả ít mong muốn hơn. Phương pháp hay nhất là sử dụng kiểm thử lặp lại và tăng dần, đồng thời thêm cụm từ huấn luyện trong trường hợp không có ý định nào được 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à minh hoạ cuộc trò chuyện Dialogflow CX (một phiên) dưới dạng một 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ụ: thao tác chèn đồng xu sẽ di chuyển máy bán hàng tự động từ trạng thái Chờ xu thành Chọn kẹo. Trang là cách chúng tôi có thể lập mô hình các trạng thái này cho nhân viên hỗ trợ ảo Dialogflow CX.
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. Do đó, tại một thời điểm bất kỳ, chính xác một trang là trang hiện tại, trang hiện tại được coi là đang hoạt động và quy trình 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:
- Các tuyến ý định: Thời điểm cần so khớp một ý định (ví dụ: thay đổi trang dựa trên ý định của người dùng cuố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) (Các đườ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:
- Phương thức thực hiện tĩnh: Khi một phản hồi phương thức thực hiện tĩnh được cung cấp
- 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ố có tuyến đường theo điều kiện để thu thập thông tin bạn sẽ cần để thực hiện một đơn đặt hàng.
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 Start Page (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 rồi chuyển sang quy trình Danh mục.
- Nhấp 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) | Tuyến đường > Ý định | Tuyến đường > Chuyển tiếp tới |
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: Thứ tự của tôi |
Bắt đầu |
| Quy trình: Thứ tự của tôi |
Bắt đầu |
| Quy trình: Thứ tự 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 Video giới thiệu, 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 "Hiện có những mặt hàng nào?"
- 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 Price (Giá) được lấy từ trang Price (Giá) sẽ được sử dụng lại.
- Mặc dù cuộc đối thoại cho Bộ phim tham quan có vẻ như là cuộc đối thoại đơn giản nhất, nhưng chúng tôi sẽ thực sự làm điều gì đó đặc biệt với nó. Chúng tôi sẽ sử dụng lại phần này của hộp thoại để người dùng cuối cũng có thể nhập trực tiếp phần đó cho một trong các sản phẩm khác nếu họ chuyên về 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 Start Page (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, 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
Giờ hãy hoàn thành 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 bạn sẽ chọn trong quy trình, Định tuyến > Chuyển tiếp tới là quy trình hoặc trang mới bạn sẽ tạo và chuyển sang.
Trang (Trong luồng) | Tuyến đường > Ý đị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 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 để thu thập và tham chiếu các giá trị mà người dùng cuối cung cấp trong 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 tôi cần thu thập để đặt hàng. Đố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 thông 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 các 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 pháp nhân:
@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ố nghệ sĩ 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 thông 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ó thông tin đầu vào nào, người dùng không bao giờ đưa ra câu trả lời, trong đó nếu không có kết quả trùng khớp, người dùng đã đưa ra câu trả lời nhưng Dialogflow CX không thể so khớp cụm từ 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 phương thức thực hiện văn bản tĩnh cho sự kiện sau:
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 thông số bằng một giá trị cụ thể hoặc Không thể thiếu một thông số, hoặc Một biểu mẫu đã được hoàn thành, v.v. Bạn có thể tìm thêm thông tin về Thông số và Điều kiện trong Tài liệu về Dialogflow CX.
Đối với nhân viên hỗ trợ ảo bán lẻ, chúng tôi cần thu thập một chuỗi các thông số. Do đó, chúng tôi sẽ cần tạo một điều kiện để kiểm tra xem "biểu mẫu" đã hoàn tất hay chưa. Biểu mẫu là danh sách các thông số cần được 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 đường 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, tuyến này 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 (OR)
- Tiếp theo, chúng ta sẽ viết một biểu thức
- Tham số:
$page.params.status
- Nhà cung cấp dịch vụ:
=
- 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 đường, 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 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 rồi 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 pháp nhân:
@Artist
- Bắt buộc: Đánh dấu vào ô
- Loại bỏ nhật ký: Đánh dấu
- 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?
- Tải trọng 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 pháp nhân:
@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?
- Tải trọng 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"
- Ý định: redirect.shirts
- Chuyển tiếp: Trang:
Shirts
- Tạo một tuyến đường khi người dùng nói "Nhạc"
- Ý định: redirect.music
- Chuyển tiếp: 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 đường theo ý định có màu xanh dương trong sơ đồ và các tuyến đường theo đ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 việc tạo nhân viên hỗ trợ ảo.
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 Định tuyến ý định:
redirect.price
với hiệu ứng chuyển đổi sang TrangPrice
- Tạo tham số sau:
- Thông số:
merch
– Loại pháp nhân:@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 sang trang mới:
Shirt Size
Trang giá:
Vì các 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 (âm nhạc hoặc áo sơ mi), nên chúng tôi sẽ khắc phục phần này sau trong phòng thí nghiệm. 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 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 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 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 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:
- Khớp với 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ố > Tải trọng tuỳ chỉnh của 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ố > Tải trọng tuỳ chỉnh của 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 đường 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 Âm 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 thông 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 phương thức thực hiện mục nhập rồi di chuyển xuống phần Giá trị đặt trước cho thông số. Mỗi khi trang Âm nhạc hoạt động, thông số danh mục sẽ được đặt thành nhạc:
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 sang trang:
Carrier
Trang nhà mạng:
- Tạo các cấu hình sau trên 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 thông 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: Tải trọng tuỳ chỉnh:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
}
]
}
]
]
}
- Thêm Tuyến có điều kiện:
- Khớp với 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 thông số sau:
Tên hiển thị thông số | Loại thực thể thông số | Kiểm tra |
|
| Bắt buộc, Ẩn trong nhật ký |
|
| Bắt buộc, Ẩn trong nhật ký |
- Tham số artist cần 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:
- Khớp với 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 thông số Thêm thông số >
price = 25
- Chuyển 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
- Thêm tham số được đặt trước cho 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à chọn kích thước áo.
- Thêm tuyến đường 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 thông số Thêm thông 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.
- 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 thông số Thêm thông số >
price = 15
- Chuyển đổi sang trang:
Confirmation
Tuyến tiếp theo sẽ chuyển sang trang xác nhận khi nghệ sĩ được biết đến và người dùng chọn "Đĩa nhạc kỹ thuật số" và 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 = "Digital Album" AND $session.params.album != null
- Tự đặt thông số Thêm thông 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 các câu lệnh giúp phát hiện thông tin còn 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 đường 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 nghệ sĩ được biết đến và người dùng chọn "Áo phông" hoặc "Áo sơ mi dài tay", nhưng khi kích thước áo phông không được chọn.
- Thêm tuyến đường 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ố phản hồi sẽ trả về một hộp thoại khác dựa trên thông tin đầu vào. Các hộp thoại sẽ phân nhánh, chúng ta gọi đây là phản hồ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] sẽ lấy 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ẽ xây dựng trang xác nhận. 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 quy trình thực hiện > Phản hồi của nhân viên hỗ trợ > Tuỳ chọn Thêm hộp thoại > Phản hồ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!
- Chuyển đổi:
End Session
- Chọn Trang Start (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ử trợ lý ả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 nhân viên hỗ trợ ảo. Ưu điểm của việc thử nghiệm luồng trong trình mô phỏng là bạn sẽ thấy thông tin tổng quan hữu ích về luồng, trang, thông số và sự kiện (DTMF) mà trình mô phỏng thu thập được trong khi xem 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 tính. 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) | Tuyến đường > Ý đị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 |
| Đang 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 các tính nă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 đặt lại thùng rác)
- 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ử khác.
- 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
- Mô tả: (Xin lưu ý rằng Tên nghệ sĩ chưa được đề cập, nhưng bạn muốn bỏ qua phần tổng quan về dây đeo, tổng quan về sản phẩm, các trang kích thước áo và sơ mi)
Mua nhạc của G's N' Roses (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 tra:
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. – Nếu có thay đổi nào đó trong các quy trình như Trang không được định cấu hình chính xác hoặc ý định đưa bạn đến sai trang, thì thử nghiệm 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 cho thấy tất cả các tuyến đường.
- 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 chúng tôi chưa 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 ta dự kiến sẽ xuất hiện trang Shipping (Thông tin vận chuyển) nhưng không có gì xảy ra hoặc 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 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ở Manage >Intent > Redirect.refund.info và 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 có trang Hoàn tiền nhưng Trang Hoán đổi đã hoạt động trở lại.
Phạm vi tổng hợp dữ liệu
Trong Dialogflow CX, mức độ phù hợp kiểm thử là một thước đo dùng để mô tả mức độ thực thi hộp thoại của tác nhân ảo (Trang và Ý định) khi một bộ kiểm thử cụ thể chạy. Một tác nhân ảo có phạm vi kiểm thử cao (tính theo tỷ lệ phần trăm) có nhiều cuộc hội thoại được thực thi hơn trong quá trình kiểm thử. Điều này cho thấy tác nhân ảo có ít khả năng chứa lỗi không phát hiện được (chẳng hạn như bỏ lỡ các yêu cầu không hiểu được) so với một tác nhân ảo có phạm vi 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ử của 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 biết phạm vi kiểm thử cho tất cả các ý định.
Xin chúc mừng! Lúc này, bạn đã tạo và thử nghiệm một mẫu 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) dùng để 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
- Thông 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!