Thực hiện đơn hàng xác định giao diện trò chuyện để dự án Actions của bạn thu thập hoạt động đầu vào của người dùng và logic để xử lý thông tin đầu vào, rốt cuộc là thực hiện Hành động.
Tổng quan
Phương thức thực hiện của bạn sẽ nhận được yêu cầu từ Trợ lý, xử lý yêu cầu và phản hồi. Quy trình phản hồi và yêu cầu qua lại này thúc đẩy cho đến khi bạn thực hiện yêu cầu ban đầu của người dùng.
Các bước sau đây mô tả cách bạn có thể xây dựng phương thức thực hiện bằng cách sử dụng Actions SDK có Node.js hoặc thư viện ứng dụng Java/Kotlin:
- Khởi động đối tượng ActionsSdkApp.
- Tạo các hàm để xử lý yêu cầu trong logic phương thức thực hiện.
Tạo hộp thoại
Khởi động đối tượng ActionsSdkApp
Mã sau đây tạo thực thể
ActionsSdkApp
và thực hiện một số thiết lập Node.js nguyên mẫu cho Google Cloud Functions:
'use strict'; const {actionssdk} = require('actions-on-google'); const functions = require('firebase-functions'); const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.ask('Hi!'); }); // More intent handling if needed exports.myFunction = functions.https.onRequest(app);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!"); return responseBuilder.build();
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Hi!" } } ] } }, "possibleIntents": [ { "intent": "actions.intent.TEXT" } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
Tạo các hàm để xử lý yêu cầu
Khi người dùng nói một cụm từ, bạn sẽ nhận được yêu cầu từ Trợ lý Google. Người nhận thực hiện ý định có trong yêu cầu, tạo các hàm xử lý ý định đã kích hoạt.
Cách xử lý yêu cầu:
Thực hiện mọi logic cần thiết để xử lý hoạt động đầu vào của người dùng.
Gọi hàm
conv.ask()
truyền phản hồi bạn muốn hiển thị làm đối số.
Đoạn mã sau đây cho biết cách tạo một phản hồi đơn giản:
conv.ask(`Hi! Say something, and I'll repeat it.`);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi! Say something, and I'll repeat it."); return responseBuilder.build();
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Hi! Say something, and I'll repeat it." } } ] } }, "possibleIntents": [ { "intent": "actions.intent.TEXT" } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
Xử lý ý định
Sau khi có tất cả hàm để xử lý các ý định được kích hoạt, hãy sử dụng app.intent
để
gán trình xử lý cho các ý định.
app.intent('actions.intent.TEXT', (conv) => { // handle text intent. }); app.intent('actions.intent.MAIN', (conv) => { // handle main intent. });
@ForIntent("actions.intent.MAIN") public ActionResponse main(ActionRequest request) { // handle main intent // ... } @ForIntent("actions.intent.TEXT") public ActionResponse text(ActionRequest request) { // handle text intent // ... }
Kết thúc cuộc trò chuyện
Khi không muốn nhận lại bất kỳ hoạt động đầu vào nào của người dùng nữa và muốn kết thúc cuộc trò chuyện,
gọi hàm conv.close()
.
Chức năng này yêu cầu Trợ lý Google nói lại văn bản cho người dùng và kết thúc cuộc trò chuyện bằng cách đóng micrô.
Xử lý ý định gọi chính
Khi người dùng kích hoạt ý định app.intent.action.MAIN
, bạn thường không
cần thực hiện bất kỳ
quá trình xử lý hoạt động đầu vào nào của người dùng. Nếu gói hành động của bạn chứa nhiều
bao gồm nhiều trường hợp sử dụng, bạn nên định hướng người dùng bằng cách
cho họ một vài việc mà họ có thể làm.
- Gọi hàm
conv.ask()
truyền phản hồi của bạn dưới dạng một đối số. Trợ lý Google nói câu trả lời của bạn với người dùng, sau đó chờ người dùng kích hoạt một trong các ý định mà bạn đã chỉ định.
Đoạn mã sau đây cho biết cách xử lý một ý định chào mừng đơn giản:
// handle the initialTrigger function handleMainIntent(conv, input) { conv.ask(input); }
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) { return rb.add(input).build(); }
Trạng thái cuộc trò chuyện
Nếu đang sử dụng API webhook HTTP/JSON cuộc trò chuyện, bạn có thể duy trì
trạng thái của các cuộc trò chuyện với đối tượng có định dạng JSON (conversationToken
)
được chuyển qua lại giữa bạn và Trợ lý Google. Nếu bạn
bằng cách sử dụng thư viện ứng dụng Node.js, bạn có thể
có thể ghi và đọc trực tiếp từ trường conv.data
. Trường này
được chuyển tự động qua lại giữa yêu cầu và phản hồi.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");