Zalecanym sposobem na dostęp do korzystasz z platformy Actions on Google, jeśli tworzysz webhooka realizacji zamówień w JavaScripcie.
Wprowadzenie
Biblioteka klienta Node.js to biblioteka realizacji dla aplikacji Actions on Google, która zapewnia te funkcje:
- Obsługuje wszystkie funkcje Asystenta Google, w tym odpowiedzi tekstowe i multimedialne, logowanie na konto, przechowywanie danych, transakcje i inne.
- Udostępnia idiomatyczne warstwy abstrakcji w języku JavaScript, które zawijają interfejsu API webhooka HTTP/JSON.
- Obsługuje szczegóły komunikacji na niskim poziomie między usługą a platformą Actions on Google.
- Można ją zainstalować za pomocą dobrze znanych narzędzi do zarządzania pakietami, takich jak
npm
lubyarn
. - Umożliwia łatwe wdrażanie webhooka realizacji na platformach obliczeniowych bez serwera, takich jak Cloud Functions for Firebase lub AWS Lambda. Możesz też hostować webhooka realizacji u dostawcy usług w chmurze lub we własnym, zarządzanym samodzielnie środowisku.
- Zgodność z Node.js w wersji 6.0.0 lub nowszej.
Z biblioteki klienta możesz korzystać w połączeniu z Integracja z Dialogflow w Actions on Google lub za pomocą pakietu SDK Actions.
Pełne przykłady kodu służącego do korzystania z biblioteki klienta znajdziesz na stronie stronie z przykładami.
Wyświetl dokumentację API
Dokumentacja API jest przechowywana w bibliotece klienta Actions on Google Node.js stronie GitHub.
Można również wygenerować lokalną kopię pliku referencyjnego, uruchamiając następujące polecenie z katalogu, z którego pobrano bibliotekę klienta kod:
yarn docs
Wygenerowane dokumenty będą dostępne w folderze docs
katalogu
z której pobrano kod z biblioteki klienta.
Jak to działa
Zanim skorzystasz z biblioteki klienta, dowiedz się, jak webhook realizacji zamówień używa biblioteki klienta do przetwarzania żądań użytkowników, które Actions on Google wysyła do Twojej realizacji.
Po utworzeniu webhooka realizacji w JavaScript możesz wdrożyć i hostować swój kod na bezserwerowym środowisku obliczeniowym, takim jak Cloud Functions dla Firebase czy AWS Lambda. Możesz też hostować kod samodzielnie, bez dodatkowej pracy. korzystając z Express Web Framework.
W środowisku uruchomienia webhook realizacji może wywoływać funkcje w bibliotece klienta, aby przetwarzać żądania użytkownika i przesyłać odpowiedzi z powrotem do Actions on Google w celu renderowania danych wyjściowych użytkownika.
Poniżej znajdziesz krótkie podsumowanie najważniejszych zadań, które twój webhook realizacji wykonuje przy pomocy biblioteki klienta:
- Odbieranie próśb od użytkowników: gdy użytkownik wysyła zapytanie do Asystenta Google, platforma Actions on Google wysyła żądanie HTTP do webhooka realizacji; prośba zawiera ładunek JSON zawierający intencję i inne dane, takie jak nieprzetworzony tekstu wprowadzanego przez użytkownika i możliwości platformy urządzenia. Więcej przykładów treści ładunku JSON znajdziesz w instrukcjach dotyczących formatu webhooka Dialogflow i formatu webhooka konwersacji.
- Wykrywanie formatu wywołania platformy: w przypadku obsługiwanych platform biblioteka klienta automatycznie wykrywa format wywołania platformy (np. czy żądanie pochodzi z platformy internetowej Express czy z AWS Lambda) i wie, jak płynnie zarządzać komunikacją z platformą Actions on Google.
- Przetwarzanie modułów obsługi usługi: biblioteka klienta reprezentuje
konwersacja HTTP/JSON webhook API z pakietami Dialogflow i Actions SDK
jako funkcji usługi. Webhook realizacji zamówień używa odpowiedniej usługi do
utworzyć globalną instancję
app
. Instancjaapp
działa jako moduł obsługi HTTP rozumie konkretny protokół usługi i zapyta o nie. - Przetwarzanie rozmów: biblioteka klienta reprezentuje
danych o poszczególnych rozmowach w postaci obiektu
Conversation
dołączonego doapp
instancję. Webhook realizacji zamówień może używać obiektuConversation
do pobieranie przechowywanych danych lub informacji o stanie między konwersacjami, wysyłanie odpowiedzi użytkownikom lub wyłącz mikrofon. - Przetwarzanie oprogramowania sprzęgającego: biblioteka klienta umożliwia tworzenie
własne oprogramowanie pośredniczące usług do rozmów, które składa się z co najmniej jednej funkcji
definiujesz automatyczne uruchamianie biblioteki klienta przed wywołaniem
lub za pomocą modułu obsługi intencji. Twoje webhooki realizacji mogą używać pośrednika do dodawania właściwości lub klas pomocniczych do obiektu
Conversation
. - Przetwarzanie intencji: biblioteka klienta umożliwia zdefiniowanie
dla intencji odczytywanych przez webhooka realizacji. W przypadku Dialogflow
Biblioteka klienta przekierowuje żądanie do odpowiedniego modułu obsługi intencji poprzez
czyli mapowania na dokładny ciąg nazwy intencji zdefiniowanej w parametrze
Konsola Dialogflow. W przypadku pakietu Actions SDK jest ona kierowana na podstawie przesłanej właściwości
intent
w Actions on Google. - Wysyłanie odpowiedzi do użytkowników: aby utworzyć odpowiedzi, webhook realizacji wywołuje funkcję
Conversation#ask()
. Funkcjaask()
może być były wywoływane wielokrotnie, aby stopniowo tworzyć odpowiedź. biblioteka klienta zserializuje odpowiedź do żądania HTTP z użyciem atrybutu ładunek JSON i wysyłanie go do Actions on Google. Funkcjaclose()
działa podobnie do funkcjiask()
, ale zamyka rozmowę.
Konfigurowanie lokalnego środowiska programistycznego
Zanim wdrożysz webhooka realizacji zamówienia, najpierw zainstaluj z biblioteką klienta.
Instalowanie biblioteki klienta
Najłatwiejszy sposób na zainstalowanie biblioteki klienta w lokalnym środowisku programistycznym
jest użycie menedżera pakietów, takiego jak npm
lub yarn
.
Aby zainstalować, uruchom jedno z tych poleceń w terminalu:
- Jeśli używasz npm:
npm install actions-on-google
- Jeśli używasz przędzy:
yarn add actions-on-google
Konfigurowanie folderów projektu
W zależności od tego, gdzie zamierzasz wdrożyć webhooka realizacji (funkcje Google Cloud Functions dla Firebase, AWS Lambda lub własnego konta Express), konieczne może być utworzenie aby zapisać pliki.
Jeśli na przykład używasz Cloud Functions dla Firebase, możesz skonfigurować
wymagane foldery projektu, wykonując czynności opisane w
Skonfiguruj Node.js i interfejs wiersza poleceń Firebase oraz
Zainicjuj Firebase dla Cloud Functions. W przypadku Cloud Functions dla Firebase zwykle zapisujesz
webhooka realizacji w pliku /functions/index.js
.
Tworzenie instancji aplikacji
Actions on Google używa określonych formatów wiadomości do wymiany próśb i odpowiedzi za pomocą webhooka realizacji zamówień, w zależności od tego, czy tworzysz Działanie wykorzystujące Dialogflow lub pakiet SDK Actions. lub stworzenie funkcji inteligentnego domu.
Aby reprezentować te różne protokoły żądań i odpowiedzi, biblioteka klienta udostępnia 3 funkcje usługi:
protokołu webhooka rozmowy, jest używany przez usługi konwersacyjne (Dialogflow i Actions SDK), ale w każdej usługa inaczej opakowuje wiadomości.
Używasz usługi do tworzenia instancji app
. Instancja app
jest hermetyzacją
globalny stan i logikę realizacji webhooka i obszarów obsługi,
komunikacji między Actions on Google a realizacją zamówień za pomocą
protokołu w zależności od usługi.
Możesz skonfigurować właściwości instancji app
i wywoływać ich metody, aby
będzie ukierunkować działanie webhooka realizacji. Możesz też łatwo podłączyć instancję app
w bezserwerowe środowisko obliczeniowe, takie jak Cloud Functions dla Firebase –
który akceptuje funkcje JavaScriptu jako moduły obsługi żądań HTTP.
Aby utworzyć instancję app
w webhooku realizacji zamówień, wykonaj te czynności:
Wywołaj funkcję
require()
, aby zaimportować „actions-on-google” oraz i wczytywanie odpowiedniej usługi. Na przykład ten fragment kodu pokazuje, może wczytać usługędialogflow
i niektóre elementy używane do tworzenia odpowiedzi, i przypisz ją do stałej nazwydialogflow
:// Import the service function and various response classes const { dialogflow, actionssdk, Image, Table, Carousel, } = require('actions-on-google');
Tutaj
actions-on-google
odnosi się do zależności określonejpackage.json
w folderu projektu (możesz odwołać się do ten przykładowy plikpackage.json
).Po uzyskaniu instancji
app
możesz opcjonalnie określić klasy reprezentujące szczegółowe odpowiedzi, intencje pomocnicze i inne funkcje Actions on Google, których chcesz używać. W przypadku atrybutu pełną listę prawidłowych klas, które możesz wczytać. Zapoznaj się z dokumentacją odpowiedź na rozmowę, i intencja pomocnicza modułów.Utwórz instancję
app
, wywołując załadowaną usługę. Przykład:const app = dialogflow();
Aby skonfigurować instancję
app
podczas inicjowania, możesz podaćoptions
jako pierwszy argument przy wywołaniu usługi. (ZobaczDialogflowOptions
, aby uzyskać więcej informacji). Na przykład ten fragment kodu pokazuje, jak zapisać nieprzetworzony ładunek JSON z żądanie lub odpowiedź użytkownika, ustawiając flagę{ debug: true }
:
const app = dialogflow({ debug: true });
Ustawianie modułów obsługi zdarzeń
Aby przetworzyć zdarzenia związane z Actions on Google utworzone przez bibliotekę klienta w cyklu życia interakcji użytkownika z Akcją, użyjesz biblioteka klienta do tworzenia modułów obsługi służących do przetwarzania żądań użytkowników i odsyłania ich odpowiedzi.
Możesz tworzyć funkcje, które działają jako moduły obsługi tych głównych typów zdarzeń rozpoznawanych przez bibliotekę klienta:
- Zdarzenia intencji: intencje to unikalne identyfikatory, które Actions on Google wysyła do Twojego punktu realizacji, gdy użytkownik zażąda określonej funkcji. Jeśli używasz Dialogflow, odpowiada to dopasowaniu przez Dialogflow zapytania użytkownika do intencji w Twoim agencie Dialogflow.
- Zdarzenia błędu: jeśli wystąpi błąd JavaScriptu lub biblioteki klienta,
możesz użyć funkcji
catch
instancjiapp
, aby przetworzyć wyjątek błędu w odpowiedni sposób. Należy wdrożyć jedną funkcjęcatch
, aby obsługiwać wszystkie błędy, które mają znaczenie dla realizacji. - Zdarzenia zastępcze: zdarzenie zastępcze występuje, gdy użytkownik wysyła zapytanie, którego Actions on Google nie może rozpoznać. Za pomocą usługi
app
fallback
instancji, aby zarejestrować ogólny moduł obsługi awaryjnej, który jest wyzwalana, jeśli do przychodzącej realizacji zamówienia nie został dopasowany żaden moduł obsługi intencji użytkownika. Należy wdrożyć jedną funkcjęfallback
do obsługi wszystkich zdarzeń kreacji zastępczych. Jeśli korzystasz z Dialogflow, Dialogflow może wywołać określony intencję zastępczą, gdy nie zostaną dopasowane żadne inne intencje. Należy utworzyć dla danej intencji zastępczej.
Za każdym razem, gdy użytkownik wysyła żądanie do Twojej akcji, wystąpienie app
tworzy
Conversation
.
reprezentujący sesję rozmowy. Dostęp do tego obiektu uzyskuje się przez:
nazwa zmiennej conv
przekazywana w funkcji obsługi intencji jako
pierwszego argumentu funkcji. Zwykle będziesz używać usługi conv
w modułach obsługi, aby wysłać odpowiedź do użytkownika.
Zapytania użytkowników mogą również zawierać parametry, które akcja może wyodrębnić i wykorzystać aby doprecyzować odpowiedzi.
- Jeśli używasz pakietu SDK Actions, parametry definiujesz w pakiecie akcji. Przykład wyodrębniania parametrów z intencji znajdziesz w przykładowym kodzie Eliza.
- Jeśli korzystasz z Dialogflow, możesz uzyskać dostęp do wartości parametrów za pomocą zmiennej
params
. Aby zobaczyć przykłady intencji obsługi za pomocą: w Dialogflow znajdziesz w artykule na temat parametrów dostępu i kontekstów.
Ustawianie modułów obsługi intencji
Aby ustawić moduł obsługi intencji, wywołaj funkcję intent()
w elemencie app
instancji. Jeśli na przykład używasz Dialogflow, jest to
DialogflowApp#intent()
. W argumentach określ nazwę intencji i podaj funkcję obsługi.
Jeśli korzystasz z Dialogflow, nie musisz konfigurować modułów obsługi dla każdej intencji w z naszym agentem. Zamiast tego możesz skorzystać z wbudowanego w Dialogflow modułu obsługi odpowiedzi, aby automatycznie obsługiwać intencje bez implementowania własnych funkcji modułu obsługi. W ten sposób możesz na przykład przekazać do Dialogflow domyślną intencję powitalną.
Przykład poniżej pokazuje moduły obsługi intencji dla „powitania” i „pa”
do intencji użytkownika. Anonimowe funkcje obsługi przyjmują argument conv
i odsyłają je do siebie
prosta odpowiedź w postaci ciągu znaków dla użytkownika za pomocą funkcji conv.ask()
:
app.intent('Default Welcome Intent', (conv) => { conv.ask('How are you?'); }); app.intent('bye', (conv) => { conv.close('See you later!'); });
Funkcja close()
jest podobna do funkcji ask()
, ale zamyka mikrofon i kończy rozmowę.
Więcej informacji o tworzeniu modułów obsługi intencji znajdziesz tutaj: Utwórz moduł obsługi intencji
Ustawianie modułów obsługi zdarzeń błędów
Aby ustawić moduły obsługi błędów, wywołaj funkcję catch()
w elemencie app
instancji. Jeśli na przykład używasz Dialogflow, jest to
DialogflowApp#catch()
function.)
Poniższy przykład pokazuje prosty moduł obsługi błędów przechwytywania, który wysyła błąd do
w konsoli i wysyła z powrotem prostą odpowiedź w postaci ciągu, aby poprosić użytkownika o
funkcja conv.ask()
:
app.catch((conv, error) => { console.error(error); conv.ask('I encountered a glitch. Can you say that again?'); });
Ustawianie modułów obsługi zdarzeń kreacji zastępczych
Aby ustawić ogólny moduł obsługi awaryjnej, gdy dla przychodzącego żądania nie ma dopasowania do żadnego zamiaru, wywołaj funkcję fallback()
instancji app
. Jeśli na przykład używasz Dialogflow, jest to
DialogflowApp#fallback()
function.)
Poniżej znajduje się przykład prostego modułu obsługi zastępczego, który wysyła prostą
odpowiedź w formie ciągu znaków do promptu użytkownika za pomocą funkcji conv.ask()
:
app.fallback((conv) => { conv.ask(`I couldn't understand. Can you say that again?`); });
Tworzenie modułu obsługi intencji
W tej sekcji omawiamy typowe przypadki użycia modułów obsługi intencji za pomocą biblioteki klienta. Aby zobaczyć dopasowanie biblioteki klienta przejdź do sekcji „Przetwarzanie intencji” w Dowiedz się, jak to działa.
Parametry i konteksty dostępu
Jeśli używasz Dialogflow, możesz zdefiniować parameters oraz konteksty w agencie Dialogflow do obsługi; przekazywać informacje i kontrolować przebieg rozmowy.
Parametry przydają się do rejestrowania ważnych słów, wyrażeń i wartości dotyczących użytkownika zapytań. Dialogflow wyodrębnia odpowiednie parametry z zapytań użytkowników na stronie środowiska wykonawczego i możesz przetworzyć te wartości parametrów w webhooku realizacji, określić, jak reagować na użytkowników.
Gdy użytkownik wyśle żądanie do Twojego działania, instancja DialogflowApp
utworzy obiekt parameters
, który reprezentuje wartości parametrów wyodrębnione przez Dialogflow z tego żądania. Dostęp do tego obiektu uzyskuje się przez nazwę zmiennej params
.
Z tego fragmentu dowiesz się, jak uzyskać dostęp do usługi name
z poziomu
params
obiekt, gdy użytkownik wysyła żądanie:
app.intent('Default Welcome Intent', (conv, params) => { conv.ask(`How are you, ${params.name}?`); });
Oto alternatywny fragment kodu, który robi to samo. Nawiasy klamrowe
({}
) przeprowadza niszczenie JavaScriptu
, aby użyć właściwości name
z obiektu parameters
i użyć jej jako funkcji lokalnej
:
app.intent('Default Welcome Intent', (conv, {name}) => { conv.ask(`How are you, ${name}?`); });
W tym fragmencie kodu nazwa parametru to full-name
, ale jest
zdestrukturyzowana i przypisana do zmiennej lokalnej o nazwie name
:
app.intent('Default Welcome Intent', (conv, {'full-name': name}) => { conv.ask(`How are you, ${name}?`); });
Konteksty to zaawansowana funkcja
Dialogflow. Kontekstów możesz używać do zarządzania stanem, przebiegiem rozmowy
i ich rozgałęzienia. Biblioteka klienta zapewnia dostęp do kontekstu za pomocą
DialogflowConversation#contexts
obiektu. Ten fragment kodu pokazuje, jak ustawić kontekst programowo w webhooku realizacji i jak pobrać obiekt kontekstu:
app.intent('intent1', (conv) => { const lifespan = 5; const contextParameters = { color: 'red', }; conv.contexts.set('context1', lifespan, contextParameters); // ... conv.ask('...'); }); app.intent('intent2', (conv) => { const context1 = conv.contexts.get('context1'); const contextParameters = context1.parameters; // ... conv.ask('...'); }); app.intent('intent3', (conv) => { conv.contexts.delete('context1'); // ... conv.ask('...'); });
Wyniki zapytań o pomoc
Dla wygody biblioteka klienta udostępnia klasy intencji pomocniczej zawierające typowe typy danych użytkownika, o które często proszą akcje. Te m.in. klasy reprezentujące wyniki różnych działań w Actions on Google. intencjami pomocniczymi. Intencji pomocniczych używasz wtedy, gdy żeby Asystent Google obsługiwał te części rozmowy, w których użytkownik musi podać dane wejściowe, aby można było kontynuować rozmowę.
Przykład: wyniki Asystenta potwierdzenia
Intencja pomocnicza potwierdzania pozwala
prosisz użytkownika o potwierdzenie „tak/nie” i uzyskasz odpowiedź.
Ten fragment kodu pokazuje, jak webhook może dostosować odpowiedź na podstawie
na wynikach zwracanych przez intencję pomocniczą potwierdzenia. Dla
pełniejszy przykład: patrz
Confirmation
dokumentacji z zajęć.
// Create Dialogflow intent with `actions_intent_CONFIRMATION` event app.intent('get_confirmation', (conv, input, confirmation) => { if (confirmation) { conv.close(`Great! I'm glad you want to do it!`); } else { conv.close(`That's okay. Let's not do it now.`); } });
Przykład: wyniki w karuzeli
Ten fragment kodu pokazuje, jak webhook realizacji zamówień może dostosować swoją odpowiedź
na podstawie danych wejściowych użytkownika
karuzela. Komponent karuzeli pozwala akcji wyświetlić użytkownikom kilka opcji do wyboru. Pełniejszy przykład znajdziesz w dokumentacji klasy Carousel
.
app.intent('carousel', (conv) => { conv.ask('Which of these looks good?'); conv.ask(new Carousel({ items: { car: { title: 'Car', description: 'A four wheel vehicle', synonyms: ['automobile', 'vehicle'], }, plane: { title: 'Plane', description: 'A flying machine', synonyms: ['aeroplane', 'jet'], } } })); }); // Create Dialogflow intent with `actions_intent_OPTION` event app.intent('get_carousel_option', (conv, input, option) => { if (option === 'one') { conv.close(`Number one is a great choice!`); } else { conv.close(`Number ${option} is a great choice!`); } });
Konfigurowanie obiektów odpowiedzi na rozmowy
Biblioteka klienta udostępnia klasy odpowiedzi na rozmowę, które reprezentują rozbudowane odpowiedzi lub elementy multimedialne, które może wysyłać Twoja akcja. Zazwyczaj wysyłasz te odpowiedzi lub elementy, gdy użytkownicy nie muszą nic robić, aby kontynuować rozmowę.
Przykład: obraz
Ten fragment kodu pokazuje, jak webhook realizacji zamówienia może wysłać
Image
w odpowiedzi, która zostanie automatycznie dołączona do odpowiedzi BasicCard
przez
biblioteka:
app.intent('Default Welcome Intent', (conv) => { conv.ask('Hi, how is it going?'); conv.ask(`Here's a picture of a cat`); conv.ask(new Image({ url: '/web/fundamentals/accessibility/semantics-builtin/imgs/160204193356-01-cat-500.jpg', alt: 'A cat', })); });
Wykonywanie asynchronicznych wywołań funkcji
Biblioteka klienta Actions on Google Node.js jest przeznaczona do programowania. Moduł obsługi intencji może zwrócić błąd obietnica korzystna, gdy Webhook realizacji zamówień zakończył generowanie odpowiedzi.
Poniższy fragment kodu pokazuje, jak wywołać funkcję asynchroniczną w zwróci obiekt obietnicy, a następnie odpowiedz z wiadomością, jeśli Twój webhook realizacji otrzymuje „powitanie” intencji. W tym fragmencie kodu obietnica gwarantuje, że Webhook realizacji zwraca odpowiedź konwersacyjną dopiero po przesłaniu obietnicy dla zewnętrzne wywołanie interfejsu API zostało zakończone.
W tym przykładzie używamy fałszywego interfejsu API do pobierania danych pogodowych.
/** * Make an external API call to get weather data. * @return {Promise<string>} */ const forecast = () => { // ... }; app.intent('Default Welcome Intent', (conv) => { return forecast().then((weather) => { conv.ask('How are you?'); conv.ask(`Today's weather is ${weather}.`); }); });
Poniższy uproszczony fragment kodu ma taki sam efekt, ale korzysta z parametru
Funkcja async
await
została wprowadzona w ECMA 2017 (Node.js w wersji 8). Aby użyć funkcji
w Cloud Functions dla Firebase, sprawdź, czy używasz
prawidłowa wersja firebase-tools
i mają prawidłową konfigurację.
app.intent('Default Welcome Intent', async (conv) => { const weather = await forecast(); conv.ask('How are you?'); conv.ask(`Today's weather is ${weather}.`); });
Przechowywanie danych dotyczących rozmów
Biblioteka klienta umożliwia webhookowi realizacji zamówienia zapisywanie danych w rozmowach na potrzeby przyszłego wykorzystania. Kluczowe obiekty, których możesz używać do przechowywania danych, to między innymi:
DialogflowConversation#data
lubActionsSdkConversation#data
: Zapisuje dane w formacie JSON na czas trwania jednej sesji rozmowy między użytkownikiem a akcją.Conversation#user.storage
: zapisywanie danych w formacie JSON przez wiele sesji konwersacji.
Ten fragment kodu pokazuje, jak webhook realizacji zamówienia może przechowywać dane w
arbitralnie zdefiniowaną przez siebie właściwość (someProperty
) i dołącz ją do
Conversation#user.storage
obiektu. Aby uzyskać pełniejszy przykład, zobacz
Conversation#user.storage
dokumentacji z zajęć.
app.intent('Default Welcome Intent', (conv) => { conv.user.storage.someProperty = 'someValue'; conv.ask('...'); });
Obiekt Conversation#user
może służyć do uzyskiwania informacji o użytkowniku, w tym identyfikatora ciągu znaków i danych osobowych. Niektóre pola, takie jak conv.user.name.display
i
conv.user.email
wymaga żądania conv.ask(new Permission)
dla
NAME i conv.ask(new SignIn)
odpowiednio w przypadku Logowanie przez Google.
const {Permission} = require('actions-on-google'); app.intent('Default Welcome Intent', (conv) => { if (conv.user.last.seen) { conv.ask('Welcome back! How are you?'); } else { conv.ask('Nice to meet you! How are you doing?'); } }); app.intent('permission', (conv) => { conv.ask(new Permission({ context: 'To greet you personally', permissions: 'NAME', })); }); // Create Dialogflow intent with `actions_intent_PERMISSION` event app.intent('get_permission', (conv, input, granted) => { if (granted) { conv.close(`Hi ${conv.user.name.display}!`); } else { // User did not grant permission conv.close(`Hello!`); } });
Skalowanie za pomocą oprogramowania pośredniczącego
Bibliotekę klienta możesz rozszerzyć za pomocą oprogramowania pośredniczącego.
Warstwa middleware składa się z co najmniej 1 zdefiniowanej przez Ciebie funkcji, którą biblioteka klienta automatycznie wykonuje przed wywołaniem obsługi intencji. Użycie warstwy pośredniczącej pozwala modyfikować Conversation
instancję i dodać dodatkowe funkcje.
Usługi Dialogflow i Actions SDK udostępniają funkcję app.middleware()
który umożliwia dodawanie właściwości lub klas pomocniczych do obiektu Conversation
instancji.
Oto przykład użycia oprogramowania pośredniczącego:
class Helper { constructor(conv) { this.conv = conv; } func1() { this.conv.ask(`What's up?`); } } app.middleware((conv) => { conv.helper = new Helper(conv); }); app.intent('Default Welcome Intent', (conv) => { conv.helper.func1(); });
Eksportowanie aplikacji
Aby udostępnić webhooka realizacji na platformie internetowej lub bezserwerowej platformie obliczeniowej,
musisz wyeksportować obiekt app
jako publicznie dostępny webhooka.
biblioteka klienta obsługuje wdrażanie w wielu środowiskach
z pudełka.
Te fragmenty kodu pokazują, jak eksportować plik app
w różnych środowiskach wykonawczych:
Przykład: Cloud Functions dla Firebase
const functions = require('firebase-functions'); // ... app code here exports.fulfillment = functions.https.onRequest(app);
Przykład: wbudowany edytor Dialogflow
const functions = require('firebase-functions'); // ... app code here // Exported function name must be 'dialogflowFirebaseFulfillment' exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
Przykład: własny serwer ekspresowy (prosty)
const express = require('express'); const bodyParser = require('body-parser'); // ... app code here express().use(bodyParser.json(), app).listen(3000);
Przykład: własny serwer Express (wiele tras)
const express = require('express'); const bodyParser = require('body-parser'); // ... app code here const expressApp = express().use(bodyParser.json()); expressApp.post('/fulfillment', app); expressApp.listen(3000);
Przykład: brama AWS Lambda API
// ... app code here exports.fulfillment = app;