Cùng với ý định, cảnh là thành phần chính khác để xây dựng mô hình cuộc trò chuyện. Cảnh đại diện cho từng trạng thái riêng lẻ của cuộc trò chuyện và mục đích chính là sắp xếp cuộc trò chuyện của bạn thành các đoạn logic, thực thi các tác vụ và trả về lời nhắc cho người dùng.
Một số đặc điểm của cảnh bao gồm:
- Thực thi vòng lặp – Các cảnh thực thi trong một vòng lặp cho đến khi đáp ứng tiêu chí chuyển đổi mà bạn xác định. Điều này cho phép bạn tạo các luồng logic điều khiển hiệu quả hơn nhiều trong một cảnh.
- Phân tách hộp thoại – Khi kết hợp với ý định, cảnh sẽ cho phép bạn nhóm các hộp thoại thành các đoạn logic, qua đó giúp bạn dễ dàng tạo các cặp phản hồi Hành động và yêu cầu của người dùng.
- Phạm vi so khớp ý định – Do chỉ có một cảnh có thể hoạt động tại một thời điểm, nên bạn có thể thiết lập phạm vi so khớp ý định với các cảnh bạn chọn và chỉ so khớp các cảnh đó khi những cảnh đó đang hoạt động.
- Lấp đầy ô trống – Bạn có thể sử dụng tính năng lấp đầy vị trí trong một cảnh để thu thập nhiều thông tin đầu vào của người dùng mà không phải tạo nhiều ý định
- Điều kiện trong cảnh – Bạn có thể kiểm tra vị trí, phiên hoạt động, người dùng và bộ nhớ nhà để thực hiện logic đơn giản, có điều kiện mà không cần kích hoạt webhook.
Bạn có thể xác định các cảnh thuộc mô hình trò chuyện dưới dạng một cảnh tuỳ chỉnh. Logic trò chuyện của Trợ lý cũng bao gồm các cảnh hệ thống cung cấp chức năng tiêu chuẩn cho cuộc trò chuyện của bạn.
Cảnh tuỳ chỉnh
Cảnh tuỳ chỉnh là một thành phần của logic trò chuyện, tạo thành một phần của mô hình trò chuyện cho Hành động của bạn. Cảnh tuỳ chỉnh có các giai đoạn xác định cách thức và thời điểm bắt đầu, gọi là Kích hoạt. Quá trình xử lý hội thoại mà cảnh thực hiện được gọi là Vòng đời thực thi và cách cảnh kết thúc được gọi là Chuyển đổi:
- Kích hoạt – Trước khi một cảnh có thể thực thi, bạn phải kích hoạt cảnh đó thông qua tính năng so khớp ý định chung hoặc chuyển đổi cảnh.
- Thực thi – Khi một cảnh đang hoạt động, nó sẽ được thực thi trong một vòng đời được xác định rõ ràng, cho phép bạn thực hiện nhiều thao tác như điền vị trí, kiểm tra có điều kiện, tạo lời nhắc và kích hoạt các sự kiện webhook.
- Chuyển đổi – Khi một cảnh đáp ứng các tiêu chí mà bạn xác định, chẳng hạn như so khớp ý định hoặc hoàn tất việc lấp đầy vị trí, bạn có thể chuyển đổi sang một cảnh khác để thực hiện logic hơn nữa. Ngoài ra, bạn có thể chuyển sang cảnh hệ thống Kết thúc cuộc trò chuyện để kết thúc cuộc trò chuyện với người dùng.
Cách triển khai
Trước khi có thể thực thi, một cảnh cần phải ở trạng thái hoạt động. Chỉ một cảnh có thể hoạt động tại bất kỳ thời điểm nào. Bạn có thể kích hoạt cảnh theo những cách sau:
- Lệnh gọi – Khi hoạt động đầu vào của người dùng khớp với mô hình ngôn ngữ của một ý định chung, bạn có thể kích hoạt một cảnh để xử lý lệnh gọi.
- Chuyển đổi cảnh tĩnh – Khi một cảnh đáp ứng các tiêu chí chuyển đổi, bạn có thể xác định chuyển đổi sang một cảnh khác.
- Chuyển đổi cảnh động – Trong trình xử lý webhook, bạn có thể chuyển đổi sang một cảnh khác theo phương thức lập trình.
Vòng đời thực thi
Khi một cảnh đang hoạt động, nó sẽ thực thi trong một vòng đời được xác định rõ ràng, vòng lặp này cho đến khi cảnh đáp ứng các tiêu chí chuyển đổi mà bạn đã đặt ra. Vòng đời thực thi của một cảnh được tách thành các giai đoạn không bắt buộc chạy theo thứ tự sau:
Khi nhập – Giai đoạn này chỉ chạy một lần khi một cảnh được kích hoạt. Bạn có thể kích hoạt webhook hoặc nhắc người dùng thiết lập cảnh của bạn một lần.
Điều kiện – Điều kiện cho phép bạn đánh giá một số tiêu chí trước khi tiến vào các giai đoạn trong vòng đời, kích hoạt một webhook hoặc gửi lời nhắc. Giai đoạn này có thể xác định các tiêu chí chuyển đổi để thoát khỏi vòng lặp thực thi.
Lấp đầy ô trống – Một cảnh có thể tự động nhắc người dùng cho đến khi thu thập tất cả các ô cần thiết (dữ liệu đã nhập). Mỗi cảnh sẽ nhắc một vị trí duy nhất mỗi lần trong vòng lặp thực thi. Nếu thiếu bất kỳ vị trí nào, vòng đời của cảnh sẽ lặp lại giai đoạn lấp đầy vị trí và lời nhắc cho vị trí bắt buộc tiếp theo. Giai đoạn này có thể xác định các tiêu chí chuyển đổi để thoát khỏi vòng lặp thực thi.
Lời nhắc – Trợ lý gửi hàng đợi lời nhắc đến người dùng và xoá hàng đợi. Hàng đợi lời nhắc là một tập hợp các lời nhắc được hợp nhất, được tổng hợp kể từ lần gần đây nhất giai đoạn này xoá hàng đợi.
Đầu vào – Trợ lý sử dụng và trả về hoạt động đầu vào của người dùng cho cảnh của bạn để bạn có thể xử lý, chẳng hạn như so khớp ý định (ý định chung hoặc ý định của người dùng trong một cảnh), tiếp tục lấp đầy vị trí (nếu chưa hoàn tất) hoặc xử lý lỗi không khớp hoặc không có lỗi nhập. Giai đoạn này có thể xác định các tiêu chí chuyển đổi để thoát khỏi vòng lặp thực thi. Nếu không chuyển đổi, vòng lặp thực thi sẽ quay về giai đoạn điều kiện.
Các phần sau đây mô tả chi tiết hơn về từng giai đoạn trong vòng đời.
Khi nhập
Khi nhập là giai đoạn duy nhất không thực thi trong vòng lặp thực thi của cảnh. Quá trình này sẽ khởi động một lần cảnh của bạn theo thứ tự sau:
- Nếu môi trường thời gian chạy của Trợ lý có thể lấp đầy bất kỳ vị trí nào từ một ý định đã so khớp trước đó, thì Trợ lý sẽ làm như vậy ngay để chuẩn bị cảnh cho giai đoạn lấp đầy vị trí. Ví dụ: một số hoạt động đầu vào của người dùng có thể khớp với một ý định và cung cấp một vị trí. Tính năng so khớp ý định đó sẽ kích hoạt một cảnh và có thể lấp đầy một vị trí trong cảnh nếu tên khe khớp với nhau.
- Nếu được bật, webhook sẽ kích hoạt một sự kiện một cách đồng bộ và chờ dịch vụ web của bạn trả về phản hồi.
- Khi nhận được phản hồi webhook, môi trường thời gian chạy sẽ giải quyết mọi tham chiếu tham số trong câu lệnh và chọn một đề xuất lời nhắc dựa trên giao diện người dùng, sau đó chọn một biến thể để đề xuất gửi cho người dùng vào lúc khác.
- Nếu phản hồi của webhook chứa một câu lệnh, thì câu trả lời sẽ được thêm vào hàng đợi câu lệnh. Nếu cũng tồn tại lời nhắc tĩnh, lời nhắc webhook sẽ được hợp nhất vào hàng đợi lời nhắc trước tiên, sau đó là lời nhắc tĩnh.
- Nếu phản hồi webhook chứa một phần chuyển đổi, thì dữ liệu phản hồi sẽ được thực hiện ngay bây giờ. Nếu không, cảnh sẽ tiếp tục chuyển sang giai đoạn lấp đầy vị trí.
Điều kiện
Điều kiện cho phép bạn kiểm tra dữ liệu về phiên, người dùng hoặc vị trí để một điều kiện là đúng. Ví dụ: bạn có thể kiểm tra xem tất cả các vị trí đã được lấp đầy hay chưa và đặt tiêu chí đó làm tiêu chí để chuyển sang một cảnh khác để xử lý các vị trí.
- Thời gian chạy của Trợ lý sẽ đánh giá từng điều kiện theo thứ tự được chỉ định. Điều kiện đầu tiên đánh giá
true
sẽ thực thi trình xử lý liên kết và dừng việc đánh giá điều kiện. - Điều kiện
else if scene.slots.status = "FINAL"
sẽ tự động được thêm vào danh sách điều kiện nếu bạn lấp đầy vị trí. Điều kiện không bắt buộc này sẽ kiểm tra để hoàn tất quá trình lấp đầy ô trống và có thể kích hoạt một webhook hoặc thêm lời nhắc vào hàng đợi lời nhắc.
Sau khi đánh giá điều kiện, nếu không xác định được quá trình chuyển đổi, cảnh sẽ tiếp tục lấp đầy vị trí.
Lấp đầy khoảng trống
Giai đoạn này sẽ thêm lời nhắc về một vị trí duy nhất chưa được điền và bắt buộc. Nếu bạn không xác định bất kỳ vị trí nào trong cảnh, thì giai đoạn này sẽ không làm gì cả.
- Thời gian chạy Trợ lý sẽ chọn ô trống đầu tiên và thêm lời nhắc tương ứng vào hàng đợi lời nhắc. Vì vòng lặp thực thi của cảnh, ngoài ra, các khe chưa được lấp đầy sẽ được xử lý sau đó khi vòng lặp thực thi quay lại giai đoạn này.
- Vị trí đang hoạt động có thể có các lời nhắc xử lý lỗi ghi đè các lời nhắc đã xác định trong giai đoạn đầu vào của cảnh.
- Khi người dùng điền vào một vị trí, bạn có thể xác thực vị trí đó trong một dịch vụ web bằng cách kích hoạt một webhook.
Lời nhắc
Thời gian chạy của Trợ lý phân phối hàng đợi lời nhắc cho người dùng, xoá hàng đợi và sử dụng hoạt động đầu vào của người dùng.
Đầu vào
Thời gian chạy Trợ lý sẽ cố gắng so khớp dữ liệu đầu vào với một ý định hoặc một khe:
- Trong trường hợp có ý định so khớp của người dùng, cảnh sẽ thực thi trình xử lý ý định được liên kết (ý định của người dùng hoặc hệ thống). Trình xử lý ý định của một cảnh được ưu tiên hơn mọi ý định chung. Nếu bạn không xác định quá trình chuyển đổi, quá trình thực thi cảnh sẽ lặp lại giai đoạn điều kiện.
- Trong trường hợp trùng khớp vị trí, cảnh sẽ quay lại giai đoạn lấp đầy vị trí.
Trong trường hợp ý định của hệ thống khớp (ví dụ: không có dữ liệu đầu vào hoặc không có kết quả trùng khớp), bạn có thể thêm lời nhắc vào hàng đợi lời nhắc, kích hoạt một webhook hoặc chuyển đổi. Trong trường hợp không xác định được nhiều lời nhắc không so khớp, thời gian chạy của Trợ lý sẽ chọn lời nhắc phù hợp nhất theo thứ tự sau: lấp đầy vị trí, cảnh, sau đó là lời nhắc không so khớp chung. Nếu liên tiếp không có kết quả trùng khớp nào, hệ thống sẽ tạo ra một sự kiện tương ứng:
no_match_1
no_match_2
no_match_final
Mỗi cấp không khớp (lấp đầy vị trí, cảnh và chung) có thể kích hoạt các sự kiện webhook. Theo mặc định, không có kết quả phù hợp thứ ba và cuối cùng sẽ kết thúc cuộc trò chuyện.
Transition
Quá trình chuyển đổi có thể diễn ra trong các giai đoạn sau:
- Điều kiện – Bạn có thể chuyển sang một cảnh khác dựa trên các điều kiện bạn xác định. Một điều kiện phổ biến cần kiểm tra là khi lấp đầy ô trống phải hoàn tất.
- Đầu vào (so khớp ý định của người dùng) – Nếu một ý định khớp, thì ý định đó có thể kích hoạt quá trình chuyển đổi sang một cảnh khác.
- Đầu vào (so khớp ý định của hệ thống) – Bạn có thể kích hoạt webhook trong bất kỳ sự kiện so khớp ý định nào của hệ thống. Nếu không có sự kiện đầu vào nào và không có sự kiện đầu vào nào, theo mặc định, cảnh sẽ chuyển sang cảnh Kết thúc cuộc trò chuyện sau 3 lần xuất hiện.
Cảnh hệ thống
Cảnh hệ thống cho phép bạn sử dụng logic trò chuyện tích hợp do Trợ lý cung cấp, cho phép bạn thêm các luồng trò chuyện tiêu chuẩn vào trải nghiệm người dùng. Ví dụ: cảnh hệ thống liên kết tài khoản cho phép Trợ lý tạm thời tiếp quản quy trình liên kết tài khoản, trả về thông tin bạn cần để thực sự liên kết các tài khoản của người dùng. Cảnh hệ thống không tuân theo vòng đời cảnh tiêu chuẩn.
Danh sách sau đây mô tả các cảnh hệ thống được hỗ trợ và cách sử dụng các cảnh đó:
- Kết thúc cuộc trò chuyện – Đóng micrô và kết thúc cuộc trò chuyện với người dùng. Trợ lý sẽ giành lại quyền kiểm soát trải nghiệm người dùng sau khi cảnh này thực thi.
- Liên kết tài khoản – Hướng dẫn người dùng thực hiện quy trình liên kết tài khoản và cung cấp cho Hành động của bạn thông tin cần thiết để liên kết tài khoản của người dùng trên các máy chủ phụ trợ với Tài khoản Google của người dùng. Vui lòng xem tài liệu về liên kết tài khoản để biết thêm thông tin về cách sử dụng cảnh này.
- Nội dung cập nhật hằng ngày – Hướng dẫn người dùng thực hiện quy trình xác nhận để thêm Hành động của bạn vào nội dung cập nhật hằng ngày của người dùng. Xem tài liệu thông tin cập nhật hằng ngày để biết thêm thông tin về cách sử dụng cảnh này.
- Thông báo – Hướng dẫn người dùng thực hiện quy trình xác nhận để nhận thông báo từ Hành động của bạn. Hãy xem tài liệu về thông báo đẩy để biết thêm thông tin về cách sử dụng cảnh này.