Выполнение сборки (Dialogflow)

Выполнение определяет диалоговый интерфейс вашего проекта Actions для получения вводимых пользователем данных и логику для обработки вводимых данных и в конечном итоге выполнения действия.

Обзор

Ваше выполнение получает запросы от Ассистента, обрабатывает запрос и отвечает. Этот процесс двусторонних запросов и ответов продвигает разговор вперед, пока вы в конечном итоге не выполните первоначальный запрос пользователя.

Следующие шаги описывают, как вы можете реализовать выполнение с помощью Actions SDK с Node.js или клиентской библиотекой Java/Kotlin:

  1. Инициализируйте объект ActionsSdkApp .
  2. Создайте функции для обработки запросов в вашей логике выполнения.

Построение диалогов

Инициализируйте объект ActionsSdkApp

Следующий код создает экземпляр ActionsSdkApp и выполняет стандартную настройку Node.js для облачных функций Google:

SDK действий (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 действий (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\":{}}"
}

Создание функций для обработки запросов

Когда пользователи произносят фразу, вы получаете запрос от Google Assistant. Чтобы выполнить намерения, поступающие в запросы, создайте функции, которые обрабатывают сработавшие намерения.

Для обработки запросов:

  1. Выполните любую логику, необходимую для обработки пользовательского ввода.

  2. Вызовите функцию conv.ask() , передав ответ, который вы хотите отобразить, в качестве аргумента.

Следующий код показывает, как создать простой ответ:

SDK действий (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
SDK действий (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\":{}}"
}

Обработка намерений

Когда у вас есть все функции для обработки триггерных намерений, используйте app.intent , чтобы назначить обработчики намерениям.

SDK действий (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
SDK действий (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
  // ...
}

Завершение разговоров

Если вам больше не нужен пользовательский ввод в ответ и вы хотите завершить разговор, вызовите функцию conv.close() . Эта функция сообщает Google Assistant озвучить текст пользователю и завершить разговор, закрыв микрофон.

Обработка основного намерения вызова

Когда пользователи запускают намерение app.intent.action.MAIN , вам обычно не требуется выполнять какую-либо обработку ввода пользователя. Если ваш пакет действий содержит много действий и охватывает множество вариантов использования, рекомендуется сориентировать пользователя, сообщив ему несколько вещей, которые он может сделать.

  1. Вызовите функцию conv.ask() , передав ваш ответ в качестве аргумента. Google Ассистент произносит ваш ответ пользователю, а затем ждет, пока пользователь активирует одно из указанных вами намерений.

В следующем фрагменте показано, как обрабатывать простое приветственное намерение:

SDK действий (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
SDK действий (Java)
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) {
  return rb.add(input).build();
}

Состояние разговора

Если вы используете API веб-перехватчика HTTP/JSON для разговоров , вы можете поддерживать состояние своих разговоров с помощью объекта в формате JSON ( conversationToken ), который передается туда и обратно между вами и Google Assistant. Если вы используете клиентскую библиотеку Node.js , вы можете напрямую записывать и читать поле conv.data . Это поле автоматически передается туда и обратно между запросами и ответами.

SDK действий (Node.js)
conv.data = {something: 10};
let value = conv.data.something;
SDK действий (Java)
ResponseBuilder rb = getResponseBuilder(request);
rb.getConversationData().put("something", 10);
Object value = rb.getConversationData().get("something");