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:
- Zainicjuj obiekt ActionsSdkApp.
- 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:
'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ż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:
Wykonaj wszystkie działania wymagane do przetworzenia danych wejściowych użytkownika.
Wywołaj funkcję
conv.ask()
, która przekazuje odpowiedź, którą chcesz wyświetlić jako argument.
Poniższy 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ż skonfigurowane wszystkie funkcje do obsługi wywołanych intencji, użyj 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ż, 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ć.
- 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ą:
// 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 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.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");