Po skonfigurowaniu intencji i scen musisz zaktualizować kod realizacji, aby uwzględnić zmiany w formatach żądań i odpowiedzi dostępnych w komponencie Action Builder. Możesz też skorzystać z dodatkowych funkcji narzędzia Actions Builder. Na tej stronie znajdziesz ogólne instrukcje i uwagi dotyczące aktualizowania kodu realizacji.
Rozważanie sposobu realizacji zamówień
Kod realizacji projektu zależy od modelu rozmowy i funkcji platformy deweloperskiej. Actions Builder to nowy model rozmowy i funkcje, które zmieniają sposób prowadzenia rozmowy i mogą zmienić sposób, w jaki podchodzisz do realizacji projektu. W tej sekcji opisano funkcje Actions Builder, które różnią się od Dialogflow, oraz sposób, w jaki te różnice wpływają na sposób implementacji kodu realizacji.
Zmiany w implementacji rozmów
- Dialogflow korzysta z przebiegu rozmowy opartego na zamiarach i zamiarach, w którym poszczególne intencje są dopasowywane na podstawie wyrażeń treningowych oraz kontekstów wejściowych i wyjściowych wcześniejszych intencji.
- W procesie konwersacyjnym w Actions Builder sceny są kontenerami do rozmów. W obrębie sceny można dopasować określone intencje, podobnie jak konteksty w Dialogflow. Przejścia określają, do której sceny ma zostać przejście w zależności od dopasowanej intencji.
Funkcje webhooka wielokrotnego użytku
- W Dialogflow moduły obsługi webhooka są powiązane z poszczególnymi intencjami. Jeśli potrzebna jest dodatkowa logika, musisz utworzyć osobną intencję do obsługi nowej funkcji.
- Moduły obsługi webhooka mają w Actions Builder niestandardowe nazwy modułów obsługi. Ta funkcja umożliwia wywoływanie funkcji z wielu scen w całym projekcie.
Więcej sposobów wywoływania webhooków
- Jeden webhook na każdą intencję w Dialogflow wymaga dodatkowych intencji, które usprawniają logikę konwersacyjną w ramach realizacji projektu.
- Kreator akcji umożliwia wykonywanie wywołań webhooka z wielu miejsc w scenie: wejścia, na podstawie warunków, wypełnienia przedziałów oraz przez dopasowywanie intencji niestandardowych i systemowych.
Aktualizowanie kodu realizacji
Kod realizacji poszczególnych akcji będzie się różnił w zależności od złożoności i przeznaczenia akcji, ale podczas aktualizacji kodu musisz wykonać kilka ogólnych czynności:
Pobierz i zainstaluj najnowszą wersję biblioteki klienta.
npm install @assistant/conversation
Zaktualizuj instrukcje
require
w kodzie. Na przykład:const { SimpleResponse, BasicCard, Image, } = require('actions-on-google');
Powyższy kod został zmieniony na taki:
const { conversation, Simple, Card, Image, } = require('@assistant/conversation');
refaktoryzuj kod, aby korzystać z nowych metod.
- Moduły obsługi intencji:
app.intent
→app.handle
- Odpowiedź/prośby:
conv.ask
→conv.add
- Możliwości platformy/urządzenia:
conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')
→conv.device.capabilities.includes('RICH_RESPONSE')
- Miejsce na dane:
conv.data
→conv.session.params
Typy odpowiedzi:
SimpleResponse
→Simple
BasicCard
→Card
Suggestions
→Suggestion
Parametry intencji:
conv.parameters[KEY]
→conv.intent.parameters[KEY].resolved
Przejścia sceniczne i kontekstów:
conv.contexts.set(content_name, 5);
→conv.scene.next.name = 'context_name'
Zakończ rozmowę:
conv.close(response)
→conv.add.response; conv.scene.next.name = 'actions.page.END_CONVERSATION'
- Moduły obsługi intencji:
Zaktualizuj kod odpowiedzi, aby używać nowych podstawowych elementów odpowiedzi w konstrukcji. Na przykład:
conv.ask(new Suggestions (['a', 'b']));
Powyższy kod został zmieniony na taki:
for (suggestion of ['a', 'b']) { conv.add.(new Suggestion({title: suggestion})) }
Pełną listę metod znajdziesz na mapie tłumaczenia kodu realizacji poniżej.
Na tych stronach możesz porównać ładunki żądań i odpowiedzi:
- Formaty żądań
- Dokumentacja Dialogflow (w języku angielskim)
- Dokumentacja Actions Builder
- Formaty odpowiedzi
- Dokumentacja Dialogflow (w języku angielskim)
- Dokumentacja Actions Builder
Konfigurowanie webhooków
Po zaktualizowaniu realizacji zamówienia włącz wywołania webhooka w całych scenach w projekcie. Narzędzie do migracji przenosi ustawienia webhooka intencji Dialogflow, ale musisz sprawdzić te ustawienia, ponieważ refaktoryzowany kod realizacji i funkcje webhooka mogą ulec zmianie.
W Dialogflow webhooki są włączone w intencjach, a kod realizacji zawiera moduły obsługi i funkcje do wykonania, gdy intencja jest zgodna. W Kreatorze działań webhook może zostać aktywowany w intencjach lub scenach wywołania, co spowoduje wysłanie żądania do punktu końcowego realizacji realizacji. Realizacja zawiera moduły obsługi webhooka, które przetwarzają ładunek JSON w żądaniu. Webhooki możesz aktywować w tych sytuacjach:
- Po dopasowaniu intencji wywołania
- Podczas wprowadzania sceny na scenie
- Gdy warunek zostanie oceniony jako prawda na etapie warunku sceny
- Podczas etapu wypełniania przedziałów sceny
- Po dopasowaniu intencji na etapie wprowadzania sceny
Podczas migracji z Dialogflow do Actions Builder musisz wziąć pod uwagę zmiany w przepływie rozmowy, ponieważ mogą one ulec zmianie, kiedy i gdzie wykonujesz wywołania webhooka.
Aby włączyć wywołanie webhooka, wykonaj te czynności:
- Wybierz scenę, z której chcesz wywołać webhooka.
Wybierz stan, dla którego chcesz włączyć webhooka. Webhooka możesz włączyć dla co najmniej jednego z tych stanów:
- Po wejściu
- Warunek
- Wypełnianie przedziałów
- Obsługa intencji użytkownika
- Obsługa intencji systemu
Zaznacz opcję Wywołaj webhooka.
Wpisz moduł obsługi webhooka zdefiniowany w kodzie realizacji.
Kliknij Zapisz.
Kliknij Testowanie, aby wypróbować wywołanie webhooka i zmiany realizacji.
Mapa tłumaczenia kodu realizacji
Tabela poniżej pokazuje, jak składnia kodu realizacji Dialogflow jest przekładana na kod Actions Builder. Pełną listę metod znajdziesz w dokumentacji referencyjnej Actions Builder i SDK.
Dialogflow | Kreator działań |
---|---|
conv.data |
conv.session.params |
conv.ask |
conv.add |
conv.close |
conv.scene.next.name = 'actions.scene.END_CONVERSATION' |
conv.user.storage |
conv.user.params |
conv.input.raw |
conv.intent.query |
conv.parameters |
conv.intent.params[key].resolved |
conv.arguments.get('MEDIA_STATUS') mediaStatus.status==='FINISHED' |
conv.intent.params['MEDIA_STATUS'] mediaStatus.resolved==='FINISHED' |
Wydarzenia | Obsługa intencji systemu:MEDIA_STATUS_FINISHED MEDIA_STATUS_FAILED |
conv.device.capabilities.has("actions.capability.SCREEN_OUTPUT") |
conv.device.capabilities.includes("RICH_RESPONSE") |
app.intent |
app.handler |
app.middleware |
app.middleware |
Prosta odpowiedź |
prompt
-firstSimple
|
Odpowiedź rozszerzona |
prompt
-content
-card: object
-image: object
-table: object
-media: object
-suggestions
-link
|
Poniżej znajdziesz informacje na temat dodatkowych narzędzi: