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:
- Zainicjuj obiekt ActionsSdkApp.
- 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:
'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);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!"); return responseBuilder.build();
{ "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:
Regulowanie logiki wymaganej do przetworzenia danych wejściowych użytkownika.
Wywołaj funkcję
conv.ask()
przekazującą odpowiedź, którą chcesz wyświetlić jako argumentu.
Ten kod pokazuje, jak utworzyć prostą odpowiedź:
conv.ask(`Hi! Say something, and I'll repeat it.`);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi! Say something, and I'll repeat it."); return responseBuilder.build();
{ "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.
app.intent('actions.intent.TEXT', (conv) => { // handle text intent. }); app.intent('actions.intent.MAIN', (conv) => { // handle main intent. });
@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ć.
- 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ą:
// handle the initialTrigger function handleMainIntent(conv, input) { conv.ask(input); }
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.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");