Realizacja kompilacji (Dialogflow)

Fulfillment określa interfejs konwersacyjny, który ma uzyskać projekt Actions danych wejściowych użytkownika i reguły przetwarzania tych danych, aby ostatecznie zrealizować Działanie.

Omówienie

Twoja realizacja otrzymuje żądania od Asystenta, przetwarza je oraz odpowiada. Wszechstronny proces obsługi żądań i odpowiedzi sprawia, że aż do momentu, gdy w końcu zrealizujesz początkową prośbę użytkownika.

Poniższe kroki opisują, jak możesz zapewnić realizację zamówień za pomocą Działań Pakiet SDK z Node.js lub biblioteką klienta w języku Java/Kotlin:

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

Tworzę okna dialogowe

Inicjowanie obiektu ActionsSdkApp

Wystąpienie poniższego kodu ActionsSdkApp i wykonuje gotową konfigurację Node.js na potrzeby 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żytkownik wypowie wyrażenie, otrzymasz prośbę od Asystenta Google. Do tworzyć intencje zawarte w żądaniach, utworzyć funkcje, które intencję wywołaną.

Aby obsługiwać żądania:

  1. Regulowanie logiki wymaganej do przetworzenia danych wejściowych użytkownika.

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

Ten 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ż wszystkie funkcje do obsługi wywołanych intencji, użyj polecenia 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ż otrzymywać żadnych danych wejściowych użytkownika i chcesz zakończyć rozmowę, wywołaj funkcję conv.close(). Ta funkcja informuje Asystenta Google, aby odczytał tekst użytkownikowi i zakończył rozmowę przez wyłączenie mikrofonu.

Obsługa głównej intencji wywołania

Gdy użytkownicy aktywują intencję app.intent.action.MAIN, zwykle tego nie zrobisz nie musi przetwarzać danych wejściowych użytkownika. Jeśli Twój pakiet działań zawiera wiele elementów i obejmuje wiele przypadków użycia, warto ukierunkować użytkownika, informując kilka rzeczy, które mogą zrobić.

  1. Wywołaj funkcję conv.ask() przekazującą Twoją odpowiedź jako argument. Asystent Google wypowiada Twoją odpowiedź, a potem czeka, aż użytkownik wywoła jedną z określonych 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 używasz interfejsu API webhooka HTTP/JSON, możesz utrzymywać parametry stan rozmów z obiektem w formacie JSON (conversationToken) i przekazywane między Tobą a Asystentem Google. Jeśli jesteś przy użyciu biblioteki klienta Node.js, może bezpośrednio zapisywać i odczytywać w polu conv.data. To pole jest automatycznie przekazywana między prośbami 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");