Realizacja kompilacji (Dialogflow)

Realizacja definiuje interfejs konwersacyjny projektu Actions, który umożliwia uzyskiwanie danych wejściowych użytkownika oraz logikę przetwarzania danych wejściowych i realizacji akcji.

Opis

Twoja realizacja otrzymuje żądania od Asystenta, przetwarza je i odpowiada na nie. Ten ciągły proces żądań i odpowiedzi napędza rozmowę dalej, aż w końcu zrealizujesz początkową prośbę użytkownika.

Poniżej znajdziesz instrukcje tworzenia realizacji za pomocą pakietu SDK Actions z biblioteką klienta Java/Kotlin lub środowiska Node.js:

  1. Zainicjuj obiekt ActionsSdkApp.
  2. Utwórz funkcje do obsługi żądań w ramach logiki realizacji.

Tworzenie okien dialogowych

Inicjowanie obiektu ActionsSdkApp

Ten kod tworzy instancję ActionsSdkApp i przeprowadza prostą konfigurację środowiska Node.js dla Google Cloud Functions:

Pakiet SDK Actions (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);
Pakiet 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\":{}}"
}

Tworzenie funkcji do obsługi żądań

Gdy użytkownicy wypowiedzą jakieś wyrażenie, otrzymasz prośbę od Asystenta Google. Aby zrealizować intencje przychodzące, utwórz funkcje, które obsługują te intencje.

Aby obsługiwać żądania:

  1. Wykonaj wszystkie działania wymagane do przetworzenia danych wejściowych użytkownika.

  2. Wywołaj funkcję conv.ask(), która przekazuje odpowiedź, którą chcesz wyświetlić jako argument.

Poniższy kod pokazuje, jak utworzyć prostą odpowiedź:

Pakiet SDK Actions (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
Pakiet 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\":{}}"
}

Obsługa intencji

Gdy masz już skonfigurowane wszystkie funkcje do obsługi wywołanych intencji, użyj app.intent, aby przypisać moduły obsługi do intencji.

Pakiet SDK Actions (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
Pakiet 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
  // ...
}

Kończenie rozmów

Jeśli nie chcesz już, aby dany użytkownik zwracał jakąś uwagę, i chcesz zakończyć rozmowę, wywołaj funkcję conv.close(). Ta funkcja informuje Asystenta Google, że ma odpowiedzieć użytkownikowi tekst i zakończyć rozmowę, zamykając mikrofon.

Obsługa głównej intencji wywołania

Gdy użytkownicy aktywują intencję app.intent.action.MAIN, zwykle nie musisz przetwarzać żadnych danych wejściowych użytkownika. Jeśli Twój pakiet działań zawiera wiele działań i obejmuje wiele przypadków użycia, warto zaprezentować użytkownikowi kilka możliwości, które może wykonać.

  1. Wywołaj funkcję conv.ask(), która przekazuje Twoją odpowiedź jako argument. Asystent Google wypowiada Twoją odpowiedź, a następnie czeka, aż użytkownik uruchomi jedną z określonych przez Ciebie intencji.

Ten fragment kodu pokazuje, jak obsłużyć prostą intencję powitalną:

Pakiet SDK Actions (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
Pakiet SDK Actions (Java)
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) {
  return rb.add(input).build();
}

Stan rozmowy

Jeśli korzystasz z interfejsu conversation HTTP/JSON webhook API, możesz przechowywać stan rozmów za pomocą obiektu w formacie JSON (conversationToken), który jest przesyłany tam i z powrotem między Tobą a Asystentem Google. Jeśli używasz biblioteki klienta Node.js, możesz zapisywać dane i odczytywać bezpośrednio w polu conv.data. To pole jest automatycznie przesyłane między żądaniami i odpowiedziami.

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