1. Zanim zaczniesz
Z tego modułu praktycznego dowiesz się, jak tworzyć chatboty do obsługi klienta za pomocą Dialogflow CX, czyli platformy Conversational AI (CAIP) do tworzenia interfejsów konwersacyjnych. Dialogflow CX może wdrażać wirtualnych agentów, takich jak chatboty, boty głosowe czy bramki telefoniczne, oraz obsługiwać wiele kanałów w ponad 50 językach.
Z tego ćwiczenia w Codelabs dowiesz się, jak utworzyć chatbota do witryny dla firmy handlu detalicznego. Fikcyjna firma, dla której tworzymy chatbota, nazywa się G-Records. G-Records to wytwórnia płytowa z Kalifornii specjalizująca się w muzyce rockowej. Podpisała kontrakty z 4 zespołami rockowymi: Alice Googler, G's N' Roses, The Goo Fighters i The Google Dolls. G-Records sprzedaje gadżety zespołów wszystkim fanom rocka.
Pod koniec tego Codelab możesz użyć chatbota, aby zamówić koszulki lub muzykę, albo zadać pytanie dotyczące zamówienia.
Czego się nauczysz
W trakcie ćwiczeń dowiesz się, jakie zalety ma Dialogflow CX w porównaniu z Dialogflow ES. Poruszane są w nim te zagadnienia:
- Jak utworzyć wirtualnego agenta Dialogflow CX w Google Cloud
- Dowiedz się, jak tworzyć przepływy
- Dowiedz się, jak tworzyć elementy
- Dowiedz się, jak tworzyć intencje
- Dowiedz się, jak tworzyć strony i strony przejścia za pomocą modułów obsługi stanów
- Dowiedz się, jak przekształcać strony za pomocą ścieżek związanych z zamiarem
- Dowiedz się, jak przełączać strony za pomocą parametrów i warunkowych tras
- Dowiedz się, jak zwracać odpowiedzi warunkowe za pomocą funkcji systemowych
- Dowiedz się, jak tworzyć wiadomości zapasowe
- Dowiedz się, jak korzystać z symulatora
- Dowiedz się, jak tworzyć testy i testować pokrycie
Ostateczny projekt agenta Dialogflow CX będzie wyglądał tak:
Czego potrzebujesz
- Aby utworzyć agenta Dialogflow CX, musisz mieć adres Google Identity lub Gmail.
- Dostęp do Google Cloud.
2. Konfiguracja środowiska
Tworzenie projektu Google Cloud
Dialogflow CX działa w Google Cloud, dlatego musisz utworzyć projekt Google Cloud. Projekt porządkuje wszystkie zasoby Google Cloud. Składa się on z zespołu współpracowników, włączonych interfejsów API (i innych zasobów), narzędzi monitorowania, informacji o płatnościach oraz kontroli uwierzytelniania i dostępu.
Podczas tworzenia nowego projektu musisz wpisać Nazwa projektu. Musisz je połączyć z istniejącym kontem rozliczeniowym i organizacją.
Konto rozliczeniowe służy do określania, kto płaci za dany zestaw zasobów. Może być ono powiązane z co najmniej jednym projektem. Korzystanie z projektu jest obciążane powiązanym kontem rozliczeniowym. W większości przypadków płatności konfigurujesz podczas tworzenia projektu. Więcej informacji znajdziesz w dokumentacji rozliczeń. Sprawdź, czy w projekcie Cloud włączone są płatności.
Włączanie interfejsu Dialogflow API
Aby korzystać z Dialogflow, musisz włączyć interfejs Dialogflow API w projekcie.
- Wybierz projekt, w którym chcesz włączyć interfejs API, i kliknij Dalej.
- Zwiń menu Interfejsy API i usługi i kliknij Utwórz dane logowania.
- Kliknij Dane aplikacji.
- Odpowiedz Nie, nie używam, jeśli nie korzystasz obecnie z Kubernetes Engine, App Engine ani Cloud Functions.
- Kliknij przycisk Gotowe.
Tworzenie nowego agenta Dialogflow CX
Aby utworzyć nowego agenta Dialogflow CX, otwórz najpierw konsolę Dialogflow CX:
- Wybierz utworzony wcześniej projekt Google Cloud.
- Kliknij Utwórz agenta.
Wypełnij formularz podstawowych ustawień agenta:
- Możesz wybrać dowolną wyświetlaną nazwę.
- Jako lokalizację wybierz us-central1.
- Wybierz preferowaną strefę czasową.
- Wybierz en - English jako język domyślny.
Kliknij Utwórz.
Wszystko gotowe. Możemy w końcu zacząć modelować naszego agenta wirtualnego.
3. Przepływy
Złożone dialogi często obejmują wiele tematów. W przypadku chatbota, który tworzymy dla G-Records na potrzeby sprzedaży gadżetów zespołu, dialogi dotyczyłyby katalogu produktów, płatności, stanu zamówienia i pytań dotyczących obsługi klienta. Te tematy rozmów można podzielić na przepływy.
Przepływy umożliwiają zespołom pracę nad poszczególnymi ścieżkami rozmów. Dobrą praktyką jest uproszczenie procesu, aby mieścił się na ekranie i był bardziej modułowy.
Przepływy to nowa koncepcja w Dialogflow CX. Dialogflow Essentials zawiera koncepcję Mega Agents, która jest w pewnym sensie podobna do przepływów. Jednak prawdopodobnie będziesz korzystać z przepływów znacznie częściej.
W dalszej części tego laboratorium użyjemy obsług stanów, które mogą zakończyć przepływ (przejdzie on wtedy do następnego lub poprzedniego przepływu) lub zakończyć pełną sesję agenta.
Utwórzmy kilka przepływów.
Tworzenie przepływów
- W Dialogflow CX kliknij ikonę + > Utwórz przepływ.
- Wpisz nazwę:
Catalog
i naciśnij klawisz Enter.
Pierwszy przepływ Katalog został utworzony. Teraz utwórz pozostałe przepływy danych:
Order Process
My Order
Customer Care
W dalszej części tego modułu skonfigurujemy moduły stanu strony, dzięki czemu wizualizacja będzie wyglądać tak:
Symulator
Po prawej stronie konsoli Dialogflow CX możesz przetestować wirtualnego agenta za pomocą wbudowanego symulatora. Możesz przetestować rozmowę od początku lub od konkretnego procesu.
- W prawym górnym rogu ekranu kliknij przycisk Testuj agenta.
- W polu „Porozmawiaj z obsługą klienta” wpisz:
Hello
Wirtualny agent odpowie domyślnym tekstem powitalnym: Witam! W czym mogę Ci pomóc?
Zmieńmy domyślny tekst powitalny.
Domyślny proces uruchamiania
Zacznijmy od utworzenia trasy zamiaru, która zostanie uruchomiona po powitaniu agenta wirtualnego.
- Na pasku bocznym po lewej stronie w sekcji Tworzenie > Przepływy kliknij Domyślny początek przepływu i wybierz węzeł drzewa Start.
Otworzy się strona Start. Na pasku bocznym Tworzenie > Strony została automatycznie wybrana strona Start.
- W sekcji Start > Routes (Start > Routes) kliknij Default Welcome Intent (Domyślna intencja powitalna).
Intencje dzielą intencje użytkownika na kategorie w ramach jednej kolejki. W Dialogflow CX intencje mogą być częścią modułu obsługi stanu, aby kierować do następnej aktywnej strony lub do realizacji.
- Usuń wszystkie wpisy Agent says i dodaj ten nowy tekst:
Welcome, I am the virtual agent of G-Records, a fictional rock label. You can order artists merchandise, ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?
Aby usprawnić rozmowę, potrzebujemy też przycisków szybkiej odpowiedzi lub sugestii.
- Kliknij Dodaj opcję dialogu > Dane niestandardowe i użyj poniższego fragmentu kodu.
- Użyj podanego niżej fragmentu kodu jako niestandardowego ładunku i kliknij Zapisz.
Więcej informacji o niestandardowych danych znajdziesz w dokumentacji.
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Przetestuj intencję powitalną w symulatorze.
Zastanawiasz się pewnie, dlaczego nie widzisz żadnych treści rozszerzonych. Dzieje się tak, ponieważ treści multimedialne, takie jak sugestie, są zależne od integracji. Poniższe czynności wymagają konta rozliczeniowego, ale jeśli go nie masz, możesz je pominąć.
- W panelu bocznym po lewej stronie kliknij Zarządzaj > Integracje.
- Wybierz Dialogflow Messenger i kliknij Połącz.
- W wyskakującym okienku kliknij Włącz.
Pojawi się kolejne okienko, tym razem z kodem JavaScript do integracji, który możesz wkleić w witrynie, aby zintegrować komponent Dialogflow Messenger. Ponieważ nie mamy jeszcze witryny, przetestujemy agenta wirtualnego bezpośrednio w narzędziu.
- Kliknij link Wypróbuj.
- Aby otworzyć okno czatu, kliknij ikonę chatbota w prawym dolnym rogu. Aby rozpocząć rozmowę, wpisz
Hello
.
Gdy klikniesz sugestie, agent wirtualny nie zrozumie, co masz na myśli. Dzieje się tak, ponieważ nasz wirtualny agent nie przełącza się jeszcze między stanami. Możemy to zrobić w Dialogflow CX za pomocą stron. Kontynuując ten moduł, najpierw utworzymy elementy i intencje.
4. Typy encji
Typy jednostek służą do kontrolowania sposobu wyodrębniania danych z danych wprowadzanych przez użytkowników. Typy encji Dialogflow CX są bardzo podobne do typów encji Dialogflow ES. Dialogflow udostępnia wstępnie zdefiniowane elementy systemu, które mogą pasować do wielu typowych typów danych. Istnieją na przykład elementy systemowe do dopasowywania dat, godzin, kolorów, adresów e-mail itp. Możesz też tworzyć własne elementy niestandardowe do dopasowywania danych niestandardowych.
Zanim zaczniemy projektować strony w ramach procesu, zacznijmy od przygotowania wszystkich niestandardowych elementów. Utworzymy te jednostki:
Tworzenie jednostek
Utwórz encję Wykonawca.
- Kliknij Zarządzaj > Typy jednostek.
- Kliknij + Utwórz.
- Wyświetlana nazwa:
Artist
- Podmioty:
The Google Dolls
(z synonimem:Google Dolls
)The Goo Fighters
(z synonimem:Goo Fighters
)G's N' Roses
(z synonimem:Gs and Roses
)Alice Googler
- Kliknij Opcje zaawansowane i zaznacz Dopasowanie nieprecyzyjne. (jeśli źle zapiszesz nazwę zespołu, może ona nadal pasować do odpowiedniej jednostki).
- W sekcji Opcje zaawansowane zaznacz też pole Zatłumacz w dzienniku. (jeśli źle wpiszesz nazwę zespołu, zostanie ona poprawiona w logu).
- Kliknij Zapisz.
Potrzebujemy też elementu Merch:
- Kliknij Zarządzaj > Typy jednostek.
- Kliknij + Utwórz.
- Wyświetlana nazwa:
Merch
- Podmioty:
T-shirt
Longsleeve
(z synonimem:Longsleeve shirt
)Tour Movie
Digital Album
(z synonimem:MP3 Album
,MP3
)CD
(z synonimamiDisc
,Physical CD
)
- Kliknij Zapisz.
Potrzebujemy też elementu Album:
- Kliknij Zarządzaj > Typy jednostek.
- Kliknij + Utwórz.
- Wyświetlana nazwa:
Album
- Podmioty:
Live
Greatest Hits
(z synonimem:Hits
)
- Kliknij Zapisz.
Potrzebujemy też typu rozmiar:
- Kliknij Zarządzaj > Typy jednostek.
- Kliknij + Utwórz.
- Wyświetlana nazwa:
ShirtSize
- Podmioty:
XS
(z synonimem:Extra Small
)S
(z synonimem:Small
)M
(z synonimem:Medium
)L
(z synonimem:Large
)XL
(z synonimem:Extra Large
)2XL
(z synonimem:Extra Extra Large
)3XL
- Kliknij Zapisz.
Drugi typ to numery zamówień, które zwykle składają się z 4 znaków alfanumerycznych i 3 cyfr. (np. ABCD123)
- Kliknij Zarządzaj > Typy jednostek.
- Kliknij + Utwórz.
- Wyświetlana nazwa:
OrderNumber
- Elementy wyrażenia regularnego
- Encja: [A-Z]{4}[0-9]{3}
- Kliknij Zapisz.
Konfiguracja elementu powinna wyglądać mniej więcej tak:
@Wykonawca:
@Merch:
@Album:
@ShirtSize:
@OrderNumber:
Gdy przygotujemy elementy niestandardowe, możemy przygotować intencje. Kontynuujmy moduł.
5. Przeznaczenie
Intencja kategoryzuje zamiar użytkownika na podstawie jednego zwrotu w rozmowie. W Dialogflow CX zostały one znacznie uproszczone i nie są już elementem składowym sterowania konwersacyjnego. Dialogflow CX używa tylko intencji do dopasowywania do tego, co mówią użytkownicy. W Dialogflow ES musisz powiązać wszystko z intencją (parametry, zdarzenia, realizacja itp.). Intencje w Dialogflow CX zawierają tylko frazy szkoleniowe, dzięki czemu można ich używać wielokrotnie. Nie ma już kontroli nad rozmową. Proces tworzenia intencji jest więc prosty:
Wyrażenia szkoleniowe w intencjach mogą używać elementów do wyodrębniania danych wejściowych „zmiennych”. Dlatego warto z wyprzedzeniem utworzyć typy elementów, co zrobiliśmy na poprzedniej stronie tego laboratorium.
Tworzenie intencji
Zanim zaczniemy projektować strony w ramach ścieżki, zacznijmy od przygotowania wszystkich intencji.
- Kliknij Zarządzaj > Intencje.
- Kliknij + Utwórz.
Użyj tych informacji:
- Wyświetlana nazwa
redirect.artists.overview
- Tekst reklamy
Artists overview: The bands supported by the label
Przewiń w dół i utwórz te frazy szkoleniowe:
Which bands are signed?
Which bands
Which artists
Which artists are part of the record label
Who is part of the label
From which bands can I buy merchandise
Band merchandise
Which music do you have?
I would like to know who are signed to the label
Who are supported by the label
From who can I buy shirts
What music can I order
Can I get an overview of all the artists
- Kliknij Zapisz.
- Teraz utwórz pozostałe intencje. Użyj wyobraźni, aby wymyślić więcej zwrotów na potrzeby treningu. Zalecamy użycie co najmniej 10 wyrażeń szkoleniowych na intencję, aby uwzględnić różne sposoby wywołania tej intencji przez użytkownika. Na potrzeby tego modułu wystarczy mniej.
Oto kilka kwestii, na które warto zwrócić uwagę:
- Pamiętaj, że gdy wpisujesz frazę szkoleniową, Dialogflow CX automatycznie ją oznacza. Jeśli tak się nie stanie, może być konieczne zaktualizowanie elementu (poprzez dodanie synonimu) lub ręczne opatrzenie frazy szkoleniowej adnotacjami.
- Krótsze frazy szkoleniowe: system NLU Dialogflow może też działać z krótszymi frazami szkoleniowymi. Poniżej znajdziesz kilka przykładów.
- Nadmierne trenowanie: zbyt wiele fraz szkoleniowych dla danego zamiaru może spowodować nadmierne trenowanie i mniej pożądany wynik. Sprawdzoną metodą jest stosowanie iteracyjnego i przyrostowego testowania oraz dodawanie wyrażeń na potrzeby trenowania na wypadek, gdyby nie było dopasowania do zamiaru.
Wyświetlana nazwa | Frazy treningowe |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Teraz, gdy mamy gotowe elementy wielokrotnego użytku (przepływy, elementy i intencje), możemy je połączyć, tworząc strony i moduły stanu.
6. Strony i obsługa stanu
Rozmowę Dialogflow CX (sesję) można opisać i przedstawić jako ograniczony automat stanów. Weźmy na przykład automat vendingowy. Można go modelować jako maszynę stanów skończonych. Ma ona następujące stany: „Czekanie na monety”, „Wybierz cukierka” i „Daj cukierka”. W zależności od zestawu danych przechodzi między tymi stanami. Na przykład włożenie monety powoduje przejście automatu z stanu „Czekanie na monety” do „Wybierz słodycze”. Strony umożliwiają modelowanie tych stanów w przypadku wirtualnego agenta Dialogflow CX.
Gdy użytkownik wchodzi w interakcję z Dialogflow CX w ramach rozmowy, rozmowa przemieszcza się z strony na stronę, więc w każdej chwili jest dokładnie jedna bieżąca strona, która jest uważana za aktywną, a także przepływ powiązany z tą stroną jest uważany za aktywny.
W przypadku każdego schematu definiujesz wiele stron, które po połączeniu mogą przeprowadzić pełną rozmowę na tematy, do których przeznaczony jest schemat. Każdy proces ma specjalną stronę początkową. Gdy przepływ staje się aktywny, strona początkowa staje się bieżącą stroną. W przypadku każdej rozmowy bieżąca strona pozostanie taka sama lub przejdzie do innej. Dzięki temu możesz tworzyć większe boty z większą liczbą stron i rozmów.
Strony zawierają wypełnianie (statyczne dialogi wprowadzania lub webhooki), parametry i obsługi stanów. Kontrola rozmowy odbywa się za pomocą modułów obsługi stanu, co pozwala tworzyć różne ścieżki przejścia na inną stronę Dialogflow CX, w tym warunkowe (na potrzeby rozgałęzienia rozmów).
Stan rozmowy jest kontrolowany przez obsługę przejść między stronami za pomocą 3 rodzajów ścieżek:
- Ścieżki zamiaru: kiedy zamiar powinien zostać dopasowany (np. zmiana strony na podstawie tego, co mówi użytkownik). (niebieskie linie na diagramie wizualnym).
- Ścieżki warunków: kiedy należy sprawdzić warunek (np. zmiana strony na podstawie określonych parametrów zapisanych w sesji) (pomarańczowe linie na diagramie wizualnym).
- Moduły obsługi zdarzeń: kiedy należy obsłużyć określone zdarzenie zastępcze (np. brak danych wejściowych lub brak dopasowania, aby jednoznacznie wskazać użytkownikowi ścieżkę dopasowania lub warunku) (linie zielone na diagramie).
Wypowiedzi w rozmowie (czyli treść lub odpowiedź zwracana użytkownikowi) są definiowane przez realizację, która może być statyczna lub dynamiczna:
- Statyczna realizacja: gdy podana jest statyczna odpowiedź.
- Dynamiczna realizacja: wywołanie webhooka realizacji w przypadku odpowiedzi dynamicznych.
W przypadku bota do obsługi sprzedaży utworzymy ścieżki zapytań i zapewnimy statyczne odpowiedzi na pytania, które będą wyświetlane użytkownikowi, gdy tylko aktywuje stronę. Następnie utworzymy parametry z trasami warunków, aby zebrać informacje potrzebne do złożenia zamówienia na towary.
Trasy intencji strony
Tworzenie stron w domyślnym procesie uruchamiania
Oto schemat przepływu danych domyślnego procesu uruchamiania:
Kliknijmy razem:
- Kliknij Utwórz > Domyślny proces uruchamiania.
- Kliknij Strona startowa.
- Kliknij ikonę + obok opcji Trasy.
- Dodaj redirect.artists.overview
- Przewiń w dół do sekcji Przejście i przejdź do procesu Katalog.
- Kliknij Zapisz.
- Powtórz powyższe kroki w przypadku
redirect.product.overview
i 11 innych wierszy z tabeli:
Strona (w trakcie oglądania) | Trasa > Intencje | Trasa > Przejście do |
Rozpocznij |
| - |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: obsługa klienta |
Rozpocznij |
| Proces: obsługa klienta |
Rozpocznij |
| Proces: obsługa klienta |
Rozpocznij |
| Scenariusz: Moje zamówienie |
Rozpocznij |
| Scenariusz: Moje zamówienie |
Rozpocznij |
| Scenariusz: Moje zamówienie |
Rozpocznij |
| Strona: Zakończ sesję |
Domyślny proces uruchamiania będzie działać jak menu opcji podczas rozmowy z obsługą klienta. Jednak w tym przypadku agenta konwersacyjnego trenuje się za pomocą języka naturalnego, a frazy treningowe są zawarte w intencjach. Dlatego interakcja jest napędzana przez rozmowę, a nie przez opcje DTMF, co sprawia, że jest bardziej naturalna i ludzkia.
Tworzenie stron w procesie tworzenia katalogu
Ten zapis czatu dotyczy procesu dotyczącego katalogu:
> "Hi"
"Welcome, I am the virtual agent of G-Records, a fictional rock label.
You can order artists merchandise, ask questions about your order or shipping,
and I can tell you more which artists are currently signed with us. How can I help?"
> "Which bands are signed with this record label?"
"The following bands are signed with G-Records:
Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
From which of these artists would you like to order merchandise?"
> "Alice Googler"
"You want to rock with Alice Googler merchandise. Awesome!
We sell shirts, music or the tour movie.
Which merchandise item do you want?"
"(Suggestion chips: [Shirts] [Music] [Tour Movie])"
> "I would like to buy a Shirt"
"Do you want a longsleeve or a t-shirt?"
"(Suggestion chips: [T-shirt, Longsleeve, Price?])"
> "What's the price difference?"
"A t-shirt costs $25 and a longsleeve costs $30.
Do you want a longsleeve or a t-shirt?"
> "A t-shirt",
"What shirt size do you want?"
"(Suggestion chips: [XS, S, M, L, XL, 2XL, 3XL])"
> "M"
"A T-shirt of Alice Googler size: M costs $25. Shall I continue to order?"
Dialog będzie inny, jeśli wybierzesz Muzyka lub Film zwiedzania: w przypadku opcji Muzyka dialog będzie wyglądać tak:
> "Music"
"We have a Greatest Hits Album or the Live Album. Which one do you want?"
"(Suggestion chips: [Greatest Hits, Live, Price?])"
> "The Live Album"
"Do you want this album on CD or MP3?"
"(Suggestion chips: [CD, MP3])"
> "What's the price difference?"
"A CD costs $15. The digital album on MP3 costs $10.
Do you want this album on CD or MP3?"
> "Digital Album",
"The Digital Album: Alice Googler - Live costs $10. Shall I continue to order?"
W filmie z prezentacją dialog będzie wyglądał tak:
> "Tour Movie"
"The Tour Movie of G's N' Roses costs $25. Shall I continue to order?
Oto schemat blokowy wszystkich stron w procesie tworzenia katalogu:
Zwróć uwagę na złożoność tego procesu:
- Mogę pominąć pytanie o artystów i zaraz zapytać „Jakie produkty dostępne są w ofercie?”.
- W domyślnym procesie uruchamiania mogę powiedzieć: „Chcę kupić koszulkę z laleczkami Google” lub „Chcę coś kupić”. Oznacza to, że agent wirtualny zapyta Cię o dodatkowe informacje, aby wypełnić pola wymagane dla tych parametrów. Przechodzi bezpośrednio na stronę produktu.
- Okno Ceny pochodzi ze strony Ceny, która zostanie ponownie użyta.
- Dialog w filmie zwiedzania wygląda na bardzo prosty, ale w rzeczywistości zrobimy z nim coś wyjątkowego. Ten fragment dialogu zostanie użyty ponownie, aby użytkownicy mogli go wypełnić bezpośrednio w przypadku jednego z innych usług, jeśli podadzą wszystkie informacje od razu:
> "I want The Goo Fighters longsleeve size S."
"The longsleeve of The Goo Fighters size S costs $30. Shall I continue to order?"
Zacznijmy od połączenia stron.
- Kliknij Utwórz > Katalog.
- Kliknij Strona startowa.
- Kliknij ikonę + obok opcji Trasy.
- Dodaj redirect.artists.overview
- Przewiń w dół do sekcji Przejście, wybierz Strona i wybierz: + nowa strona.
- Użyj nazwy strony:
Artist Overview
i kliknij Zapisz.
Dokończmy resztę procesu:
- Poprzednie kroki można powtórzyć w przypadku kolejnych stron, intencji i spełnień. Przejmij tę tabelę. Strona to strona, którą wybierzesz w schemacie. Ścieżki > Przejście do to nowy schemat lub strona, które utworzysz i do których przejdziesz.
Strona (w trakcie oglądania) | Trasa > Intencje | Trasa > Przejście do |
Start katalogu |
| Omówienie wykonawcy |
Start katalogu |
| Produkt |
Start katalogu |
| Omówienie produktu |
Start katalogu |
| Omówienie produktu |
Start katalogu |
| Koszule |
Start katalogu |
| Muzyka |
Start katalogu |
| Zakończ sesję |
Start katalogu |
| Zakończ proces |
Omówienie wykonawcy |
| Omówienie produktu |
Teraz dodajmy więcej statycznych sposobów realizacji.
- W procesie tworzenia katalogu kliknij stronę Informacje o wykonawcy.
- W sekcji Realizacja zgłoszenia kliknij Edytuj realizację.
- Użyj tych statycznych odpowiedzi (Usługa agenta):
The following bands are signed with G-Records: Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
- Kliknij Zapisz.
- W procesie tworzenia katalogu kliknij stronę Przegląd produktu.
- W sekcji Realizacja zgłoszenia kliknij Edytuj realizację.
- Użyj tej statycznej odpowiedzi (Usługa):
We sell shirts, music or the tour movie.
- Kliknij Zapisz.
Parametry strony
Parametry służą do rejestrowania i odwoływania się do wartości podanych przez użytkownika końcowego podczas sesji. Każdy parametr ma nazwę i typ encji. @Artist
i @Merch
to minimalne parametry, które musimy zebrać, aby złożyć zamówienie na produkty. W przypadku koszulek lub długich rękawów musisz też podać @ShirtSize
. Jeśli chcesz zamówić muzykę, musisz też podać nazwę @Carrier
i @Album
.
Te parametry trzeba będzie oznaczyć jako wymagane. Gdy to będzie wymagane, możesz wyświetlić niestandardowe prompty, aby zapamiętać użytkownika i podać prawidłowe odpowiedzi, dzięki którym te parametry zostaną zebrane. W Dialogflow CX znajdziesz kilka mechanizmów, które mogą Ci w tym pomóc.
W sekcji Parametr możesz na przykład podać niestandardowe statyczne komunikaty o wypełnieniu. Jeśli parametr jest wymagany, wyświetlane będą jego wartości. Te wiadomości zostaną dodane do kolejki odpowiedzi. Podczas rozmowy z użytkownikiem agent może (a czasem powinien) wywołać wiele funkcji realizacji, z których każda może wygenerować wiadomość z odpowiedzią. Dialogflow przechowuje te odpowiedzi w kole odpowiedzi. Więcej informacji o cyklu życia strony oraz kolejności dodawania tych elementów do kolejki odpowiedzi znajdziesz w dokumentacji Dialogflow CX Page Docs.
Tworzenie parametrów na stronie Przegląd wykonawcy
Zdefiniujmy kilka parametrów strony:
- W procesie Katalog kliknij stronę Informacje o wykonawcy.
- Kliknij + w bloku Parametry. Dodaj parametr artist:
- Wyświetlana nazwa:
artist
- Typ podmiotu:
@Artist
- Wymagane: sprawdź
- Usuń w dzienniku: zaznacz
- Teraz dodamy kilka wiadomości z parametrami niestandardowymi. Jeśli parametr artist nie został jeszcze zebrany przez agenta wirtualnego, użytkownik otrzyma odpowiedź agenta dodaną do kolejki odpowiedzi:
From which of these artists would you like to order merchandise?
- Dodaj drugą opcję dialogu, która zawiera elementy menu z rozszerzonymi sugestiami. Kliknij Dodaj opcję dialogu i użyj tego kodu (w formacie JSON):
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
Można obsługiwać różne prompty dotyczące realizacji za pomocą różnych metod w zależności od liczby prób udzielenia odpowiedzi przez użytkownika. W tym celu możesz użyć obsług zdarzeń parametrów. Do wyboru masz różne wbudowane moduły obsługi zdarzeń, np. Nieprawidłowe parametry, Zbyt długie wypowiedzi, Brak danych wejściowych, Brak danych wejściowych (pierwsza próba), Druga próba lub Brak dopasowania. Różnica między brakiem danych wejściowych a brakiem dopasowania polega na tym, że w pierwszym przypadku użytkownik nie podał odpowiedzi, a w drugim – podał, ale Dialogflow CX nie mógł dopasować tej odpowiedzi do strony.
- Przewiń w dół do sekcji Moduły obsługi zdarzeń ponownego wyświetlania prośby.
- Kliknij Dodaj moduł obsługi zdarzeń i wybierz zdarzenie:
No-match default
- Użyj tego statycznego zdarzenia tekstowa realizacja:
I missed that. Please, specify the artist. You can choose between: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Kliknij Zapisz.
- Kliknij Dodaj moduł obsługi zdarzeń i wybierz zdarzenie:
No-input default
- Użyj tego statycznego zdarzenia tekstowa realizacja:
I am sorry, I could understand the artist's name. You can choose between Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Kliknij Zapisz.
Ścieżki oparte na warunkach strony
Parametry są bardzo przydatne w połączeniu z trasami warunkowymi na stronie. Gdy warunek przyjmie wartość true, zostanie wywołana powiązana ścieżka strony. Warunkiem może być parametry równe określonej wartości, parametry nie mogą być puste lub wypełniony formularz. Więcej informacji o parametrach i warunkach znajdziesz w dokumentacji Dialogflow CX.
W przypadku wirtualnego agenta w zakresie sprzedaży detalicznej musimy zebrać sekwencję parametrów, dlatego musimy utworzyć warunek, aby sprawdzić, czy formularz został wypełniony. Formularz to lista parametrów, które należy zebrać od użytkownika na stronie. Wirtualny agent wchodzi w interaktywną rozmowę z użytkownikiem, aż do momentu, gdy zbierze wszystkie wymagane parametry formularza, czyli parametry strony.
Dialogflow CX automatycznie ustawia wartości parametrów podanych przez użytkownika podczas wypełniania formularza. Aby sprawdzić, czy formularz na bieżącej stronie jest wypełniony, użyj tego warunku: $page.params.status = "FINAL"
Tworzenie tras warunkowych na stronie Przegląd wykonawcy
Utwórzmy ścieżkę warunkową, która przeniesie użytkownika na następną stronę, gdy pozna wykonawcę:
- Na stronie Informacje o wykonawcy kliknij ikonę + w sekcji Trasy.
- Przewiń w dół do sekcji Stan.
- Wybierz Co najmniej jeden (LUB)
- Następnie napiszemy wyrażenie, które
- Parametr:
$page.params.status
- Operator:
=
- Wartość:
"FINAL"
- Utworzymy teraz na trasie odpowiedni komunikat statyczny potwierdzający wybór użytkownika. Przewiń w dół do bloku Realizacja i napisz te komunikaty:
$session.params.artist, great choice! Rock on!
You want to rock with $session.params.artist merchandise. Awesome!
- Jeśli warunek jest spełniony, przejdź na stronę Przegląd produktu. Przewiń w dół do sekcji Przejście i skorzystaj z tej strony:
Product Overview
- Kliknij Zapisz.
Tworzenie tras na stronie Przegląd produktu
Teraz, gdy już wiesz, jak tworzyć parametry i warunkowe ścieżki, utwórz więcej parametrów na tych stronach:
Omówienie produktu
- Utwórz parametr
artist
na stronie Przegląd produktu:
- Wyświetlana nazwa:
artist
- Typ podmiotu:
@Artist
- Wymagane: sprawdź
- Usuń w dzienniku: zaznacz
- Wypełnienie początkowego prompta:
From which of these artists would you like to order merchandise?
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Handler (>)
No-match default
:To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Niestandardowy ładunek:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Handler (>)
No-input default
:To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist were you trying to mention?
- Niestandardowy ładunek:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Utwórz parametr
merch
:
- Wyświetlana nazwa:
merch
- Typ podmiotu:
@Merch
- Wymagane: sprawdź
- Usuń w dzienniku: zaznacz
- Realizacja:
Which merchandise item do you want?
- Kliknij Dodaj opcję dialogu > Niestandardowy ładunek:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Handler Zdarzenia >
No-match default
- Realizacja modułu obsługi zdarzeń:
We sell Shirts, Music or the Tour movie. Which of these items do you want?
- Niestandardowy ładunek:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Handler Zdarzenia >
No-input default
- Realizacja modułu obsługi zdarzeń:
I couldn't understand which merchandise item you wanted to buy. You can choose between: Shirts, Music or the Tour movie. Which item do you want?
- Niestandardowy ładunek:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Utwórz ścieżkę, która przekieruje użytkownika na stronę Produkt, gdy zostanie podany element
artist
i elementmerch
.
- Warunek:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$session.params.artist != null
- Wyrażenie:
$session.params.merch != null
- Realizacja:
Alright! $session.params.merch of $session.params.artist, let's go!
- Przejście: strona:
Product
- Utwórz ścieżkę na wypadek, gdy użytkownik powie „koszule”
- Intencja: redirect.shirts
- Przejście: strona:
Shirts
- Utwórz trasę na wypadek, gdy użytkownik powie „Muzyka”.
- Intencja: redirect.music
- Przejście: strona:
Music
- Utwórz trasę, gdy użytkownik zapyta o informacje o cenie
- Intencja: redirect.price
- Przejście: utwórz nową stronę:
Price
Po skonfigurowaniu tych ustawień zobaczysz wizualizację podobną do tej na poniższym obrazku. Pamiętaj, że na diagramie ścieżki intencji są zaznaczone na niebiesko, a ścieżki warunków na pomarańczowo. Obsługa zdarzeń jest zielona, a gdy wiele typów ścieżek prowadzi do strony, linia jest szara.
Do tej pory wiesz już, jak tworzyć przepływy, elementy, intencje i strony za pomocą obsług stanów, takich jak trasy intencji i warunkowe trasy oparte na parametrach. W dalszej części tego laboratorium użyjemy w wypełnianiu reguły warunkowej, aby wyświetlać różne dialogi na podstawie danych wejściowych.
Aby dokończyć konfigurowanie naszego agenta wirtualnego, możesz użyć tych konfiguracji.
Strona koszul:
- Na stronie T-shirty utwórz te konfiguracje:
- Realizacja zgłoszenia:
Do you want a longsleeve or a t-shirt?
- Realizacja wpisu – niestandardowy ładunek:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
},
{
"text": "Price?"
}
]
}
]
]
}
- Utwórz trasę intencji:
redirect.price
z przejściem na stronęPrice
. - Utwórz ten parametr:
- Parametr:
merch
– typ elementu:@Merch
,Required
iRedact in log
- Parametr > Obsługa zdarzenia >
No-match default
- Parametr > Realizacja modułu obsługi zdarzenia:
You can choose between a t-shirt or a longsleeve. Which of these do you want?
- Parametr > Realizacja modułu obsługi zdarzenia – ładunek niestandardowy:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Parametr > Obsługa zdarzenia >
No-input default
- Parametr > Realizacja modułu obsługi zdarzenia:
I couldn't understand if you want the t-shirt or the longsleeve. Which of these do you want?
- Parametr > Realizacja modułu obsługi zdarzenia – ładunek niestandardowy:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Kliknij wypełnienie wpisu i przewiń w dół do sekcji Wstępnie zdefiniowane parametry. Za każdym razem, gdy strona Koszule stanie się aktywna, parametr kategorii zostanie ustawiony na koszule:
Parametr | Wartość |
|
|
- Dodawanie trasy warunkowej:
- Dopasuj co najmniej 1 regułę (LUB)
- Wyrażenie:
$session.params.merch = "T-shirt"
- Wyrażenie:
$session.params.merch = "Longsleeve"
- Przejście na nową stronę:
Shirt Size
Strona z ceną:
Wiadomości o cenach będą zależeć od wybranego produktu lub kategorii (muzyka lub koszulki), dlatego poprawimy tę część w laboratorium. Na razie wystarczy wpisać symbol zastępczy.
- Na stronie Cena utwórz te konfiguracje:
- Realizacja zgłoszenia:
PRICE TODO
Ponieważ cenę można poprosić w różnych miejscach rozmowy, bot powinien zawsze udzielić odpowiedzi i przekierować Cię do poprzedniej części dialogu, aby kontynuować zamówienie. W drzewie dialogowym jest 5 miejsc, w których możesz uzyskać informacje o cenie. (Shirt, Shirt Size, Music, Carrier i także bezpośrednio przez Intent Route), dlatego będziemy potrzebować kilku ścieżek warunkowych, aby wrócić:
- Dodawanie trasy warunkowej:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$session.params.category = "shirts"
- Wyrażenie:
$session.params.merch = "null"
- Przejście na nową stronę:
Shirts
- Dodawanie trasy warunkowej:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$session.params.category = "shirts"
- Wyrażenie:
$session.params.size = "null"
- Przejście na nową stronę:
Shirt Size
- Dodawanie trasy warunkowej:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$session.params.category = "music"
- Wyrażenie:
$session.params.album = "null"
- Przejście na nową stronę:
Music
- Dodawanie trasy warunkowej:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$session.params.category = "music"
- Wyrażenie:
$session.params.merch = "null"
- Przejście na nową stronę:
Carrier
- Dodawanie trasy warunkowej:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$session.params.category = "null"
- Przejście na nową stronę:
Product Overview
Strona rozmiarów koszuli:
- Na stronie Rozmiar koszulki utwórz te konfiguracje:
- Realizacja zgłoszenia:
What shirt size do you want?
- Realizacja wpisu – niestandardowy ładunek:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Utwórz trasę intencji:
redirect.price
z przejściem na stronęPrice
. - Utwórz ten parametr:
- Parametr:
shirtsize
– typ encji:@ShirtSize
–Required
,Redact In Log
- Parametr > Obsługa zdarzenia >
No-match default
- Parametr > Realizacja modułu obsługi zdarzenia:
Please tell me the shirt size, such as XL.
- Parametr > Realizacja modułu obsługi zdarzenia – ładunek niestandardowy:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Parametr > Obsługa zdarzenia >
No-input default
- Parametr > Realizacja modułu obsługi zdarzenia:
I couldn't understand the shirt size. What size do you want?
- Parametr > Realizacja modułu obsługi zdarzenia – ładunek niestandardowy:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Dodawanie trasy warunkowej:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$page.params.shirtsize != "null"
- Przejście na stronę:
Product
Strona z muzyką:
- Na stronie Muzyka utwórz te konfiguracje:
- Realizacja zgłoszenia:
We have a Greatest Hits Album or the Live Album. Which one do you want?
- Realizacja wpisu – niestandardowy ładunek:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
},
{
"text": "Price?"
}
]
}
]
]
}
- Utwórz trasę intencji:
redirect.price
z przejściem na stronę:Price
. - Utwórz ten parametr:
- Parametr:
album
– typ encji:@Album
–Required
,Redact In Log
- Parametr > Obsługa zdarzenia >
No-match default
- Parametr > Realizacja modułu obsługi zdarzenia:
You can choose between Greatest Hits and Live Album. Which of these do you want?
- Parametr > Realizacja modułu obsługi zdarzenia – ładunek niestandardowy:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Parametr > Obsługa zdarzenia >
No-input default
- Parametr > Realizacja modułu obsługi zdarzenia:
I couldn't understand if you want the album: Greatest Hit or Live. Which of these do you want?
- Parametr > Realizacja modułu obsługi zdarzenia – ładunek niestandardowy:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Kliknij wypełnienie wpisu i przewiń w dół do sekcji Wstępnie zdefiniowane parametry. Za każdym razem, gdy strona Muzyka stanie się aktywna, parametr kategorii zostanie ustawiony na music:
Parametr | Wartość |
|
|
- Dodawanie trasy warunkowej:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$page.params.album != "null"
- Przejście na stronę:
Carrier
Strona operatora:
- Na stronie Operator utwórz te konfiguracje:
- Realizacja zgłoszenia:
Do you want this album on CD or MP3?
- Realizacja wpisu: niestandardowy ładunek:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
},
{
"text": "Price?"
}
]
}
]
]
}
- Utwórz trasę intencji:
redirect.price
, która prowadzi do stronyPrice
. - Utwórz ten parametr:
- Parametr:
merch
– typ encji:@Merch
–Required
,Redact In Log
- Parametr > Obsługa zdarzenia >
No-match default
- Parametr > Realizacja modułu obsługi zdarzenia:
Do you want a physical CD or the digital album?
- Parametr > Realizacja modułu obsługi zdarzenia: ładunek niestandardowy:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "Digital Album"
}
]
}
]
]
}
- Parametr > Obsługa zdarzenia >
No-input default
- Parametr > Realizacja modułu obsługi zdarzenia:
I couldn't understand if you mean CD or MP3. Which one do you want?
- Parametr > Realizacja modułu obsługi zdarzenia: ładunek niestandardowy:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
}
]
}
]
]
}
- Dodawanie trasy warunkowej:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$page.params.merch != "null"
- Przejście na stronę:
Product
Strona produktu:
- Utwórz te parametry:
Wyświetlana nazwa parametru | Typ elementu parametru | Weryfikacja |
|
| Wymagane, edytuj w logu |
|
| Wymagane, edytuj w logu |
- Parametr artist wymaga następującego początkowego promptu, który będzie wyświetlany, gdy wykonawca nie jest znany.
You didn't mention which artist you are interested in. You can ask me to buy the $session.params.merch of the artist you like or ask which artists we signed. How can I help?
{
"richContent": [
[
{
"options": [
{
"text": "Which artists?"
}
],
"type": "chips"
}
]
]
}
- Dodaj też moduł obsługi zdarzenia
No-input default
z wypełnieniem:I couldn't understand what you just said. Ask me which artists are signed.
- A tak wygląda moduł obsługi zdarzenia
No-match default
z wypełnieniem:I missed that. Please ask me which artists are signed.
- Parametr merch wymaga też obsługi zdarzeń ponownego wyświetlania.
- Dodaj moduł obsługi zdarzenia
No-input default
z miejscem realizacji:I couldn't understand what you just said. Which merchandise item do you want?
- A tak wygląda moduł obsługi zdarzenia
No-match default
z wypełnieniem:I missed that. Which merchandise item do you want?
Gdy artysta zostanie rozpoznany, użytkownik wybierze „Film z trasy”, a następnie nastąpi przejście na stronę potwierdzenia.
- Dodawanie trasy warunkowej:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$session.params.artist != null
- Wyrażenie:
$session.params.merch = "Tour Movie"
- Szablony parametrów Dodaj parametr >
price = 25
- Przejście na nową stronę:
Confirmation
Gdy artysta zostanie wybrany, użytkownik wybierze „T-shirt”, a następnie rozmiar koszulki, nastąpi przejście do strony potwierdzenia.
- Dodawanie trasy warunkowej:
- Wyrażenie niestandardowe:
$session.params.artist != null AND $session.params.merch = "T-shirt" AND $session.params.shirtsize != null
- Szablony parametrów Dodaj parametr >
price = 25
- Przejście do strony:
Confirmation
Gdy poznamy wykonawcę i użytkownik wybierze „Długi rękaw”, przejdziemy na stronę potwierdzenia.
- Dodawanie trasy warunkowej:
- Wyrażenie niestandardowe:
$session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
- Szablony parametrów Dodaj parametr >
price = 30
- Przejście do strony:
Confirmation
Gdy wykonawca jest znany, a użytkownik wybierze „CD”, przejdzie na stronę potwierdzenia, na której będzie też widoczna nazwa albumu.
- Dodawanie trasy warunkowej:
- Wyrażenie niestandardowe:
$session.params.artist != null AND $session.params.merch = "CD" AND $session.params.album != null
- Szablony parametrów Dodaj parametr >
price = 15
- Przejście do strony:
Confirmation
Gdy znany jest wykonawca, użytkownik wybierze „Album cyfrowy”, a następnie nazwę albumu, nastąpi przejście do strony potwierdzenia.
- Dodawanie trasy warunkowej:
- Wyrażenie niestandardowe:
$session.params.artist != null AND $session.params.merch = "Digital Album" AND $session.params.album != null
- Szablony parametrów Dodaj parametr >
price = 10
- Przejście do strony:
Confirmation
Teraz utworzymy zaawansowane reguły z promptami, które wykrywają brakujące informacje. Gdy wykonawca jest znany, a użytkownik wybierze „CD” lub „Album cyfrowy”, ale nie wybierze nazwy albumu, nastąpi powrót do strony muzyki.
- Dodawanie trasy warunkowej:
- Wyrażenie niestandardowe:
$session.params.artist != null AND ($session.params.merch = "CD" OR $session.params.merch = "Digital Album") AND $session.params.album = null
- Realizacja:
I would also need to know which album you would like to buy!
- Przejście do strony:
Music
Ostatnia ścieżka przejdzie na stronę potwierdzenia, gdy znany jest wykonawca, a użytkownik wybierze „T-shirt” lub „Longsleeve”, ale nie wybierze rozmiaru koszulki.
- Dodawanie trasy warunkowej:
- Wyrażenie niestandardowe:
$session.params.artist != null AND ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve") AND $session.params.shirtsize = null
- Realizacja:
I would also need to know which shirt size you need!
- Przejście do strony:
Shirt Size
W następnej części laboratorium użyjemy warunków, aby wyświetlać różne komunikaty w zależności od danych wejściowych.
7. Odpowiedzi warunkowe
Niektóre odpowiedzi będą zwracać inny dialog na podstawie danych wejściowych. Dialogi będą się rozgałęziać. Nazywamy to odpowiedziami warunkowymi. Może to być przydatne, gdy nie korzystasz z wypełniania za pomocą webhooka, w którym odpowiedzi warunkowe są określane po stronie serwera. Przykład:
if [condition]
[response]
elif [condition]
[response]
elif [condition]
[response]
else
[response]
endif
- Przykładem [condition] może być:
$session.params.user-age >= 21
. Używa on podobnego formatowania co warunki w trasach. - [response] przyjmuje statyczny tekst odpowiedzi
- Odpowiedzi warunkowe zawsze zaczynają się od
if
- Bloki
elif
ielse
są opcjonalne
Dialogflow CX może też korzystać z wbudowanych funkcji systemowych. Na przykład, aby sformatować datę lub godzinę albo wyświetlić aktualną godzinę ($sys.func.NOW()
).
Dokończmy proces katalogu, poprawiając strony potwierdzenie i cena.
Strona potwierdzenia:
Teraz utworzymy stronę potwierdzenia. Wymagane są następujące wymagania:
- Jeśli merch to CD lub album cyfrowy. W potwierdzeniu wyświetlimy te pola: artysta, merch, album i cena.
- Jeśli merch to T-shirt lub Longsleeve. W potwierdzeniu wyświetlimy te pola: artysta, merch, rozmiar i cena.
- W przeciwnym razie (czyli jeśli merch to Tour Movie). W potwierdzeniu wyświetlimy następujące pola: artysta, merch i cena.
- Kliknij stronę Potwierdzenie.
- Kliknij Edytuj realizację > Odpowiedzi agenta > opcja Dodaj dialog > Odpowiedź warunkowa:
if ($session.params.merch = "CD" OR $session.params.merch = "Digital Album")
The $session.params.merch: $session.params.artist - $session.params.album costs $$session.params.price. Shall I continue to order?
elif ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve")
A $session.params.merch of $session.params.artist size: $session.params.shirtsize costs $$session.params.price. Shall I continue to order?
elif $session.params.merch = "Tour Movie"
The $session.params.merch of $session.params.artist costs $$session.params.price. Shall I continue to order?
else
It looks like something went wrong with your order. You can say "Reset", to restart the order process.
endif
- Create the following Custom payload:
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Yes, confirm"
}
],
"type": "chips"
}
]
]
}
Next, create two intent routes:
confirm.proceed.order
transitions to:Order Process
Flow.decline.proceed.order
transitions toEnd Flow
When the user declines the order, and does not want to proceed the order process, we will have to transition back to the welcome page, but all the parameters have to be cleared. We can do this by specifically setting null to all the possible parameters. You can do this with Parameter presets.
- In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:
Parameter | Value |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notice that we have created an additional parameter called restart
. If this parameter is present, the Default Start Flow, should know to continue the conversation by showing a customized message.
- Click on the Default Start Flow, Start Page, and create another Conditional Route:
$session.params.restart = "true"
- Fulfillment:
"Welcome back, as the virtual agent of G-Records, I can help you order artists merchandise, you can ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?"
- Custom payload:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
Price Page:
Let's also fix the Price TODOs. The price information will be static for now. Click on the Price Page in the Catalog Flow, and use the following entry fulfillment:
- Delete the Agent Says entry fulfillment.
- Create a new Conditional Response:
if $session.params.category = "shirts"
A t-shirt costs $25 and a longsleeve costs $30.
elif $session.params.category = "music"
A CD costs $15. The digital album on MP3 costs $10.
else
A t-shirt costs $25 and a longsleeve costs $30. A CD costs $15 and a digital album on MP3 $10. In case you are interested in the Tour Movie, that one is $25.
endif
Well done, by now you completed the Catalog flow. Your flow should look similar to this diagram:
8. Wrapping up the agent
We are almost at the end of this lab. Let's configure the last flows together, and take in practice all the new things that we have learned.
Creating the My Order Flow
- Go to the My Order Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
My Order Start |
| My Order |
My Order Start |
| My Order Status |
My Order Start |
| My Order Cancellation |
My Order Start |
| End Session |
My Order Start |
| End Flow |
My Order |
| My Order Status |
My Order |
| My Order Cancellation |
Default Start Flow |
| Flow: My Order |
Default Start Flow |
| Flow: My Order |
- Let's create the following entry fulfillment for the My Order Page:
- Entry fulfillment:
I can look up the status of your order, or I can cancel an order.
- In the My Order Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required: checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Fulfillment:
And do you want to Cancel your order, or should I look up the status?
- Click on Add state handler > Event Handlers and create the Event Handler:
No-input default
- Fulfillment:
I'm sorry, what was that? Would you like me to cancel an order or look up the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- Create the Event Handler:
No-match default
- Fulfillment:
Would you like me to cancel an order or lookup the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- In the My Order Status Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Status Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been shipped, it can take up to approx 2 weeks before you will receive your items.
- Add dialogue option > Text:
Is there anything else I can help you with?
- In the My Order Cancelation Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Cancelation Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been canceled.
- Add dialogue option > Text:
Is there anything else I can help you with?
- Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"
And:
>"What's the status of order DEFG222"
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
- Select the Start Page and click on the
redirect.home
intent. Create the following parameter preset:restart = true
Default Negative intents (Fallback)
When you create a virtual agent, a default negative intent is created for you. You can add training phrases to this intent that act as negative examples that will trigger a No-match event. There may be cases where end-user input has a slight resemblance to training phrases in normal intents, but you do not want these inputs to match any normal intents.
- Try in the simulator:
I don't like Alice Googler
.
You will see that the virtual agent answers with the Product Overview Page, to continue ordering Alice Googler merchandise. However, your end user does not like that artist. Let's use the Default Negative Intent for this.
- Go to Manage > Intents and select the Default Negative Intent.
- Add the following training phrases that will trigger the No-match event.
I don't like Alice Googler
I am not a fan of G's N' Roses
I can't stand the music of the Google Dolls
- Hit Save and test the following sentence in the simulator:
I am really not a fan of the Goo Fighters
This time the No-match
event was triggered, you stayed on the Start Page.
Default Fallback Messages
- Click the Default Start Flow, select the
sys.no-input-default
event handler.
The No-input fallback basically means: No text or speech answers were detected. Likely no answers were given, or the system couldn't hear it. Therefore, let's make the fallback messages more specific. Use the tab key, to create alternative dialogues:
- Remove all answers, and add these text dialogues:
I'm sorry, I didn't receive an answer. Can you say it again?
I missed your answer, can you say it again?
Sorry, I didn't hear anything. Can you say it again?
I couldn't hear what you were saying, what was that?
I'm sorry, I missed your answer. What were you trying to say?
Don't forget to click Save.
- Click the Default Start Flow, select the
sys.no-match-default
event handler.
The No Match fallback basically means: Text or speech answers were detected but nothing in Dialogflow CX got matched.
- Remove all answers, and add these text dialogues:
Sorry, I didn't get that. Can you please rephrase?
I'm sorry, I don't understand. Can you please rephrase?
I don't understand, please rephrase.
Sorry, I didn't get that. What was that?
I didn't get that, can you please rephrase?
Don't forget to click Save.
- It's advised to repeat these steps for the Catalog, My Order, Order Process and Customer Care flows.
Here's a tip: when creating fallback messages, make them more explicit, by rephrasing the previous question or by mentioning an example. You could create these type of No-match and No-input events on Page level when creating parameters. In our labs, we have already done this.
Creating the Order Process Flow
- Go to the Order Process Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
Order Process Start |
| End Session |
Order Process Start |
| End Flow |
Order Process Start |
| New Page: Shipping Details |
- Let's create the following entry fulfillment for the Shipping Details Page:
- Entry fulfillment:
To complete your order I will first need to collect your shipping details.
- Create the following parameters:
These parameters will make use of built-in system entities. System entity support differs for each language. See the docs for more information.
Parameter Display name | Entity | Required? | Initial prompt fulfillment | No-match default | No-input default |
| @sys.person | Required |
|
|
|
| @sys.person | Required |
|
|
|
| @sys.address | Required |
|
|
|
| @sys.any | Required |
|
|
|
| @sys.geo-city | Required |
|
|
|
| @sys.geo-country | Required |
|
|
|
| @sys.email | Required |
|
|
|
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Transition to new Page:
Payment Details
- Create the following entry fulfillment.
Let's fake it that this virtual agent makes use of Google Pay. Don't worry this tutorial won't make real transactions. Create the following entry dialogues:
- Agent Says:
Alright $session.params.firstname! We will make use of Google Pay, that's connected to your email account: $session.params.email.
- Conditional Response
if $session.params.merch != "Digital Album"
Shipping costs an additional 5 dollars. This will make the total price $$sys.func.TO_TEXT($sys.func.ADD($session.params.price, 5)).
Your merchandise will be shipped to:
$session.params.firstname $session.params.lastname
$session.params.address
$session.params.zipcode $session.params.city
$session.params.country
To continue the order process please explicitly say "I confirm". Do you want to confirm your $session.params.artist $session.params.merch order?
else
The total costs will be: $$session.params.price.
After purchasing the digital album, you will receive an email with the download link.
To continue the order process please explicitly say "I confirm".
Do you want to confirm your $session.params.artist $session.params.merch order?
endif
- Utwórz tę trasę intencji.
- Intencja:
confirm.proceed.order
- Pracownik obsługi klienta:
Thank you for your order! Your merchandise will be shipped today!
- Dodaj opcję dialogu > Tekst:
Here's the order number: ABCD123
. - Dodaj opcję dialogu > Tekst:
Have a good day!
- Przejście:
End Session
- Wybierz stronę Start i kliknij intencję
redirect.end
. Utwórz następujące zamówienie:Thank you for contacting G-Records! Have a nice day!
- Wybierz stronę Start i kliknij intencję
redirect.home
. Utwórz te ustawienia parametrów:restart = true
Świetnie! Mamy już w pełni działającego chatbota dla prawdziwego sprzedawcy detalicznego. W następnym laboratorium przetestujemy, jak działa wirtualny agent.
9. Testowanie agenta wirtualnego
Za pomocą wbudowanego symulatora możesz testować dialogi z wirtualnym asystentem. Zaletą testowania przepływów w symulatorze jest to, że zobaczysz w nim przejrzysty przegląd przepływów, stron, parametrów i zdarzeń DTMF zebranych przez symulator podczas przechodzenia przez przepływy. Dzięki temu testowanie jest łatwiejsze niż testowanie bezpośrednio w ramach integracji, ponieważ tego typu informacje są ukryte przed użytkownikiem końcowym. Możesz nawet tworzyć przypadki testowe, zapisywać je i wykorzystywać ponownie. Ma to sens, gdy utrzymujesz lub edytujesz przepływy danych na przestrzeni czasu i chcesz mieć pewność, że żadne z tych zmian nie zepsują Twojej poprzedniej pracy.
Można też eksportować i importować wcześniej utworzone przypadki testowe, przechowując je w Google Cloud Storage lub lokalnie. Wyeksportowanie testu spowoduje pobranie pliku blob. Więcej informacji o symulatorze i przypadkach testowych znajdziesz w dokumentacji symulatora i przypadków testowych.
Zanim utworzymy przypadki testowe, dokończmy tworzenie naszego agenta wirtualnego:
Tworzenie procesu obsługi klienta
- Otwórz proces Obsługa klienta i utwórz te przejścia:
Strona (w trakcie oglądania) | Trasa > Intencje | Trasa > Przejście do |
Obsługa klienta – rozpoczęcie |
| Dostawa |
Obsługa klienta – rozpoczęcie |
| Zwrot środków |
Obsługa klienta – rozpoczęcie |
| Wymiana |
Obsługa klienta – rozpoczęcie |
| Zakończ proces |
Obsługa klienta – rozpoczęcie |
| Zakończ sesję |
- Utwórz te elementy danych na stronie Dostawa:
Shipping physical merchandise items can take up to 2 weeks.
Is there anything else I can help you with?
- Utwórz te elementy danych dla strony Zwrot środków:
We offer free returns and refunds. We provide one free return label for each order. You can use it within 30 days from receiving your order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
Is there anything else I can help you with?
- Utwórz te elementy wypełniania danych wejściowych na stronie Zamienianie:
If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
Is there anything else I can help you with?
- Wybierz stronę Start i kliknij intencję
redirect.end
. Utwórz następujące zamówienie:Thank you for contacting G-Records! Have a nice day!
- Wybierz stronę Start i kliknij intencję
redirect.home
. Utwórz te ustawienia parametrów:restart = true
Tworzenie przypadków testowych
- Po prawej stronie ekranu kliknij przycisk Test agenta.
Podczas pierwszego otwierania symulatora musisz wybrać środowisko agenta i aktywny przepływ. W większości przypadków należy użyć środowiska roboczego i domyślnego procesu uruchamiania.
- Typ:
Hi
- Zapytanie:
Which artists are signed with your label?
- Powiedz:
The Google Dolls
- Powiedz:
I am interested in buying a shirt
- Powiedz:
A t-shirt
- Powiedz:
Medium
- Kliknij przycisk zapisywania przypadku testowego. Znajdziesz ją u góry symulatora (obok strzałki wstecz i ikony kosza na śmieci).
- Podaj te informacje:
- Nazwa testu:
Buy Google Dolls t-shirt size M
- Tagi: #catalog, #shirts, #t-shirt, #TheGoogleDolls
- Kliknij Zapisz.
Utwórz więcej przypadków testowych.
- Najpierw wyczyść bieżący dialog, klikając ikonę Resetuj (kosz).
- Utwórz te przypadki testowe:
Kup koszulkę Alice Googler:
>"Buy the Alice Googler t-shirt."
>"XL"
- Nazwa testu:
Buy the Alice Googler t-shirt
- Tagi:
#catalog, #shirts, #t-shirt, #AliceGoogler
Kup koszulkę w rozmiarze M: (zauważ, że nazwa wykonawcy nie została wymieniona, ale chcesz pominąć strony Omówienie zespołów, Omówienie produktów, Koszulki i Rozmiary koszulek)
>"Buy a t-shirt size M"
>"The Google Fighters"
- Nazwa testu:
Buy a t-shirt size M
- Tagi:
#catalog, #shirts, #t-shirt, #TheGoogleFighters
- Opis: (uwaga: nazwa wykonawcy nie została wymieniona, ale pomiń strony Omówienie zespołów, Omówienie produktów, Koszulki i Rozmiary koszulek)
Kup muzykę zespołu G's N' Roses (uwaga: spowoduje to pominięcie strony Omówienie zespołów i Omówienie produktów).
>"Purchase music of G's N' Roses"
>"Live"
>"CD"
- Nazwa testu:
Purchase music of G's N' Roses
- Tagi:
#catalog, #music, #CD, #GsNRoses, #live
- Opis: (uwaga: pominiecie strony Omówienie pasm i Omówienie produktów)
Sprawdź informacje o cenie:
>"Which products"
>"Shirts"
>"What's the price difference?"
>"Longsleeve"
>"What does it cost?"
>"M"
>"The Google Dolls"
>"No"
>"Which bands"
>"The Gooo Fighters"
>"Music"
>"How much does it cost?"
>"Greatest Hits"
>"What's the price difference?"
>"Mp3"
>"No"
>"I want to buy the tour movie"
>"Alice Googler"
>"Yes"
- Nazwa testu:
Price info
- Tagi:
#catalog, #music, #tourmovie, #shirts
- Opis: testowanie informacji o cenie w różnych miejscach dialogu
Testowanie nagranych wcześniej przypadków testowych
- W menu głównym Dialogflow po lewej stronie kliknij Zarządzaj > Przypadki testowe.
- Wybierz wszystkie przypadki testowe i nad tabelą kliknij przycisk Uruchom.
Dialogflow CX uruchomi wszystkie wybrane przypadki testowe na podstawie nagrania zapisanego jako „złoty przypadek testowy”. Jeśli wyniki są takie same jak zapis, testy zostaną zaliczone. – Czy coś się zmieniło w przepływach, np. czy strony nie są prawidłowo skonfigurowane lub czy intencje kierują na niewłaściwe strony? Jeśli tak, testy się nie powiodą.
- W symulatorze zadaj to pytanie:
How long will shipping take?
- Zanotuj wynik i zapisz przypadek testowy jako
Shipping
z tagiem:#shipping
. - Aby uruchomić tylko przypadek testowy
Shipping
, otwórz panel Zarządzaj > Przypadki testowe i kliknij przycisk Uruchom w prawym górnym rogu siatki.
Ten test powinien się udać.
- Wróć do procesu obsługi klienta, wybierz stronę Start (Rozpocznij) i kliknij nagłówek Routes (Ścieżki).
Wyświetli się ekran z siatką zawierającą wszystkie trasy.
- Usuń
redirect.shipping.info route
- Aby uruchomić tylko przypadek testowy
Shipping
, otwórz panel Zarządzaj > Przypadki testowe i kliknij przycisk Uruchom w prawym górnym rogu siatki.
Ten test powinien się nie udać.
- Możesz kliknąć niezaliczony test, aby wyświetlić szczegóły niezaliczenia.
W tym przypadku test zakończył się niepowodzeniem z komunikatem o błędzie:
Page: Page mismatch:
Expected: Shipping
Actual: Start Page
Dzieje się tak, ponieważ strona nie istnieje już w przepływie. Spodziewaliśmy się strony Shipping
, ale nigdy nie opuściliśmy strony Start
. (lub użytkownicy końcowi otrzymają wiadomość zastępczą).
Inaczej mówiąc, jest to przeoczone żądanie, czyli wynik fałszywie negatywny. Test się nie powiódł. Oczekiwaliśmy strony Wysyłka, ale nic się nie dzieje lub wyświetla się komunikat zastępczy.
- Wróć do procesu obsługi klienta i dodaj
redirect.shipping.info
jako ścieżkę intencji na stronie Start. Nie zapomnij przejść na stronę Dostawa i kliknąć Zapisz. - W symulatorze utwórz taki przypadek testowy:
I want to swap my item
, a potem zapisz go jakoSwapping
#swapping
. - Otwórz Zarządzaj > Intencje > redirect.refund.info i dodaj tę frazę szkoleniową:
I want to swap this item for a refund
Bez tej frazy szkoleniowej, gdy użytkownik poprosi o wymianę produktu na zwrot środków, system trafi do intencji redirect.swapping.info, ale nie chcemy podawać informacji o wymianie produktów, tylko o zwrotach środków.
- Utwórz w symulatorze następujący złoty przypadek testowy:
I want to swap this item for a refund
i zapisz go jakoSwap for Refund
#refund
- Wróć do okna Zarządzaj > Intencje > redirect.refund.info i usuń wiersz
I want to swap this item for a refund
. - Wróć do sekcji Zarządzaj > Przypadki testowe, wybierz przypadek testowy Wymiana na zwrot i Uruchom go.
Ostatni test nie powiódł się. Wystąpił następujący komunikat o błędzie:
If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.`
Is there anything else I can help you with?
Page: Page mismatch:
Expected: Refund
Actual: Swapping
Inaczej mówiąc, jest to nieprawidłowo zrozumiane żądanie, czyli fałszywie pozytywny wynik testu. Test się nie powiódł. Oczekiwaliśmy strony Zwrot, ale została aktywowana strona Zmienianie.
Pokrycie,
W Dialogflow CX zasięg testu to miara określająca, w jakim stopniu dialog z wirtualnym agentem (strony i intencje) jest wykonywany podczas uruchamiania określonego zestawu testów. Wirtualny agent z wysoką pokryciem testów (mierzoną w procentach) ma więcej dialogów wykonanych podczas testów, co oznacza, że w porównaniu z wirtualnym agentem o niskim pokryciu testów ma mniejsze prawdopodobieństwo zawierania niewykrytych błędów (np. nierozpoznanych żądań).
- Aby wyświetlić raport o zasięgu testu dla wszystkich przypadków testowych, kliknij Zakres.
- Kliknij kartę Przejścia.
Zobaczysz pokrycie testu dla wszystkich przejść między stronami.
- Kliknij kartę Intencje.
Pokaże to zasięg testu dla wszystkich intencji.
Gratulacje! Masz już gotowego i przetestowanego bota dla sprzedawcy detalicznego. Przejdźmy do następnej strony laboratorium, aby przeczytać podsumowanie i znaleźć przydatne materiały.
10. Podsumowanie
Dialogflow CX to platforma konwersacyjnej AI (CAIP) do tworzenia wirtualnych agentów, takich jak boty na czacie lub głosowe. Dialogflow CX umożliwia zespołom przyspieszenie tworzenia konwersacyjnych interfejsów na poziomie przedsiębiorstwa dzięki wizualnym narzędziom do tworzenia botów, wielokrotnego użytku intencji i możliwości prowadzenia wieloetapowych rozmów.
Z tego ćwiczenia w Codelabs dowiesz się, jak tworzyć wirtualnych agentów do obsługi sprzedaży detalicznej. Omówiliśmy te zagadnienia:
- Przepływy
- Parametry, elementy niestandardowe i elementy systemowe
- Pages
- Obsługa stanów, np. ścieżki intencji i warunków.
- Statyczne komunikaty o wypełnieniu zamówienia i odpowiedzi warunkowe
- Zamienne zamiary
- Symulator, przypadki testowe i zasięg
Pliki referencyjne
Aby dowiedzieć się więcej o Dialogflow CX, przeczytaj te blogi i dokumentację.