Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Mithilfe von bedingter Verzweigung können Sie steuern, welchen Weg Ihr Kunde in der Konversation mit Ihrem Bot einschlägt. Sie können die Konversation auf der Grundlage von Slot-Werten, Sitzungsattributen, dem Inhalt des Eingabemodus und der Eingabe-Transkriptfelder oder einer Antwort von Amazon Kendra verzweigen.
Sie können bis zu vier Zweige definieren. Jeder Zweig hat eine Bedingung, die erfüllt sein muss, damit Amazon Lex V2 diesem Zweig folgen kann. Wenn die Bedingung für keinen der Zweige erfüllt ist, wird einer Standardverzweigung gefolgt.
Wenn Sie einen Zweig definieren, definieren Sie die Aktion, die Amazon Lex V2 ergreifen soll, wenn die Bedingungen, die diesem Zweig entsprechen, als wahr bewertet werden. Sie können jede der folgenden Aktionen definieren:
-
Eine Antwort, die an den Benutzer gesendet wurde.
-
Slot-Werte, die auf Slots angewendet werden sollen.
-
Sitzungsattributwerte für die aktuelle Sitzung.
-
Der nächste Schritt in der Konversation. Weitere Informationen finden Sie unter Gesprächspfade erstellen.
Jede bedingte Verzweigung hat einen booleschen Ausdruck, der erfüllt sein muss, damit Amazon Lex V2 der Verzweigung folgt. Es gibt Vergleichs- und Boolesche Operatoren, Funktionen und Quantifizierungsoperatoren, die Sie für Ihre Bedingungen verwenden können. Die folgende Bedingung gibt beispielsweise „true“ zurück, wenn der Wert für {age} kleiner als 24 ist.
{age} < 24
Die folgende Bedingung gibt „true“ zurück, wenn das Feld mit mehreren Werten {toppings} das Wort „pineapple“ enthält.
{toppings} CONTAINS "pineapple"
Für komplexere Bedingungen können Sie mehrere Vergleichsoperatoren mit einem booleschen Operator kombinieren. Die folgende Bedingung gibt beispielsweise „true“ zurück, wenn der Slot-Wert {make} „Honda“ und der Slot-Wert {model} „Civic“ ist. Verwenden Sie Klammern, um die Reihenfolge der Auswertung festzulegen.
({make} = "Honda") AND ({model} = "Civic")
Die folgenden Themen enthalten Einzelheiten zu den Operatoren und Funktionen für bedingte Verzweigungen.
Anmerkung
Am 17. August 2022 veröffentlichte Amazon Lex V2 eine Änderung an der Art und Weise, wie Konversationen mit dem Benutzer verwaltet werden. Diese Änderung gibt Ihnen mehr Kontrolle über den Pfad, den der Benutzer durch die Konversation nimmt. Weitere Informationen finden Sie unter Änderungen an Konversationsabläufen in Amazon Lex V2. Bots, die vor dem 17. August 2022 erstellt wurden, unterstützen keine Dialogcode-Hook-Nachrichten, das Setzen von Werten, das Konfigurieren der nächsten Schritte und das Hinzufügen von Bedingungen.
Themen
Vergleichsoperatoren
Amazon Lex V2 unterstützt die folgenden Vergleichsoperatoren für Bedingungen:
-
Entspricht (=)
-
Nicht gleich (! =)
-
Kleiner als (<)
-
Kleiner als oder gleich (< =)
-
größer als (>)
-
Größer als oder gleich (> =)
Wenn ein Vergleichsoperator verwendet wird, werden die folgenden Regeln verwendet.
-
Die linke Seite muss eine Referenz sein. Um beispielsweise auf einen Slot-Wert zu verweisen, verwenden
{slotName}
Sie. Um auf einen Sitzungsattributwert zu verweisen, verwenden Sie[attribute]
. Für den Eingabemodus und das Eingabeprotokoll verwenden Sie$.inputMode
und$.inputTranscript
. -
Die rechte Seite muss eine Konstante sein und denselben Typ wie die linke Seite haben.
-
Jeder Ausdruck, der auf ein Attribut verweist, das nicht festgelegt wurde, wird als ungültig behandelt und nicht ausgewertet.
-
Wenn Sie einen Slot mit mehreren Werten vergleichen, ist der verwendete Wert eine durch Kommas getrennte Liste aller interpretierten Werte.
Vergleiche basieren auf dem Slot-Typ der Referenz. Sie werden wie folgt gelöst:
-
Zeichenketten — Zeichenketten werden auf der Grundlage ihrer ASCII-Darstellung verglichen. Bei diesem Vergleich wird die Groß-/Kleinschreibung nicht beachtet.
-
Zahlen — zahlenbasierte Slots werden von der Zeichenkettendarstellung in eine Zahl umgewandelt und dann verglichen.
-
Datum/Uhrzeit — Zeitfenster werden anhand der Zeitreihen verglichen. Das frühere Datum oder die frühere Uhrzeit wird als kleiner angesehen. Bei Zeiträumen gelten kürzere Zeiträume als kleiner.
Boolesche Operatoren
Amazon Lex V2 unterstützt boolesche Operatoren, um Vergleichsoperatoren zu kombinieren. Mit ihnen können Sie Aussagen erstellen, die den folgenden ähneln:
({number} >= 5) AND ({number} <= 10)
Sie können die folgenden booleschen Operatoren verwenden:
-
UND (&&)
-
ODER (||)
-
NICHT (!)
Quantifizierer-Operatoren
Quantifizierer-Operatoren werten die Elemente einer Sequenz aus und bestimmen, ob ein oder mehrere Elemente die Bedingung erfüllen.
-
CONTAINS — bestimmt, ob der angegebene Wert in einem Slot mit mehreren Werten enthalten ist, und gibt „true“ zurück, wenn dies der Fall ist. Gibt beispielsweise „true“
{toppings} CONTAINS "pineapple"
zurück, wenn der Benutzer Ananas auf seiner Pizza bestellt hat.
Funktionen
Den Funktionen muss die Zeichenfolge fn.
vorangestellt werden. Das Argument der Funktion ist ein Verweis auf einen Slot, ein Sitzungsattribut oder ein Anforderungsattribut. Amazon Lex V2 bietet zwei Funktionen zum Abrufen von Informationen aus den Werten von slots, sessionAttribute oder requestAttribute.
-
fn.Count () — zählt die Anzahl der Werte in einem Slot mit mehreren Werten.
Wenn der Slot beispielsweise den Wert „Peperoni, Ananas“
{toppings}
enthält:fn.COUNT({toppings}) = 2
-
fn.is_Set () — Der Wert ist wahr, wenn in der aktuellen Sitzung ein Slot, ein Sitzungsattribut oder ein Anforderungsattribut gesetzt ist.
Basierend auf dem vorherigen Beispiel:
fn.IS_SET({toppings})
-
fn.Length () — Wert ist die Länge des Werts des Sitzungsattributs, des Slot-Werts oder des Slot-Attributs, der in der aktuellen Sitzung festgelegt wurde. Diese Funktion unterstützt keine Slots mit mehreren Werten oder zusammengesetzten Slots.
Beispiel:
Wenn der Slot den Wert „123456781234"
{credit-card-number}
enthält:fn.LENGTH({credit-card-number}) = 12
Beispiel für bedingte Ausdrücke
Hier sind einige Beispiele für bedingte Ausdrücke. HINWEIS: $.
stellt den Einstiegspunkt zur Amazon Lex JSON-Antwort dar. Der folgende Wert $.
wird in der Amazon Lex Lex-Antwort analysiert, um den Wert abzurufen. Bedingte Ausdrücke, die den JSON-Pfadverweis auf den Transkriptionsblock in der Amazon Lex Lex-Antwort verwenden, werden nur in denselben Gebietsschemas unterstützt, die ASR-Transkriptionswerte unterstützen.
Werttyp | Anwendungsfall | Bedingter Ausdruck |
---|---|---|
Benutzerdefinierter Steckplatz | pizzaSize Der Slot-Wert ist gleich groß |
{pizzaSize} = "large" |
Benutzerdefinierter Steckplatz | pizzaSize entspricht groß oder mittel |
{pizzaSize} = "large" ODER {pizzaSize} = "medium" |
Benutzerdefinierter Steckplatz | Ausdrücke mit () und AND/OR |
{pizzaType} = "pepperoni" ODER {pizzaSize} = "medium" ODER {pizzaSize} = "small" |
Benutzerdefinierter Steckplatz (Steckplatz mit mehreren Werten) | Überprüfe, ob einer der Beläge Zwiebel ist | {toppings} CONTAINS "Onion" |
Benutzerdefinierter Steckplatz (Steckplatz mit mehreren Werten) | Die Anzahl der Beläge beträgt mehr als 3 | fn.COUNT({topping}) > 2 |
AMAZON.AlphaNumeric |
bookingID ist ABC123 |
{bookingID} = "ABC123" |
AMAZON.Number |
Der Wert des Altersfensters ist größer als 30 | {age} > 30 |
AMAZON.Number |
Der Wert des Altersfensters ist gleich 10 | {age} = 10 |
AMAZON.Date |
dateOfBirth Wert des Zeitplatzes vor 1990 |
{dateOfBirth} < "1990-10-01" |
AMAZON.State |
destinationState Der Slot-Wert entspricht Washington |
{destinationState} = "washington" |
AMAZON.Country |
destinationCountry Der Slot-Wert ist nicht Vereinigte Staaten |
{destinationCountry} != "united states" |
AMAZON.FirstName |
firstName Der Slot-Wert ist John |
{firstName} = "John" |
AMAZON.PhoneNumber |
phoneNumber Der Slot-Wert ist 716767891932 |
{phoneNumer} = 716767891932 |
AMAZON.Percentage |
Prüfen Sie, ob der prozentuale Slot-Wert größer oder gleich 78 ist | {percentage} >= 78 |
AMAZON.EmailAddress |
emailAddress Der Slot-Wert ist userA@hmail.com |
{emailAddress} = "userA@hmail.com" |
AMAZON.LastName |
lastName Der Slot-Wert ist Doe |
{lastName} = "Doe" |
AMAZON.City |
Der Wert des Stadt-Slots entspricht dem Wert von Seattle | {city} = "Seattle" |
AMAZON.Time |
Es ist nach 20 Uhr | {time} > "20:00" |
AMAZON.StreetName |
streetName Der Slot-Wert ist Boren Avenue |
{streetName} = "boren avenue" |
AMAZON.Duration |
travelDuration Der Slot-Wert beträgt weniger als 2 Stunden |
{travelDuration} < P2H |
Eingabemodus | Eingabemodus ist Sprache | $.inputMode = "Speech" |
Eingangstranskript | Das Eingabeprotokoll entspricht „Ich möchte eine große Pizza“ | $.inputTranscript = "I want a large pizza" |
Sitzungsattribut | überprüfen Sie das Attribut customer_subscription_type | [customer_subcription_type] = "yearly" |
Attribut anfordern | überprüfen Sie das Flag retry_enabled | ((retry_enabled)) = "TRUE" |
Antwort von Kendra | Die Antwort von Kendra enthält häufig gestellte Fragen | fn.IS_SET(((x-amz-lex:kendra-search-response-question_answer-question-1))) |
Bedingter Ausdruck mit Transkriptionen | Bedingte Ausdrücke, die den JSON-Pfad für Transkriptionen verwenden | $.transcriptions[0].transcriptionConfidence < 0.8 AND $.transcriptions[1].transcriptionConfidence
> 0.5 |
Legen Sie die Sitzungsattribute fest | Legen Sie Sitzungsattribute mithilfe von JSON-Pfad- und Slot-Werten für Transkriptionen fest | [sessionAttribute] = "$.transcriptions..." AND
[sessionAttribute] = "{<slotName>}" |
Legen Sie Slot-Werte fest | Legen Sie Slot-Werte mithilfe des JSON-Pfads für Sitzungsattribute und Transkriptionen fest | {slotName} = [<sessionAttribute>] AND
{slotName} = "$.transcriptions..." |
Anmerkung
slotName
bezieht sich auf den Namen eines Slots im Amazon Lex Lex-Bot. Wenn der Slot nicht aufgelöst ist (Null) oder wenn der Slot nicht existiert, werden die Zuweisungen zur Laufzeit ignoriert. sessionAttribute
bezieht sich auf den Namen des Sitzungsattributs, das vom Kunden bei der Erstellung festgelegt wurde.