1. Wprowadzenie
W tym module utworzysz proste działanie przy użyciu Dialogflow i dowiesz się, jak zintegrować tę usługę z Asystentem Google.
Ćwiczenia zostały ułożone w kolejności wykonywania typowych zadań przez programistę w chmurze:
- Tworzenie agenta Dialogflow w wersji 2
- Tworzenie encji
- Utwórz intencje
- Konfigurowanie webhooka z funkcjami GCP Cloud Functions
- Korzystanie z bazy wiedzy do importowania najczęstszych pytań
- Testowanie czatbota
- Włączanie integracji z Asystentem Google
Co utworzysz
Dla udziału w spotkaniu Women in Voice stworzymy aplikację Asystenta Google. Można zapytać o termin następnego spotkania, wskazówek dotyczących książki lub ogólnych pytań na temat grupy. |
Czego się nauczysz
- Jak utworzyć czatbota w Dialogflow 2
- Jak utworzyć linearną rozmowę przy użyciu Dialogflow
- Jak korzystać z elementów
- Jak korzystać z bazy wiedzy
- Jak skonfigurować realizację webhooków za pomocą funkcji Dialogflow i GCP
- Jak przenieść aplikację do Asystenta Google za pomocą Actions on Google
Wymagania wstępne
- Aby utworzyć agenta Dialogflow, będziesz potrzebować tożsamości Google lub adresu Gmail.
- Otrzymasz środki w chmurze GCP za korzystanie z funkcji GCP w chmurze
- Aby pobrać dane agenta, musisz otworzyć ten publiczny Arkusz Google.
- Otwórz w nowej karcie: https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit?usp=sharing.
- Podstawowa znajomość języka JavaScript nie jest wymagana, ale może być przydatna, gdy zechcesz zmienić kod realizacji webhooka.
2. Przygotowanie
Włączanie Aktywności w internecie w przeglądarce
- Upewnij się, że Aktywność w aplikacjach jest włączona:
Tworzenie agenta Dialogflow
- Otwórz: https://console.dialogflow.com
- Na lewym pasku, tuż pod logo, kliknij „Create New Agent” (Utwórz nowego agenta). Jeśli masz istniejących agentów, najpierw kliknij menu.
- Podaj nazwę agenta:
yourname-wiv
(użyj własnej nazwy) - Jako język domyślny wybierz English – en.
- Jako domyślną strefę czasową wybierz najbliższą strefę czasową.
- Nie wybieraj Mega Agent. Dzięki tej funkcji możesz utworzyć agenta nadrzędnego, którego można administrować agentami „sub”. nie są one teraz potrzebne).
- Kliknij Utwórz.
Konfigurowanie Dialogflow
- W menu po lewej stronie kliknij ikonę koła zębatego obok nazwy projektu.
- Wpisz ten opis: Kobiety w Voice
- Przewiń w dół do sekcji Funkcje w wersji beta i obróć przełącznik, by włączyć funkcje beta.
- Przewiń w dół do sekcji Ustawienia logów i odwróć oba przełączniki do rejestrowania interakcji Dialogflow oraz do rejestrowania wszystkich interakcji w usłudze Google Cloud Stackdriver. Będzie nam ona potrzebna później na wypadek, gdyby trzeba było debugować to działanie.
- Kliknij Zapisz.
- Kliknij przycisk Gotowe.
Konfigurowanie Actions on Google
- Kliknij link Asystent Google w panelu po prawej stronie w sekcji Zobacz, jak działa Asystent Google.
Otworzy się strona http://console.actions.google.com.
UWAGA: pamiętaj, aby zalogować się na to samo konto Google co w Dialogflow.
Jeśli dopiero zaczynasz korzystać z Actions on Google, musisz najpierw wypełnić ten formularz:
- Spróbuj otworzyć swoje działanie w symulatorze**, klikając nazwę projektu.**
- Na pasku menu kliknij Programowanie.
Odznacz Dopasuj do ustawienia języka użytkownika. Żeby mieć pewność, że domyślny język Asystenta nie będzie zastępowany przez syntezator zamiany tekstu na mowę.
- Kliknij Zapisz.
- Kliknij Przetestuj na pasku menu.
- Upewnij się, że symulator jest ustawiony na English, i kliknij Porozmawiaj z moją aplikacją testową.
Akcja wyświetli się z podstawową domyślną intencją Dialogflow. Oznacza to, że konfiguracja integracji z aplikacją Action on Google zadziałała.
Skonfiguruj Google Cloud
Aby skorzystać z tego samouczka, musisz mieć konto GCP z kontem rozliczeniowym. Jeśli jeszcze nie masz konta Google, możesz je utworzyć, wykonując czynności opisane poniżej.
Zwykle konto rozliczeniowe wymaga formy płatności, takiej jak karta kredytowa. W przypadku tych warsztatów możemy wykorzystać środki na warsztatach, aby pominąć ten proces.
- Przejdź pod ten adres URL i zaloguj się
- Kliknij: Kliknij tutaj, aby uzyskać dostęp do środków
- Kliknij Zaakceptuj i Dalej
Wszystko gotowe. Udało Ci się utworzyć konto rozliczeniowe z 25 USD, co powinno być wystarczające, aby korzystać z Cloud Functions przez dłuższy czas.
Włączanie interfejsu Google Arkusze API
Jeśli agent wymaga więcej niż odpowiedzi intencji statycznej (np. pobierania danych z usługi internetowej, bazy danych lub arkusza), musisz połączyć z nim swoją usługę internetową za pomocą funkcji Realizacja. Połączenie usługi sieciowej umożliwia wykonywanie działań na podstawie wyrażeń użytkownika i wysyłanie dynamicznych odpowiedzi do użytkownika.
Jeśli na przykład użytkownik chce otrzymać poradę na temat bloga lub książki, Twoja usługa internetowa może zajrzeć do bazy danych i wysłać mu artykuł do przeczytania.
W tym samouczku nie użyjemy bazy danych – zamiast tego użyjemy Arkusza Google. Po zaktualizowaniu arkusza zostanie też zaktualizowane działanie Asystenta Google. Super!
- Otwórz ten Arkusz Google w nowej karcie przeglądarki, chyba że już masz to za sobą:
- https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit#gid=1240329448
- WAŻNE: utwórz kopię tego arkusza. Kliknij Plik > Utwórz kopię
- Po skopiowaniu arkusza kliknij Udostępnij.
- Musimy przyznać kontu usługi Dialogflow uprawnienia do edycji. Aby to zrobić, otwórz Dialogflow > Ustawienia (koło zębate).
- Przewiń w dół do sekcji Projekt Google.
- Skopiuj adres e-mail konta usługi. Powinien wyglądać podobnie do tego: dialogflow-<someid>@<my-gcp-project>.iam.gserviceaccount.com
- Wklej to konto usługi w wyskakującym okienku udostępniania w Arkuszach Google i nadaj mu uprawnienia do edycji.
- Następnie musimy zapamiętać identyfikator arkusza, nad którym obecnie pracujemy.
The Sheets URL will look something like this:
https://docs.google.com/spreadsheets/d/1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o/edit#gid=1240329448
But we are only interested in the Sheet id, which is the part between:
https://docs.google.com/spreadsheets/d/ i /edit#gid=1240329448 (bez ukośników).
So it will look something like this: **1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o**
**Write this Sheet ID down**, or copy it to Notepad. In the Webhook steps we will use this again.
- Otwórz w innej karcie przeglądarki. http://console.cloud.google.com. Jeśli masz więcej projektów Google Cloud, aktywuj nowy projekt Dialogflow: yourname-wiv. – W pasku wyszukiwania wyszukaj Google Arkusze API.
- Kliknij tę opcję,a następnie kliknij przycisk Włącz interfejs API Arkuszy Google u góry.
3. Jednostki niestandardowe
Encje to obiekty, wobec których aplikacja lub urządzenie podejmuje działania. Potraktuj go jako parametry / zmienne. W ramach naszych działań zapytamy:
„Chcę otrzymać wskazówkę na temat:
czatbotów
/ Chcę poznać wskazówkę na temat:
voice*”*
Niezależnie od tego, czy powiesz Czatboty, Głos czy oba, zostaną zebrane z niestandardowego elementu, który zostanie użyty jako parametr w moim żądaniu wysyłanym do usługi internetowej.
Więcej informacji o encjach Dialogflow
Tworzenie elementu kanału
- W konsoli Dialogflow kliknij pozycję menu Encje.
- Kliknij Utwórz encję.
- Nazwa jednostki:
tech
(pamiętaj, aby była ona wpisana małymi literami) - Określ opcje za pomocą synonimów. (w interfejsie możesz przechodzić za pomocą klawisza Tab).
Chatbots - Chatbots, Chat, Web
Voice - Voice, Voicebots, Voice Assistants
Both - Both, All
5**.** Przełącz się na tryb **edycji nieprzetworzonej**, klikając przycisk menu obok niebieskiego przycisku zapisywania.
- Zwróć uwagę, że wszystkie elementy można było wpisać także w formacie CSV. Jest to przydatne, gdy masz do utworzenia wiele elementów.
"Chatbots","Chatbots","Chat","Web"
"Voice","Voice","Voicebots","Voice Assistants"
"Both","Both","All"
- Kliknij Zapisz.
4. Przeznaczenie
Dialogflow używa intencji, aby kategoryzować zamiary użytkownika. Intencje zawierają wyrażenia szkoleniowe, które są przykładami tego, co użytkownik może powiedzieć do agenta.
Na przykład użytkownik, który chce się dowiedzieć, kiedy będzie następne zdarzenie, może zapytać:
„Kiedy następne spotkanie?”
Gdy użytkownik napisze lub powie coś (nazywanego wyrażeniem użytkownika), Dialogflow dopasowuje wyrażenie użytkownika do najlepszej intencji agenta. Dopasowanie intencji to tzw. klasyfikacja intencji.
Więcej informacji o intencjach Dialogflow
Zmiana domyślnej intencji powitalnej
Gdy utworzysz nowego agenta Dialogflow, automatycznie zostaną utworzone 2 domyślne intencje. Domyślna intencja powitalna to pierwszy proces, który pojawia się po rozpoczęciu rozmowy z agentem. Domyślna intencja kreacji zastępczej to proces, który pojawia się, gdy agent nie jest w stanie Cię zrozumieć lub nie może dopasować intencji do Twojej wypowiedzi.
- Kliknij Intents (Intencje) > „Intents” (Intencje). Domyślna intencja powitalna
W przypadku Asystenta Google rozpocznie się on automatycznie od domyślnej intencji powitalnej. Dzieje się tak, ponieważ Dialogflow nasłuchuje wydarzenia powitalnego. Możesz też wywołać intencję, wypowiadając jedno z wpisanych wyrażeń na potrzeby trenowania.
Oto wiadomość powitalna dla domyślnej intencji powitalnej:
Użytkownik | Przedstawiciel |
„OK Google, porozmawiaj z <Twoje imię>-WIV” | „Cześć, jestem Anna, jestem wirtualnym agentem Women in Voice”. „Możesz mnie poprosić o informacje o spotkaniach, Women in Voice lub wskazówkę na temat czytania”. |
- Przewiń w dół do sekcji Odpowiedzi.
- Usuń wszystkie odpowiedzi tekstowe.
- Na karcie domyślnej utwórz 3 odpowiedzi. (W przypadku każdego nowego wiersza kliknij Add Responses > Text or SSML Response (Dodaj odpowiedzi > Tekst lub odpowiedź SSML).
- Cześć, mam na imię Anna i jestem wirtualną agentką Women in Voice.
- Możesz mnie zapytać o informacje na temat spotkań, karty Women in Voice lub wskazówki dotyczące czytania.
- Co chcesz wiedzieć?
Konfiguracja powinna być podobna do tej na zrzucie ekranu.
- Poprzednie dane wyjściowe są używane przez czatboty. Możemy je trochę zmienić, zwłaszcza pod kątem Asystenta Google. Będziemy używać języka SSML (Speech Synthesis Markup Language), aby wstawić w zdaniach przerwy. Kliknij kartę Asystent Google.
- Nie włączaj przełącznika Domyślne, ponieważ nie będziemy używać wiadomości od czatbota.
- Kliknij Dodaj odpowiedzi > Prosta odpowiedź
- Dodaj tę wersję tekstową:
Hey there, I'm Anna, the virtual agent of Women in Voice.
You can ask me for information about meetups, Women in Voice or a reading tip. What would you like to know?
- Następnie kliknij Dostosuj wyjście audio.
- Dodaj też tę wersję SSML:
<speak><p><s>Hey there, I'm Anna, the virtual agent of Women in Voice.</s><s>
You can ask me for information about meetups, Women in Voice or a reading tip.</s></p><break time="500ms"/><p><s>
What would you like to know?</s></p></speak>
Konfiguracja powinna być podobna do tej na zrzucie ekranu.
- Kliknij Zapisz.
Dowiedz się więcej o SSML w Actions on Google.
- Przetestujmy tę intencję. Najpierw możemy przetestować to narzędzie w symulatorze Dialogflow.
Wpisz: Cześć. Powinien zwrócić ten komunikat.
- Teraz wróć do konsoli Actions on Google.
(Możesz zachować je na innej karcie).
Kliknij „Talk to my test app” (Porozmawiaj z aplikacją testową). I odsłuchaj nową wiadomość powitalną.
Modyfikowanie domyślnej intencji kreacji zastępczej
- Kliknij Intents (Intencje) > „Intents” (Intencje). Domyślna intencja zastępcza
- Przewiń w dół do sekcji Odpowiedzi.
- Usuń wszystkie odpowiedzi tekstowe.
- Na karcie domyślnej utwórz następujące odpowiedzi, każdą w nowym wierszu, aby przełączały się między tymi opcjami:
Sorry, can you repeat this?
I didn't understand you. You can ask me questions about Women in Voice, a book or article tip or when the next meetup will be.
- Kliknij Zapisz.
Pamiętaj, że jeśli nie podasz danych wyjściowych Asystenta Google, użyjemy domyślnego.
Tworzenie intencji Stop
- Kliknij pozycję menu Intents (Intencje).
- Kliknij Create Intent (Utwórz intencję).
- Wpisz nazwę intencji:
Stop Intent
- Kliknij Dodaj wyrażenia na potrzeby trenowania.
No
That's it
Bye
I don't want that
Goodbye
It's ok for now
Quit
I want to stop
Close this
End the conversation
- Przewiń w dół do sekcji Odpowiedzi.> Dodaj odpowiedź
- Dodaj te opcje tekstu:
Alright! Hopefully we will see you at one of our meetups!
No problem. See you at one of our meetups!
- Przestaw przełącznik: Ustaw tę intencję jako koniec rozmowy. Dzięki temu po dopasowaniu tej intencji spowoduje to zamknięcie działania Asystenta Google.
- Kliknij Zapisz.
Utwórz intencję spotkania
Intencja spotkania będzie zawierać tę część rozmowy:
Użytkownik | Przedstawiciel |
„Kiedy następne spotkanie?” | „Następne spotkanie odbędzie <data> o <time> w <location>. Tematem będzie <topic>. A głośniki to: <speakers>. Możesz się zarejestrować, korzystając z naszego newslettera”. |
- Kliknij pozycję menu Intents (Intencje).
- Kliknij Create Intent (Utwórz intencję).
- Wpisz nazwę intencji:
Meetup Intent
(pamiętaj, aby użyć wielkiego M i wielkiego I. Jeśli intencja zostanie przeliterowana inaczej, usługa backendu nie będzie działać. - Kliknij Dodaj wyrażenia na potrzeby trenowania.
When is the next meetup?
Do you have any events?
Which events are in the planning?
Are there meetup events soon?
I would love to attend a meetup
Can I join a virtual meetup?
When will you get together?
Can I join?
What does your calendar look like?
- Kliknij Realizacja > > Włącz realizację
- Przesuń przełącznik Włącz wywołanie webhooka dla tej intencji.
- Kliknij Zapisz.
Utwórz intencję dotyczącą napiwków
Intencja wskazówek będzie zawierać tę część rozmowy:
Użytkownik | Przedstawiciel |
„Chcę wskazówkę dotyczącą czytania”. | „Czy chcesz dowiedzieć się więcej o czatbotach, Voice czy obu tych czatach?” |
"Głos" | „OK, oto wskazówka dnia. Tag <type> <title> <author>. Chcesz otrzymać kolejną wskazówkę dotyczącą książki lub artykułu? Mogę też opowiedzieć Ci więcej o spotkaniach lub naszej ofercie. W czym mogę pomóc?” |
- Ponownie kliknij pozycję menu Intents (Intencje).
- Kliknij Create Intent (Utwórz intencję).
- Wpisz nazwę intencji:
Tip Intent
(pamiętaj, aby użyć wielkiego L i dużego I. Jeśli intencja zostanie przeliterowana inaczej, usługa backendu nie będzie działać. - Kliknij Add TrainingPhrase (Dodaj wyrażenia na potrzeby trenowania) i dodaj:
Can I get a tip for an article?
I would like to receive a reading tip
Any book tips?
What's nice to read?
I want to learn more about Chatbots, what should I read?
What are nice blogs?
Do you have book suggestions?
I want to receive information about Both
Can I have Chatbots reading tip
I would like to read more about Voice
Voice please
Both are okay.
Reading tip
Tip
Blog
Article
Book
Book suggestions
Yes
Yeah
Another tip
Yes one more
- Przewiń do sekcji Działanie i parametry.
- Oznacz element tech jako wymagany
Kliknij Zdefiniuj prompt i wpisz:
Do you want to read more about Chatbots, Voice or Both?
- Kliknij Realizacja > > Włącz realizację
Tym razem nie kodujemy na stałe odpowiedzi. Odpowiedź będzie pochodzić z funkcji w Cloud Functions. Zmień więc przełącznik Włącz wywołanie webhooka dla tej intencji.
Kliknij Realizacja > > Włącz realizację
- Przesuń przełącznik Włącz wywołanie webhooka dla tej intencji.
- Kliknij Zapisz.
5. Oprogramowanie sprzęgające wiedzy
Oprogramowanie sprzęgające wiedzy uzupełnia zdefiniowane intencje. Analizują dokumenty wiedzy, aby znaleźć automatyczne odpowiedzi. (np. najczęstsze pytania lub artykuły z plików CSV, witryn online czy nawet plików PDF). Aby je skonfigurować, należy zdefiniować co najmniej 1 bazę wiedzy, która jest zbiorem dokumentów wiedzy.
Więcej informacji o usłudze Knowledge Connectors
Wypróbujmy to.
- Kliknij tag en, by wybrać język angielski w górnym menu.
- W menu wybierz Wiedza (beta).
- Kliknij niebieski przycisk po prawej stronie: Utwórz bazę wiedzy.
- Wpisz nazwę bazy wiedzy; Kobiety w Voice i kliknij Zapisz.
- Kliknij link Utwórz pierwszy.
- Otworzy się okno.
Użyj tej konfiguracji:
Nazwa dokumentu: Arkusz z najczęstszymi pytaniami dotyczącymi kobiet w Voice
Typ wiedzy: najczęstsze pytania
Typ MIME: CSV
- Potrzebujemy danych z tego arkusza, sprawdźmy, czy jest on otwarty, i wybierz kartę Najczęstsze pytania.
- Wybierz Plik > Pobierz > CSV
- Wróć do Dialogflow, kliknij Upload File from Computer (Prześlij plik z komputera) i wybierz pobrany plik CSV. Kliknij Utwórz.
Utworzono bazę wiedzy:
- Kliknij Dodaj odpowiedź.
Utwórz następujące odpowiedzi i kliknij Zapisz:
$Knowledge.Answer[1]
- Kliknij Wyświetl szczegóły.
Zostaną wyświetlone wszystkie najczęstsze pytania wdrożone przez Ciebie w Dialogflow.
Prościzna!
Pamiętaj, że możesz też wskazać stronę internetową HTML z odpowiedziami na najczęstsze pytania, aby zaimportować je do pracownika obsługi klienta. Możesz nawet przesłać plik PDF z blokiem tekstu, a Dialogflow zadaje pytania.
- Kliknij Wiedza (beta) w menu Dialogflow, aby wrócić do wszystkich oprogramowania sprzęgającego bazy wiedzy.
- Istnieje możliwość zmiany siły i słabości bazy wiedzy. Ma to sens, kiedy zdajesz sobie sprawę, że najczęściej zadawane pytania wygrywają, czy też przegrywają z powodu własnych intencji. Nie mamy wielu zamiarów, dlatego wzmacniamy naszą bazę wiedzy. Zmień skalę na -0,2. Po przeciągnięciu suwaka wartość zostanie automatycznie zapisana.
Teraz najczęstsze pytania należy traktować jako „materiały dodatkowe” który chcesz dodać do agentów, obok przepływów intencji. Najczęstsze pytania dotyczące bazy wiedzy nie mogą wytrenować modelu. Dlatego zadawanie pytań w zupełnie inny sposób może nie uzyskać dopasowania, ponieważ w ich przypadku nie jest wykorzystywane rozumienie języka naturalnego (modele systemów uczących się). Dlatego czasami warto przekształcać najczęstsze pytania na intencje użytkowników.
6. Realizacja webhooka
Tworzenie funkcji w Google Cloud Functions
- Otwórz stronę http://console.cloud.google.com w innej karcie przeglądarki.
- W menu po lewej stronie wybierz Cloud Functions.
- Kliknij Utwórz funkcję.
- Określ tę konfigurację:
- Nazwa:
dialogflow
- Przydzielona pamięć: 256 MiB
- Wyzwalacz: HTTP
- Skopiuj adres URL do schowka.
- Wybierz Wbudowany edytor.
- Środowisko wykonawcze: NodeJS 8
- Funkcja do wykonania:
dialogflow
- Upewnij się, że to pole wyboru uwierzytelniania jest zaznaczone:
- Oto zawartość pliku package.json. Skopiuj ten kod i wklej go na karcie package.json w edytorze.
Ten fragment kodu wczytuje do Google Cloud prawidłowe biblioteki npm:
{
"name": "dialogflow",
"description": "Cloud Functions",
"engines": {
"node": "8"
},
"dependencies": {
"request": "^2.85.0",
"request-promise": "^4.2.5",
"dialogflow-fulfillment": "^0.6.1",
"actions-on-google": "^2.2.0",
"googleapis": "^48.0.0",
"moment": "^2.24.0"
},
"devDependencies": {
"eslint": "^5.12.0",
"eslint-plugin-promise": "^4.0.1",
"ngrok": "^3.2.7"
},
"private": true
}
- Oto zawartość pliku index.js. Skopiuj ten kod i wklej go na karcie index.js w edytorze.
Ten fragment kodu zintegruje się z biblioteką googleapis, aby pobierać dane z Arkuszy Google. Wykorzystuje bibliotekę actions-on-google do wyświetlania kart na urządzeniu z Asystentem Google. Do klasyfikowania intencji Dialogflow korzysta z biblioteki dialogflow-fulfillment. Wykorzystuje też moment z biblioteki do obsługi obiektów daty i godziny.
/* jshint esversion: 8 */
'use strict';
process.env.DEBUG = 'dialogflow:debug';
const ACCOUNTS_SHEET_ID = '1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY';
const {
BasicCard,
Button,
} = require('actions-on-google');
const {google} = require('googleapis');
const moment = require('moment');
moment.locale('nl');
const { WebhookClient } = require('dialogflow-fulfillment');
var books;
var meetups;
const SHEETS_SCOPE = 'https://www.googleapis.com/auth/spreadsheets.readonly';
/**
* Authenticates the Sheets API client for read-only access.
*
* @return {Object} sheets client
*/
async function getSheetsClient() {
// Should change this to file.only probably
const auth = await google.auth.getClient({
scopes: [SHEETS_SCOPE],
});
return google.sheets({version: 'v4', auth});
}
/**
* Return a natural spoken date
* @param {string} date in 'YYYY-MM-DD' format
* @returns {string}
*/
var getSpokenDate = function(date){
let datetime = moment(date, 'YYYY-MM-DD');
return `${datetime.format('D MMMM')}`;
};
/* When the tipIntent Intent gets invoked. */
function tipIntent(agent) {
var par = agent.parameters.tech;
var selection = [];
//console.log(par);
//console.log(books);
for(var i = 0; i<books.length; i++){
if(books[i][2].toLowerCase() == par.toLowerCase()) {
selection.push(books[i]);
}
}
var random = Math.floor(Math.random() * selection.length);
var booktip = selection[random];
//console.log(selection[random]);
let spokenText = `<p><s>Alright, here's the tip of the day!</s></p><p>The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.</p>`;
let writtenText = `Alright, here's the tip of the day! The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`;
//console.log(booktip[8]);
if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
let conv = agent.conv();
conv.ask(`<speak>${spokenText}</speak>`);
conv.ask(new BasicCard({
title: `Tip of the day!`,
subtitle: `${par}`,
text: `The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`,
buttons: new Button({
title: 'Read',
url: `${booktip[8]}`,
})
}));
conv.ask(`<speak><p><s>Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?</s></p></speak>`);
// Add Actions on Google library responses to your agent's response
agent.add(conv);
} else {
agent.add(writtenText + ' Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?');
}
}
function meetupIntent(agent) {
let conv = agent.conv();
let record;
console.log(meetups);
for(var i = 0; i<meetups.length; i++){
let d = moment(meetups[i][0], 'YYYY-MM-DD');
let today = moment(new Date());
if(moment(d).isSameOrAfter(today)) {
// the i event is not in the past
record = meetups[i];
console.log(record);
break;
}
}
let date = getSpokenDate(record[0]);
let spokenText1 = `The next meetup will be ${date} at ${record[1]} in ${record[3]}.`;
let spokenText2 = `The topic will be <emphasis level="moderate">${record[2]}.</emphasis>`;
let spokenText3 = `You can register via our newsletter.`;
let writtenText = `${spokenText1} The topic will be ${record[2]}. ${spokenText3}`;
if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
conv.ask(`<speak>${spokenText1} ${spokenText2} ${spokenText3}</speak>`);
conv.ask(new BasicCard({
title: `Meetup`,
subtitle: `${record[2]}`,
text: `${record[0]} ${record[1]} - ${record[3]}`,
buttons: new Button({
title: 'Register',
url: `http://www.meetup.com`
})
}));
conv.ask('<speak><p><s>Is there anything else I can help you with?</s></p></speak>');
agent.add(conv);
} else {
agent.add(`${writtenText} Is there anything else I can help you with?`);
}
}
exports.dialogflow = async (request, response) => {
var agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
const client = await getSheetsClient();
const allBooks = await client.spreadsheets.values.get({
spreadsheetId: ACCOUNTS_SHEET_ID,
range: 'Books&Blogs!A:I',
});
const allEvents = await client.spreadsheets.values.get({
spreadsheetId: ACCOUNTS_SHEET_ID,
range: 'Meetups!A:D',
});
books = allBooks.data.values;
meetups = allEvents.data.values;
books.shift();
meetups.shift();
var intentMap = new Map();
intentMap.set('Tip Intent', tipIntent);
intentMap.set('Meetup Intent', meetupIntent);
agent.handleRequest(intentMap);
};
- Kliknij link Zmienne środowiskowe, sieć, limity czasu itp.
- Wybierz konto usługi Dialogflow Integrations.
(Domyślnie jest to konto usługi GAE App Engine, ale powinno to być to samo konto usługi, które zostało udostępnione w Arkuszach Google w pierwszych krokach tego samouczka).
- Zanim wdrożymy funkcję w Cloud Functions. Zmienimy jeden wiersz w kodzie na karcie index.js. Trzeci wiersz kodu:
const
ACCOUNTS_SHEET_ID = '1Yo_E8KONgSiUm00ZmTOqtjXCwULmc2JuI3sjxRyvrkE';
W jednym z pierwszych kroków zapisaliśmy ten klawisz w Notatniku. Skopiuj i wklej ten identyfikator w kodzie.
- Teraz jesteśmy gotowi. Kliknij przycisk Utwórz. Zajmie to chwilę, ponieważ wdraża Twoją funkcję bezserwerową.
Włączanie realizacji w Dialogflow
- Wróć do Dialogflow
- Kliknij Fulfillment (Realizacja) w menu głównym.
- Włącz przełącznik Webhook.
- Wpisz adres URL funkcji w Cloud Functions, która została skopiowana do schowka.
Na przykład: https://us-central1-leeboonstra-wiv-uhtefa.cloudfunctions.net/dialogflow
- Kliknij Zapisz.
- Przetestujmy webhooka, by sprawdzić, czy kod działa, i przetestujemy przepływy bezpośrednio w symulatorze Dialogflow.
7. Actions on Google
Actions on Google to platforma programistyczna Asystenta Google. Umożliwia opracowywanie przez inne firmy „działań” – apletów Asystenta Google, które zapewniają rozszerzone funkcje.
Musisz wywołać działanie Google, prosząc Google o otwarcie aplikacji lub komunikowanie się z nią.
Spowoduje to otwarcie działania, zmianę głosu, a poza tym opcja Zakres Asystenta Google. Oznacza to, że wszystkie, o które poprosisz agenta, musisz od tego momentu utworzyć samodzielnie. Nie możesz nagle zapytać Asystenta Google o pogodę Google, jeśli tego chcesz. najpierw zamknij (zamknij) zakres bieżącego działania (aplikacji).
Testowanie swojego działania w symulatorze Asystenta Google
Przetestujmy ten wątek:
Użytkownik | Asystent Google |
„OK Google, porozmawiaj z aplikacją testową”. | „Pobieram testową wersję aplikacji”. |
Użytkownik | Twoje-imię-nazwisko-WIV |
- | „Cześć, mam na imię Anna, jestem wirtualnym agentem Women in Voice. Możesz mnie poprosić o informacje na temat spotkań, funkcję Women in Voice lub wskazówkę na temat czytania. Co chciałabyś wiedzieć?” |
Czy mogę mieć wskazówkę dla bloga? | „Czy chcesz dowiedzieć się więcej o czatbotach, Voice czy obu tych czatach?” |
Czatboty | „OK, oto wskazówka dnia. Czatboty z artykułu i wyzwanie niewidocznych przywilejów Cobusa Greylinga. Poproszę o kolejną książkę lub poradę. Mogę też opowiedzieć Ci więcej o spotkaniach lub naszej ofercie. W czym mogę pomóc?” |
Kiedy jest następne spotkanie? | „Następne spotkanie odbędzie się 29 kwietnia o 18:00 na wirtualnym spotkaniu. Tematem będą warsztaty online: Create Google Actions with Dialogflow (Tworzenie akcji Google przy użyciu Dialogflow). Możesz się zarejestrować, korzystając z naszego newslettera. Czy mogę Ci jeszcze w czymś pomóc?”. |
Jaki jest adres URL Twojej witryny? | „Znajdziecie nas na stronie www.womeninvoice.com. Czy mogę Ci jeszcze w czymś pomóc? |
Nie o to, dziękuję | „OK! Mam nadzieję, że zobaczymy się na którymś z naszych spotkań”. |
- Przełącz się z powrotem na symulator Asystenta Google
Otwórz: https://console.actions.google.com
- Kliknij ikonę mikrofonu i zadaj pytanie:
Talk to my test app.
- Teraz zadajmy sobie te pytania:
Can I have a tip for a blog?
Powinno to zwrócić:
„Czy chcesz dowiedzieć się więcej o czatbotach, Voice czy obu tych czatach?”
Chatbots
„OK, oto wskazówka dnia. „Czatboty z artykułu i wyzwanie niewidocznych przywilejów Cobusa Greylinga”.
Chcesz otrzymać wskazówkę dotyczącą kolejnej książki lub artykułu? Mogę też opowiedzieć Ci więcej o spotkaniach lub naszej ofercie. W czym mogę pomóc?”
- Spróbujmy znaleźć inną wersję tego samego pytania:
"Yes, I want to read more about Voice"
„OK, oto wskazówka dnia. The Book Designing Voice Interfaces: zasady konwersacji. ... z Cathy Pearl.
Chcesz otrzymać wskazówkę dotyczącą kolejnej książki lub artykułu? Mogę też opowiedzieć Ci więcej o spotkaniach lub naszej ofercie. W czym mogę pomóc?”
Zwróć uwagę, że nigdy wcześniej nie używałeś(-aś) tego wyrażenia szkoleniowego w Dialogflow. Pasował do odpowiednich intencji.
Zwróć też uwagę na to, że nie otrzymałeś(-aś) kolejnego pytania, ponieważ udało Ci się przekazać wystarczającą ilość informacji, aby można było kontynuować.
- Przejdź do Dialogflow za pomocą tych wyrażeń:
What's the URL for your website
Bye
Błędy? Sprawdź dzienniki.
Za każdym razem, gdy używasz narzędzia console.log()
w kodzie funkcji w Cloud Functions, dane są zapisywane w logach GCP (Stackdriver). Aby uzyskać dostęp do tych logów, otwórz konsolę Cloud > Logowanie.
W pierwszym menu kliknij Funkcja w Cloud Functions > w oknie dialogowym.
8. Gratulacje
Udało Ci się utworzyć pierwsze działanie Asystenta Google w Dialogflow. Gratulacje!
Jak być może wiesz, działanie było wykonywane w trybie testowym, który jest powiązany z Twoim kontem Google. Do zalogowania się na urządzeniu Nest lub w aplikacji Asystent Google na telefonie z iOS lub Androidem przy użyciu tego samego konta. Możesz też przetestować swoje działanie.
To jest wersja demonstracyjna na warsztatach. Jeśli jednak tworzysz rzeczywiste aplikacje dla Asystenta Google, możesz przesłać swoje działanie do zatwierdzenia. Więcej informacji znajdziesz w tym przewodniku
Omówione zagadnienia
- Jak utworzyć czatbota w Dialogflow 2
- Jak tworzyć encje niestandardowe w Dialogflow
- Jak utworzyć linearną rozmowę przy użyciu Dialogflow
- Jak skonfigurować realizację webhooków za pomocą Dialogflow i Google Cloud Functions
- Jak przenieść aplikację do Asystenta Google za pomocą Actions on Google
Co dalej?
Podobał Ci się ten moduł związany z kodowaniem? Zapoznaj się z tymi wspaniałymi laboratoriami.
- Tworzenie akcji przewodnika po programach telewizyjnych przy użyciu Dialogflow i Actions on Google
- Tworzenie działań dla Asystenta Google przy użyciu Dialogflow (poziom 1)
- Tworzenie działań dla Asystenta Google przy użyciu Dialogflow (poziom 2)
- Tworzenie działań dla Asystenta Google przy użyciu Dialogflow (poziom 3)
- Informacje o realizacji przez integrację Dialogflow z Kalendarzem Google
- Integracja Google Cloud Vision API z Dialogflow