Migracja realizacji zamówień

Po skonfigurowaniu intencji i scen musisz zaktualizować kod realizacji, aby uwzględniał zmiany w formatach żądań i odpowiedzi w narzędziu Action Builder. Warto też rozważyć skorzystanie z dodatkowych funkcji Actions Builder. Na tej stronie znajdziesz ogólne instrukcje i uwagi dotyczące aktualizowania kodu realizacji.

Zastanów się nad sposobem realizacji celu

Kod realizacji projektu zależy od modelu konwersacyjnego i funkcji platformy programistycznej. Actions Builder wprowadza nowy model konwersacyjny i funkcję, które zmieniają sposób budowania rozmowy i prawdopodobnie zmienią Twoje podejście do realizacji projektu. W tej sekcji opisujemy funkcje Actions Builder, które różnią się od Dialogflow oraz jak te różnice wpływają na sposób implementacji kodu realizacji.

  • Zmiany w implementacji rozmów

    • Dialogflow wykorzystuje przepływ konwersacyjny oparty na zamiarach i kontekstach, w którym poszczególne intencje są dopasowywane na podstawie wyrażeń na potrzeby trenowania oraz kontekstów danych wejściowych i wyjściowych poprzedzającej intencję.
    • Proces konwersacyjny w Actions Builder używa scen jako kontenera na potrzeby zwrotów w rozmowie. W ramach sceny można dopasować konkretne intencje, podobnie jak w kontekście Dialogflow. Przejścia określają, do której sceny przejść, w zależności od dopasowanej intencji.
  • Funkcje 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ą niestandardowe nazwy modułów obsługi w Actions Builder. Ta funkcja umożliwia wywoływanie funkcji z różnych scen w projekcie.
  • Więcej sposobów wywoływania webhooków

    • Jeden webhook na podejście do intencji w Dialogflow wymaga dodatkowych intencji, które ułatwiają logikę konwersacyjną w ramach realizacji projektu.
    • Kreator działań umożliwia wykonywanie wywołań webhooka z wielu miejsc w scenie: po naciśnięciu klawisza Enter na podstawie warunków, na podstawie wypełnienia przedziałów oraz przez dopasowywanie niestandardowych i systemowych intencji.

Aktualizowanie kodu realizacji

Kod realizacji akcji różni się w zależności od jej złożoności i przeznaczenia, ale podczas aktualizowania kodu należy wykonać ogólne czynności:

  1. Pobierz i zainstaluj najnowszą wersję biblioteki klienta.

    npm install @assistant/conversation
    
  2. Zaktualizuj w kodzie instrukcje require. Na przykład:

    const {
      SimpleResponse,
      BasicCard,
      Image,
    } = require('actions-on-google');
    

    Powyższy kod został zmieniony w taki sposób:

    const {
      conversation,
      Simple,
      Card,
      Image,
    } = require('@assistant/conversation');
    
  3. Refaktoryzacja kodu pod kątem nowych metod.

    • Moduły obsługi intencji: app.intentapp.handle
    • Odpowiedź/prompty: conv.askconv.add
    • Funkcje platformy/urządzenia: conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')conv.device.capabilities.includes('RICH_RESPONSE')
    • Miejsce na dane: conv.dataconv.session.params
    • Typy odpowiedzi:

      • SimpleResponseSimple
      • BasicCardCard
      • SuggestionsSuggestion
    • Parametry intencji: conv.parameters[KEY]conv.intent.parameters[KEY].resolved

    • Konteksty/przejścia scen: 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'

  4. Zaktualizuj kod odpowiedzi, aby wykorzystywał nowe podstawowe elementy odpowiedzi konstruktora. Na przykład:

    conv.ask(new Suggestions (['a', 'b']));
    

    Powyższy kod został zmieniony w taki sposób:

    for (suggestion of ['a', 'b']) {
      conv.add.(new Suggestion({title: suggestion}))
    }
    

Pełną listę metod znajdziesz poniżej, w mapie translacji kodu realizacji.

Na tych stronach możesz porównać ładunki żądań i odpowiedzi:

.

Konfigurowanie webhooków

Po zaktualizowaniu realizacji zamówienia włącz wywołania webhooka w scenach w projekcie. Narzędzie do migracji przenosi ustawienia webhooka intencji Dialogflow, ale musisz sprawdzić te ustawienia, ponieważ zrefaktoryzowany 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, które mają być wykonywane po dopasowaniu intencji. W Kreatorze działań webhook może być aktywowany w ramach intencji lub scen wywołania, co spowoduje wysłanie żądania do punktu końcowego realizacji. Twoja 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
  • W trakcie sceny
  • Po ocenie stanu jako prawda na etapie stanu sceny
  • Na etapie wypełniania przedziału czasowego sceny
  • Po wystąpieniu dopasowania intencji na etapie wprowadzania sceny

Podczas migracji z Dialogflow do Actions Builder musisz wziąć pod uwagę zmiany w przebiegu rozmowy, ponieważ może to wpłynąć na czas i miejsce wykonywania wywołań webhooka.

Aby włączyć wywołanie webhooka, wykonaj te czynności:

  1. Wybierz scenę, z której chcesz wywołać webhooka.
  2. Wybierz stan, dla którego chcesz włączyć webhooka. Webhooka możesz włączyć w przypadku jednego lub kilku z tych stanów:

    • Przy wprowadzaniu
    • Warunek
    • Wypełnienie otworów
    • Obsługa intencji użytkownika
    • Obsługa intencji systemowych
  3. Zaznacz opcję Zadzwoń do webhooka.

  4. Wpisz moduł obsługi webhooka zdefiniowany w kodzie realizacji.

  5. Kliknij Zapisz.

  6. Otwórz Testowanie, aby wypróbować zmiany dotyczące wywołania webhooka i realizacji.

Mapa tłumaczenia kodu realizacji

W tabeli poniżej pokazujemy, jak składnia kodu realizacji Dialogflow przekłada się na kod Actions Builder. Pełną listę metod znajdziesz w dokumentacji usługi 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 systemowych:
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ź z elementami rozszerzonymi prompt -content -card: object -image: object -table: object -media: object -suggestions -link

Informacje na temat dodatkowych narzędzi znajdziesz poniżej: