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

Phương thức thực hiện xác định giao diện trò chuyện cho dự án Hành động của bạn để lấy hoạt động đầu vào của người dùng và logic để xử lý hoạt động đầu vào rồi cuối cùng 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 yêu cầu từ Trợ lý, xử lý yêu cầu và phản hồi. Quá trình yêu cầu và phản hồi qua lại này thúc đẩy cuộc trò chuyện tiếp tục cho đến khi bạn thực hiện xong 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ể tạo phương thức thực hiện bằng cách sử dụng SDK Hành động với 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 thực hiện của bạn.

Tạo hộp thoại

Khởi động đối tượng ActionsSdkApp

Mã sau đây tạo thực thể cho ActionsSdkApp và thực hiện một số quá trình 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 Hành động (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 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. Để thực hiện ý định trong yêu cầu, hãy tạo các hàm xử lý ý định được 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ị dưới dạng đối số.

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 Hành động (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 bạn 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 Hành động (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
  // ...
}

Đang kết thúc cuộc trò chuyện

Khi bạn không còn muốn nhận hoạt động đầu vào của người dùng nữa và muốn kết thúc cuộc trò chuyện, hãy gọi hàm conv.close(). Chức năng này yêu cầu Trợ lý Google trả lời tin nhắn 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, thường thì bạn không cần phải xử lý hoạt động đầu vào của người dùng. Nếu gói hành động của bạn chứa nhiều thao tác và 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ọ biết một vài điều họ có thể làm.

  1. Gọi hàm conv.ask() truyền phản hồi của bạn làm đố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 Hành động (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 bằng một đối tượng có định dạng JSON (conversationToken) được truyền qua lại giữa bạn và Trợ lý Google. Nếu đang sử dụng thư viện ứng dụng Node.js, thì bạn có thể ghi trực tiếp vào và đọc từ trường conv.data. Trường này được tự động chuyển qua lại giữa các 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 Hành động (Java)
ResponseBuilder rb = getResponseBuilder(request);
rb.getConversationData().put("something", 10);
Object value = rb.getConversationData().get("something");