Wenn Sie Amazon Lex V2 verwenden, lesen Sie stattdessen das Amazon Lex V2-Handbuch.
Wenn Sie Amazon Lex V1 verwenden, empfehlen wir, Ihre Bots auf Amazon Lex V2 zu aktualisieren. Wir fügen V1 keine neuen Funktionen mehr hinzu und empfehlen dringend, V2 für alle neuen Bots zu verwenden.
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.
Schritt 2a (optional): Prüfen der Details des Informationsflusses gesprochener Inhalte (Konsole)
In diesem Abschnitt wird der Informationsfluss zwischen dem Kunden und Amazon Lex erläutert, wenn der Client Sprache zum Senden von Anfragen verwendet. Weitere Informationen finden Sie unter PostContent.
-
Der Benutzer sagt: „Ich möchte Blumen bestellen.“
-
Der Client (Konsole) sendet die folgende PostContent-Anforderung an Amazon Lex:
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request bodyinput stream
Sowohl die Anfrage-URI als auch der Text liefern Informationen an Amazon Lex:
-
Request-URI — Stellt den Bot-Namen (
OrderFlowers
), den Bot-Alias ($LATEST
) und den Benutzernamen (eine zufällige Zeichenfolge, die den Benutzer identifiziert) bereit.content
gibt an, dass dies einePostContent
API-Anfrage ist (keinePostText
Anfrage). -
Anfordern von Headern
-
x-amz-lex-session-attributes
— Der base64-kodierte Wert steht für „{}“. Wenn der Client die erste Anforderung stellt, gibt es keine Sitzungsattribute. -
Content-Type
: Gibt das Audioformat wieder.
-
-
Anforderungstext: Der Audiostream der Benutzereingabe („Ich möchte Blumen bestellen.“)
Anmerkung
Wenn der Benutzer sich entscheidet, den Text („Ich möchte Blumen bestellen“) an die
PostContent
-API zu senden, anstatt ihn zu sprechen, ist der Anforderungstext die Benutzereingabe. DieContent-Type
-Kopfzeile wird entsprechend eingestellt:POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "text/plain; charset=utf-8" Accept: accept Request bodyinput stream
-
-
Aus dem Eingabe-Stream erkennt Amazon Lex die Absicht (
OrderFlowers
). Es wählt dann einen der Slots der Absicht (in diesem Fall denFlowerType
) und eine der Aufforderungen zur Abfrage von Werten. Dann sendet es eine Antwort mit den folgenden Kopfzeilen:x-amz-lex-dialog-state:ElicitSlot x-amz-lex-input-transcript:I would like to order some flowers. x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:What type of flowers would you like to order? x-amz-lex-session-attributes:e30= x-amz-lex-slot-to-elicit:FlowerType x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjpudWxsLCJQaWNrdXBEYXRlIjpudWxsfQ==
Die Kopfzeilenwerte liefern die folgenden Informationen:
-
x-amz-lex-input-transcript
: Liefert das Transkript des Audios (Benutzereingabe) der Anforderung. -
x-amz-lex-message
— Stellt das Transkript des Audios bereit, das Amazon Lex in der Antwort zurückgegeben hat -
x-amz-lex-slots
: Die base64-kodierte Version der Slots und Werte:{"PickupTime":null,"FlowerType":null,"PickupDate":null}
-
x-amz-lex-session-attributes
: Die base64-kodierte Version der Sitzungsattribute ({}):
Der Client gibt das Audio im Antworttext wieder.
-
-
-
Der Benutzer sagt: Rosen
-
Der Client (Konsole) sendet die folgende PostContent-Anforderung an Amazon Lex:
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request bodyinput stream ("roses")
Der Anforderungstext ist der Audiostream der Benutzereingabe (Rosen). Die
sessionAttributes
bleiben leer. -
Amazon Lex interpretiert den Eingabestream im Kontext der aktuellen Absicht (es erinnert sich, dass es diesen Benutzer um Informationen zum
FlowerType
Slot gebeten hat). Amazon Lex aktualisiert zunächst den Slot-Wert für die aktuelle Absicht. Er wählt einen anderen Slot (PickupDate
) zusammen mit einer der Aufforderungen ("Wann möchten Sie die Rosen abholen?") und gibt eine Antwort mit folgendem Header zurück:x-amz-lex-dialog-state:ElicitSlot x-amz-lex-input-transcript:roses x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:When do you want to pick up the roses? x-amz-lex-session-attributes:e30= x-amz-lex-slot-to-elicit:PickupDate x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6bnVsbH0=
Die Kopfzeilenwerte liefern die folgenden Informationen:
-
x-amz-lex-slots
: Die base64-kodierte Version der Slots und Werte:{"PickupTime":null,"FlowerType":"roses","PickupDate":null}
-
x-amz-lex-session-attributes
: Die base64-kodierte Version der Sitzungsattribute ({}):
Der Client gibt das Audio im Antworttext wieder.
-
-
-
Der Benutzer sagt: morgen
-
Der Client (Konsole) sendet die folgende PostContent-Anforderung an Amazon Lex:
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request bodyinput stream ("tomorrow")
Der Anforderungstext ist der Audiostream der Benutzereingabe („morgen“). Die
sessionAttributes
bleiben leer. -
Amazon Lex interpretiert den Eingabestream im Kontext der aktuellen Absicht (es erinnert sich, dass es diesen Benutzer um Informationen zum
PickupDate
Slot gebeten hat). Amazon Lex aktualisiert den Wert slot (PickupDate
) für den aktuellen Intent. Dann wählt es einen anderen Slot, um einen Wert zu erfragen (PickupTime
) und eine der Aufforderungen zur Eingabe eines Werts (Wann möchten Sie die Rosen am 18.03.2017 abholen?) und gibt eine Antwort mit den folgenden Kopfzeilen zurück:x-amz-lex-dialog-state:ElicitSlot x-amz-lex-input-transcript:tomorrow x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:When do you want to pick up the roses on 2017-03-18? x-amz-lex-session-attributes:e30= x-amz-lex-slot-to-elicit:PickupTime x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ== x-amzn-RequestId:3a205b70-0b69-11e7-b447-eb69face3e6f
Die Kopfzeilenwerte liefern die folgenden Informationen:
-
x-amz-lex-slots
: Die base64-kodierte Version der Slots und Werte:{"PickupTime":null,"FlowerType":"roses","PickupDate":"2017-03-18"}
-
x-amz-lex-session-attributes
: Die base64-kodierte Version der Sitzungsattribute ({}):
Der Client gibt das Audio im Antworttext wieder.
-
-
-
Der Benutzer sagt: 18 Uhr
-
Der Client (Konsole) sendet die folgende PostContent-Anforderung an Amazon Lex:
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "text/plain; charset=utf-8" Accept: "audio/mpeg" Request bodyinput stream ("6 pm")
Der Anforderungstext ist der Audiostream der Benutzereingabe („18 Uhr“). Die
sessionAttributes
bleiben leer. -
Amazon Lex interpretiert den Eingabestream im Kontext der aktuellen Absicht (es erinnert sich, dass es diesen Benutzer um Informationen zum
PickupTime
Slot gebeten hat). Es aktualisiert zuerst den Slot-Wert für die aktuelle Absicht.Jetzt stellt Amazon Lex fest, dass es Informationen für alle Steckplätze hat. Die Absicht
OrderFlowers
ist jedoch mit einer Bestätigungsmitteilung konfiguriert. Daher benötigt Amazon Lex eine ausdrückliche Bestätigung des Benutzers, bevor es mit der Erfüllung der Absicht fortfahren kann. Es sendet eine Antwort mit den folgenden Kopfzeilen, die eine Bestätigung anfordert, bevor die Blumen bestellt werden:x-amz-lex-dialog-state:ConfirmIntent x-amz-lex-input-transcript:six p. m. x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:Okay, your roses will be ready for pickup by 18:00 on 2017-03-18. Does this sound okay? x-amz-lex-session-attributes:e30= x-amz-lex-slots:eyJQaWNrdXBUaW1lIjoiMTg6MDAiLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ== x-amzn-RequestId:083ca360-0b6a-11e7-b447-eb69face3e6f
Die Kopfzeilenwerte liefern die folgenden Informationen:
-
x-amz-lex-slots
: Die base64-kodierte Version der Slots und Werte:{"PickupTime":"18:00","FlowerType":"roses","PickupDate":"2017-03-18"}
-
x-amz-lex-session-attributes
: Die base64-kodierte Version der Sitzungsattribute ({}):
Der Client gibt das Audio im Antworttext wieder.
-
-
-
Der Benutzer sagt: Ja
-
Der Client (Konsole) sendet die folgende PostContent-Anforderung an Amazon Lex:
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request bodyinput stream ("Yes")
Der Anforderungstext ist der Audiostream der Benutzereingabe („Ja“). Die
sessionAttributes
bleiben leer. -
Amazon Lex interpretiert den Eingabestream und versteht, dass der Benutzer mit der Bestellung fortfahren möchte. Die Absicht
OrderFlowers
wird mitReturnIntent
als Erfüllungsaktivität konfiguriert. Dadurch wird Amazon Lex angewiesen, alle Absichtsdaten an den Kunden zurückzugeben. Amazon Lex gibt eine Antwort mit der folgenden Antwort zurück:x-amz-lex-dialog-state:ReadyForFulfillment x-amz-lex-input-transcript:yes x-amz-lex-intent-name:OrderFlowers x-amz-lex-session-attributes:e30= x-amz-lex-slots:eyJQaWNrdXBUaW1lIjoiMTg6MDAiLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ==
Die Antwortkopfzeile
x-amz-lex-dialog-state
ist eingestellt aufReadyForFulfillment
. Der Client kann die Absicht dann erfüllen.
-
-
Testen Sie den Bot jetzt erneut. Um einen neuen Benutzerkontext einzurichten, wählen Sie den Link Clear in der Konsole. Geben Sie Daten für die Absicht
OrderFlowers
an und fügen Sie dabei einige ungültige Daten ein. Beispiel:-
Jasmin als Blumenart (zählt nicht zu den unterstützten Blumenarten)
-
Gestern als den Tag, an dem Sie die Blumen abholen möchten
Beachten Sie, dass der Bot diese Werte akzeptiert, weil Sie keinen Code haben, um die Benutzerdaten zu initialisieren und zu validieren. Im nächsten Abschnitt fügen Sie dazu eine Lambda-Funktion hinzu. Beachten Sie Folgendes im Zusammenhang mit Lambda-Funktion:
-
Sie validiert Slot-Daten nach jeder Benutzereingabe. Sie erfüllt schließlich die Absicht. Der Bot verarbeitet also die Blumenbestellung und gibt eine Mitteilung an den Benutzer zurück, statt einfach Slot-Daten an den Client zurückzugeben. Weitere Informationen finden Sie unter Verwenden von Lambda-Funktionen.
-
Sie stellt auch die Sitzungsattribute ein. Weitere Informationen über Sitzungsattribute finden Sie unter PostText.
Nachdem Sie den Abschnitt "Erste Schritte" abgeschlossen haben, können Sie die zusätzlichen Übungen ausführen (Zusätzliche Beispiele: Amazon Lex Bots erstellen). Reise buchen verwendet Sitzungsattribute, um Informationen über Absichten hinweg gemeinsam zu nutzen und so eine dynamische Unterhaltung mit dem Benutzer zu führen.
-
Nächster Schritt
Schritt 3: Erstellen einer Lambda-Funktion (Lambda-Funktion)