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 na potrzeby witryny firmy handlu detalicznego. Fikcyjna firma, dla której tworzymy chatbota, nazywa się G-Records. G-Records to wytwórnia płytowa z zasięgiem globalnym z siedzibą w Kalifornii. Etykieta 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 ćwiczenia w Codelabs możesz użyć czatbota, żeby zamówić koszulki lub muzykę. Możesz też o nie zapytać.
Czego się nauczysz
Dzięki temu poznasz zalety Dialogflow CX w porównaniu z Dialogflow ES. Obejmują one:
- Jak utworzyć wirtualnego agenta Dialogflow CX w Google Cloud
- Dowiedz się, jak tworzyć przepływy
- Dowiedz się, jak tworzyć encje
- 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 tworzyć strony przejściowe z parametrami i warunkami
- 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ć przypadki testowe i zasięg testów
Ostateczny projekt agenta Dialogflow CX będzie wyglądał tak:
Czego potrzebujesz
- Aby utworzyć agenta Dialogflow CX, musisz mieć adres tożsamości Google 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 rozliczeniowej. 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, najpierw otwórz 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.
OK, wszystko gotowe. Możemy wreszcie zacząć modelowanie naszego agenta wirtualnego.
3. Przepływy
Złożone okna dialogowe często dotyczą wielu tematów. W przypadku chatbota, który tworzymy dla G-Records w celu 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. Sprawdzoną metodą jest uproszczenie procesu, tak aby zmieś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 do następnego lub poprzedniego przepływu) lub możesz 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:
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.
- Kliknij przycisk Test Agent (Testuj agenta) w prawym górnym rogu ekranu.
- W polu „Porozmawiaj z obsługą klienta” wpisz:
Hello
Wirtualny agent odpowie domyślnym tekstem powitalnym: Witam! W czym mogę pomóc?
Zmieńmy domyślny tekst powitalny.
Domyślny proces uruchamiania
Zacznijmy od utworzenia trasy intencji, która będzie aktywowana 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 umożliwiającego kierowanie kolejnej aktywnej strony lub 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 ładunkach znajdziesz w dokumentacji.
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Przetestuj intencję powitania 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ąć.
- Na pasku bocznym po lewej stronie kliknij Zarządzaj > Integracje.
- Wybierz Dialogflow Messenger i kliknij Połącz.
- W wyskakującym okienku kliknij Włącz.
Wyświetli się kolejne wyskakujące okienko, tym razem z kodem JavaScript integracji, które możesz wkleić w swojej witrynie, aby zintegrować z nią 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, o co Ci chodzi. Dzieje się tak, ponieważ nasz wirtualny agent nie przełącza się jeszcze między stanami. Możemy to zrobić w Dialogflow CX za pomocą Pages. Kontynuujmy ten moduł. Najpierw utworzymy encje 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 itd. Możesz też tworzyć własne elementy niestandardowe do dopasowywania danych niestandardowych.
Zanim zaprojektujemy strony w ramach procesu, zacznij od przygotowania wszystkich elementów niestandardowych. Utworzymy te jednostki:
Tworzenie encji
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 Opcjach zaawansowanych zaznacz też Usuń z dziennika. (Jeśli nazwa pasma została wpisana nieprawidłowo, zostanie poprawiona w dzienniku).
- Kliknij Zapisz.
Potrzebujemy też elementu Gadżety:
- 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żeń regularnych
- Jednostka: [A-Z]{4}[0-9]{3}
- Kliknij Zapisz.
Konfiguracja elementu powinna wyglądać mniej więcej tak:
@Artist:
@Merch:
@Album:
@ShirtSize:
@Numer zamówienia:
Po przygotowaniu encji niestandardowych 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 intencji zgodnych z tym, 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 będzie więc przebiegał tak:
Wyrażenia na potrzeby trenowania mogą korzystać z encji do wyodrębniania „zmiennych” danych wejściowych, dlatego warto wcześniej utworzyć typy encji – tak zrobiliśmy na poprzedniej stronie kroków modułu.
Tworzenie intencji
Zanim zaprojektujemy strony w ramach procesu, 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 wszystkie pozostałe intencje. Użyj wyobraźni, aby wymyślić więcej zwrotów na potrzeby treningu. Zalecamy, aby na każdy zamiar było co najmniej 10 fraz szkoleniowych, które obejmują różne sposoby wywołania zamiaru przez użytkownika. Na potrzeby tego modułu mniej też powinno być mniej.
Kilka rzeczy, 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 istoty (poprzez dodanie synonimu) lub ręczne opatrzenie etykietą frazy szkoleniowej.
- 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 przeprowadzanie testów iteracyjnych i przyrostowych 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 „Czekam na monety” do „Wybierz słodycze”. Strony umożliwiają modelowanie tych stanów dla 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 przepływu danych Flow możesz zdefiniować wiele stron, na których połączone strony mogą prowadzić rozmowy na obszerne tematy. Każdy proces ma specjalną stronę początkową. Gdy przepływ stanie się początkowo aktywny, strona startowa staje się stroną bieżącą. W przypadku każdej rozmowy bieżąca strona pozostanie taka sama lub przejdzie do innej. Ta koncepcja pozwala na tworzenie większych agentów z wieloma stronami i wieloma rozmowami.
Strony zawierają realizacje (statyczne okna dialogowe z wpisami lub webhooki), parametry i moduły obsługi stanów. Kontrola rozmów odbywa się za pomocą modułów obsługi stanów, które pozwalają tworzyć różne trasy przejścia w celu przejścia na inną stronę Dialogflow CX, w tym na potrzeby stosowania warunkowych (na potrzeby rozgałęziania 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ń: informacje o tym, kiedy ma być obsługiwane określone zdarzenie zastępcze (np. obsługa braku danych wejściowych lub brak dopasowania w celu zidentyfikowania użytkownika albo intencji lub trasy warunku) (zielone linie na schemacie wizualnym).
Wyrażenia rozmowy (tj. treść lub odpowiedź dla użytkownika) są definiowane przez realizację, które mogą być statyczne lub dynamiczne:
- Statyczne wypełnienie: gdy podawana jest statyczna odpowiedź.
- Dynamiczna realizacja: gdy webhook realizacji jest wywoływany w odpowiedzi na żądania dynamiczne.
W przypadku bota do obsługi sprzedaży detalicznej utworzymy ścieżki zamierzeń i zapewnimy statyczne odpowiedzi na potrzeby, 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) | Trasy > Intencja | Trasa > Przejście do |
Rozpocznij |
| - |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Proces: katalog |
Rozpocznij |
| Przepływ: obsługa klienta |
Rozpocznij |
| Przepływ: obsługa klienta |
Rozpocznij |
| Przepływ: 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 przy dzwonieniu do centrum obsługi telefonicznej. Jednak ten agent wirtualny jest trenowany w języku naturalnym, z wyrażeniami do trenowania w intencjach. W związku z tym interakcja jest zależna od rozmowy, a nie od opcji DTMF. Jest bardziej naturalna i podoba do człowieka.
Tworzenie stron w procesie tworzenia katalogu
Ta transkrypcja czatu należy do procesu 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 katalogu:
Zwróć uwagę na złożoność tego procesu:
- Mogę pominąć pytanie o artystów i zaraz zapytać „Jakie produkty są dostępne?”.
- 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 do strony produktu.
- Okno Cena pochodzi ze strony Cena, która zostanie ponownie wykorzystana.
- 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 wpisać te informacje bezpośrednio w przypadku jednego z innych usług, jeśli będą mogli podać 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 Przenoszenie, wybierz Strona, a następnie + nowa strona.
- Użyj nazwy strony:
Artist Overview
i kliknij Zapisz.
Teraz zakończmy pozostałą część procesu:
- Poprzednie kroki można powtórzyć w przypadku kolejnych stron, intencji i realizacji. Przejmij tę tabelę. Strona to strona, którą wybierzesz w trakcie tworzenia ścieżki. Ścieżki > Przejście do to nowa ścieżka lub strona, którą utworzysz i do której przejdziesz.
Strona (w trakcie oglądania) | Trasy > Intencja | Trasa > Przejście do |
Start katalogu |
| Omówienie wykonawcy |
Początek 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 dodamy 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 realizacji (mówi agent):
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 dotyczącym 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 jest kilka mechanizmów, które mogą Ci w tym pomóc.
W sekcji Parametr możesz na przykład podać niestandardowe statyczne komunikaty. 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ź
- Usuwanie w dzienniku: zaznacz
- Teraz dodamy kilka wiadomości z parametrami niestandardowymi. Jeśli parametr artist nie został jeszcze zebrane przez agenta wirtualnego, użytkownik końcowy otrzyma tę odpowiedź agenta 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ł ją, ale Dialogflow CX nie mógł dopasować jej do strony.
- Przewiń w dół do sekcji Ponownie powtarzaj moduły obsługi zdarzeń.
- 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 zostanie spełniony, wywołana jest powiązana trasa strony. Warunki mogą obejmować: Parametr równa się określonej wartości, Nie może brakować parametru, Wypełniony formularz i wiele innych. Więcej informacji o parametrach i warunkach znajdziesz w dokumentacji Dialogflow CX.
W przypadku naszego agenta wirtualnego z branży handlu detalicznego musimy zgromadzić sekwencję parametrów i dlatego trzeba utworzyć warunek, który będzie sprawdzać, czy wypełniono formularz. Formularz to lista parametrów, które należy zebrać od użytkownika na stronie. Wirtualny agent wchodzi w interakcję z użytkownikiem przez kilka tur rozmowy, 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 wypełniono formularz bieżącej strony, 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 1 (LUB)
- Następnie napiszemy wyrażenie, które
- Parametr:
$page.params.status
- Operator:
=
- Wartość:
"FINAL"
- Teraz na trasie tworzymy statyczną wiadomość dotyczącą realizacji transakcji, potwierdzającą 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ę Omówienie produktu. Przewiń w dół do sekcji Przejście i skorzystaj z tej strony:
Product Overview
- Kliknij Zapisz.
Tworzenie tras na stronie Informacje o usłudze
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ź
- Usuwanie 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"
}
]
]
}
- Moduł obsługi zdarzeń >
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?
- Ładunek niestandardowy:
{
"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ź
- Usuwanie danych z dziennika: sprawdzanie
- Realizacja:
Which merchandise item do you want?
- Kliknij Dodaj opcję dialogu > Dane niestandardowe:
{
"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?
- Ładunek niestandardowy:
{
"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?
- Ładunek niestandardowy:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Utwórz trasę, która będzie przekierowywać do strony Produkt, gdy podasz
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ę, która będzie używana, gdy użytkownik poprosi 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. Zwróć uwagę, że trasy intencji są na diagramie niebieskie, a trasy warunków pomarańczowe. Moduły obsługi zdarzeń mają kolor zielony, ale nie widać ich na ilustracji, a gdy kilka typów tras przechodzi na stronę, 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: ładunek niestandardowy:
{
"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 jednostki:@Merch
,Required
iRedact in log
- Parametr > Moduł obsługi zdarzeń >
No-match default
- Parametr > Realizacja modułu obsługi zdarzeń:
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 > Moduł obsługi zdarzeń >
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łów obsługi zdarzeń – niestandardowy ładunek:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Kliknij realizację pozycji i przewiń w dół do sekcji Gotowe ustawienia parametrów. Za każdym razem, gdy strona Koszulki stanie się aktywna, parametr kategorii zostanie ustawiony na shirts (koszule):
Parametr | Wartość |
|
|
- Dodawanie trasy warunkowej:
- Dopasuj co najmniej do jednej reguły (LUB)
- Wyrażenie:
$session.params.merch = "T-shirt"
- Wyrażenie:
$session.params.merch = "Longsleeve"
- Przejście na nową stronę:
Shirt Size
Strona z ceną:
Komunikaty o cenach będą się różnić w zależności od wybranego produktu lub kategorii (muzyka lub koszulki), więc poprawimy tę część w dalszej części modułu. Na razie wystarczy wpisać symbol zastępczy.
- Utwórz na stronie Cena 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żna się rozgałęzić, aby 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"
- Przejdź 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 – dane niestandardowe:
{
"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 zdarzeń:
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 zdarzeń:
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"
}
]
}
]
]
}
- Dodaj trasę warunkową:
- Pasuje do wszystkich reguł (ORAZ)
- Wyrażenie:
$page.params.shirtsize != "null"
- Przejście na stronę:
Product
Strona Muzyka:
- 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 – dane niestandardowe:
{
"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 zdarzeń:
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 – dane niestandardowe:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
},
{
"text": "Price?"
}
]
}
]
]
}
- Utwórz trasę intencji:
redirect.price
, która będzie przekierowywać na stronęPrice
. - Utwórz ten parametr:
- Parametr:
merch
– typ jednostki:@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 zdarzeń: Ł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"
- Przenieś na stronę:
Product
Strona produktu:
- Utwórz te parametry:
Wyświetlana nazwa parametru | Typ encji 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 moduł obsługi zdarzenia
No-match default
z wypełnieniem:I missed that. Please ask me which artists are signed.
- Parametr merch wymaga też modułów obsługi zdarzeń ponownego żądania.
- Dodaj moduł obsługi zdarzenia
No-input default
z miejscem realizacji zamówienia:I couldn't understand what you just said. Which merchandise item do you want?
- Oraz moduł obsługi zdarzeń
No-match default
z realizacją: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:
- Dopasuj do wszystkich reguł (ORAZ)
- Wyrażenie:
$session.params.artist != null
- Wyrażenie:
$session.params.merch = "Tour Movie"
- Dodanie gotowych ustawień parametru – dodanie parametru >
price = 25
- Przejdź na nową stronę:
Confirmation
Kolejna ścieżka przejdzie na stronę potwierdzenia, gdy znany będzie wykonawca, użytkownik wybierze „T-shirt”, a także rozmiar koszulki.
- Dodaj trasę warunkową:
- 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
Następna trasa przejdzie na stronę potwierdzenia, gdy wykonawca będzie znany, a użytkownik wybierze opcję „Longslee” (długi rękaw) i wybierzesz rozmiar koszulki.
- Dodaj trasę warunkową:
- Wyrażenie niestandardowe:
$session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
- Dodanie gotowych ustawień parametru – dodanie parametru >
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 na stronę:
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
- Dodanie gotowych ustawień parametru – dodanie parametru >
price = 10
- Przejście do strony:
Confirmation
Teraz utworzymy zaawansowane warunki 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.
- Dodaj trasę warunkową:
- 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 do formatowania daty lub godziny albo wyświetlania aktualnej godziny ($sys.func.NOW()
).
Sfinalizuj proces katalogu, poprawiając strony potwierdzenie i cena.
Strona potwierdzenia:
Teraz utworzymy stronę potwierdzenia. Wymagane są następujące uprawnienia:
- Jeśli merch to CD lub album cyfrowy. W potwierdzeniu wyświetlimy te pola: artysta, merch, album i cena.
- Jeśli produkt 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 > opcję 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 następującą 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 tę realizację: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 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 w przypadku utrzymania lub edytowania procesów z upływem czasu i chcesz mieć pewność, że żadne zmiany nie zakłócą Twojej wcześniejszej 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) | Trasy > Intencja | Trasa > Przejście do |
Customer Care Start |
| Dostawa |
Rozpoczęcie obsługi klienta |
| Zwrot środków |
Customer Care Start |
| Wymiana |
Rozpoczęcie obsługi klienta |
| Zakończ proces |
Customer Care Start |
| 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 na stronie Zwrot środków te przypadki realizacji wpisu:
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 wypełnienie:Thank you for contacting G-Records! Have a nice day!
- Wybierz stronę Start (Strona startowa) 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
- Zapytaj:
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: #katalog, #koszule, #t-shirt, #LalkiGoogle
- 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 przypadku testowego:
Price info
- Tagi:
#catalog, #music, #tourmovie, #shirts
- Opis: testowanie informacji o cenie w różnych miejscach w dialogu
Testowanie nagranych wcześniej przypadków testowych
- W głównym menu 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 będą 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?
- Zapisz 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ąć nieudany test, aby wyświetlić szczegóły błędu.
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 żądanie, które nie zostało zrealizowane, 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 zapisz ten przypadek testowy:
I want to swap my item
, zapisz go jakoSwapping
#swapping
. - Otwórz Manage >Intents >redirect.refund.info i dodaj to wyrażenie na potrzeby trenowania:
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 zakończył się niepowodzeniem z komunikatem 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 Wymiana.
Pokrycie,
W Dialogflow CX pokrycie to wskaźnik używany do opisania stopnia, w jakim dialog agenta wirtualnego (strony i intencje) jest uruchamiany 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 pokrycia wszystkich przypadków testowych, kliknij Stan.
- 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 agentów wirtualnych, takich jak boty na czacie lub głosowe. Dialogflow CX umożliwia Twojemu zespołowi przyspieszenie tworzenia rozmów konwersacyjnych na poziomie firmy dzięki wizualnym kreatorom botów, intencjom wielokrotnego użytku i możliwości rozwiązywania wieloetapowych rozmów.
Z tego ćwiczenia w Codelabs dowiesz się, jak tworzyć wirtualnych agentów do obsługi sprzedaży detalicznej w rzeczywistych warunkach. 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, zapoznaj się z tymi blogami i dokumentacją.