Schritt 2a (optional): Prüfen der Details des Informationsflusses gesprochener Inhalte (Konsole) - Amazon Lex V 1

Hinweis zum Ende des Supports: Am 15. September 2025 AWS wird der Support für Amazon Lex V1 eingestellt. Nach dem 15. September 2025 können Sie nicht mehr auf die Amazon Lex V1-Konsole oder die Amazon Lex V1-Ressourcen zugreifen. Wenn Sie Amazon Lex V2 verwenden, lesen Sie stattdessen das Amazon Lex V2-Handbuch.

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 Client und Amazon Lex erklärt, wenn der Client Sprachbefehle zum Senden von Anfragen verwendet. Weitere Informationen finden Sie unter PostContent.

  1. Der Benutzer sagt: „Ich möchte Blumen bestellen.“

    1. 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 body input stream

      Sowohl die Anforderungs-URI als auch der Text stellen Amazon Lex Informationen zur Verfügung:

      • Anfrage-URI — Gibt den Bot-Namen (OrderFlowers), den Bot-Alias ($LATEST) und den Benutzernamen (eine zufällige Zeichenfolge, die den Benutzer identifiziert) an. contentgibt an, dass es sich um eine PostContent API-Anfrage (keine PostText Anfrage) handelt.

      • 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. Die Content-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 body input stream
    2. Aus dem Eingabestream erkennt Amazon Lex die Absicht (OrderFlowers). Es wählt dann einen der Slots der Absicht (in diesem Fall den FlowerType) 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.

  2. Der Benutzer sagt: Rosen

    1. 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 body input stream ("roses")

      Der Anforderungstext ist der Audiostream der Benutzereingabe (Rosen). Die sessionAttributes bleiben leer.

    2. Amazon Lex interpretiert den Eingabestream im Kontext der aktuellen Absicht (es erinnert sich, dass es diesen Benutzer nach Informationen zum FlowerType Slot gefragt 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.

  3. Der Benutzer sagt: morgen

    1. 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 body input stream ("tomorrow")

      Der Anforderungstext ist der Audiostream der Benutzereingabe („morgen“). Die sessionAttributes bleiben leer.

    2. Amazon Lex interpretiert den Eingabestream im Kontext der aktuellen Absicht (es erinnert sich, dass es diesen Benutzer nach Informationen zum PickupDate Slot gefragt hat). Amazon Lex aktualisiert den slot (PickupDate) -Wert für die aktuelle Absicht. 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.

  4. Der Benutzer sagt: 18 Uhr

    1. 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 body input stream ("6 pm")

      Der Anforderungstext ist der Audiostream der Benutzereingabe („18 Uhr“). Die sessionAttributes bleiben leer.

    2. Amazon Lex interpretiert den Eingabestream im Kontext der aktuellen Absicht (es erinnert sich, dass es diesen Benutzer nach Informationen zum PickupTime Slot gefragt hat). Es aktualisiert zuerst den Slot-Wert für die aktuelle Absicht.

      Jetzt erkennt Amazon Lex, dass es Informationen für alle Slots 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.

  5. Der Benutzer sagt: Ja

    1. 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 body input stream ("Yes")

      Der Anforderungstext ist der Audiostream der Benutzereingabe („Ja“). Die sessionAttributes bleiben leer.

    2. Amazon Lex interpretiert den Eingabestream und versteht, dass der Benutzer mit der Bestellung fortfahren möchte. Die Absicht OrderFlowers wird mit ReturnIntent als Erfüllungsaktivität konfiguriert. Dadurch wird Amazon Lex angewiesen, alle Absichtsdaten an den Kunden zurückzugeben. Amazon Lex gibt eine Antwort mit folgendem Inhalt 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 auf ReadyForFulfillment. Der Client kann die Absicht dann erfüllen.

  6. 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. Zum 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 zur 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 Verwendung 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: Lambda-Funktion erstellen (Konsole)