Phương thức thực hiện bản dựng (Dialogflow)

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:

  1. Khởi động đối tượng ActionsSdkApp.
  2. 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:

SDK Hành động (Node.js)
'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);
SDK Actions (Java)
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!");
return responseBuilder.build();
JSON
{
  "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:

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

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

SDK Hành động (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
SDK Actions (Java)
ResponseBuilder responseBuilder =
    getResponseBuilder(request).add("Hi! Say something, and I'll repeat it.");
return responseBuilder.build();
JSON
{
  "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.

SDK Hành động (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
SDK Actions (Java)
@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.

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

SDK Hành động (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
SDK Actions (Java)
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.

SDK Hành động (Node.js)
conv.data = {something: 10};
let value = conv.data.something;
SDK Actions (Java)
ResponseBuilder rb = getResponseBuilder(request);
rb.getConversationData().put("something", 10);
Object value = rb.getConversationData().get("something");