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

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.

  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 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. contentgibt 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. 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 Eingabe-Stream 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 um Informationen zumFlowerType 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.

  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 um Informationen zumPickupDate 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.

  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 um Informationen zumPickupTime 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.

  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 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 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. 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)