

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.

# Grundlegendes zu Amazon Lex V2-Bot-Konversationen
<a name="managing-conversations"></a>

Nachdem Sie einen Bot erstellt haben, integrieren Sie Ihre Client-Anwendung in die Amazon Lex V2-Laufzeitoperationen, um Konversationen mit Ihrem Bot zu führen. Wenn ein Benutzer eine Konversation mit Ihrem Bot beginnt, erstellt Amazon Lex V2 eine *Sitzung*. Eine Sitzung kapselt die Informationen, die zwischen Ihrer Anwendung und dem Bot ausgetauscht werden. Weitere Informationen finden Sie unter [Grundlegendes zu Amazon Lex V2-Bot-Sitzungen](managing-sessions.md).

Eine typische Konversation beinhaltet einen Hin- und Herfluss zwischen dem Benutzer und einem Bot. Beispiel:

```
User : I'd like to make an appointment
Bot : What type of appointment would you like to schedule?
User : dental
Bot : When should I schedule your dental appointment?
User : Tomorrow
Bot : At what time do you want to schedule the dental appointment on 2021-01-01?
User : 9 am
Bot : 09:00 is available, should I go ahead and book your appointment?
User : Yes
Bot : Thank you. Your appointment has been set successfully.
```

Verwenden Sie die [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)oder [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)API-Operationen, um die Konversationen selbst zu verwalten. Verwenden Sie den [StartConversation](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_StartConversation.html)API-Vorgang, damit Amazon Lex V2 die Konversation für Sie verwalten kann.

Um die Konversation zu verwalten, müssen Sie Benutzeräußerungen an den Bot senden, bis die Konversation ein logisches Ende erreicht hat. Die aktuelle Konversation wird im Sitzungsstatus aufgezeichnet. Der Sitzungsstatus wird nach jeder Benutzeräußerung aktualisiert. Der Sitzungsstatus enthält den aktuellen Status der Konversation und wird vom Bot als Antwort auf jede Benutzeräußerung zurückgegeben. 

Eine Konversation kann sich in einem der folgenden Zustände befinden:
+ **ElicitIntent**— Zeigt an, dass der Bot die Absicht des Benutzers noch nicht bestimmt hat.
+ **ElicitSlot**— Zeigt an, dass der Bot die Absicht des Benutzers erkannt hat und die erforderlichen Informationen sammelt, um die Absicht zu erfüllen.
+ **ConfirmIntent**— Zeigt an, dass der Bot darauf wartet, dass der Benutzer bestätigt, dass die gesammelten Informationen korrekt sind.
+ **Geschlossen** — Zeigt an, dass die Absicht des Benutzers abgeschlossen ist und dass die Konversation mit dem Bot ein logisches Ende erreicht hat.

Ein Benutzer kann eine neue Absicht angeben, nachdem die erste Absicht abgeschlossen ist. Weitere Informationen finden Sie unter [Konversationskontext mit Ihren Lex V2-Bots](conversation-contexts.md).

Eine Absicht kann einen der folgenden Zustände haben:
+ **InProgress**— Zeigt an, dass der Bot Informationen sammelt, die zur Ausführung der Absicht erforderlich sind. Dies steht in Verbindung mit dem `ElicitSlot` Konversationsstatus.
+ **Wartend** — Zeigt an, dass der Benutzer den Bot gebeten hat, zu warten, als der Bot nach Informationen für einen bestimmten Slot gefragt hat. 
+ **Erfüllt** — Zeigt an, dass die Geschäftslogik in einer Lambda-Funktion, die der Absicht zugeordnet ist, erfolgreich ausgeführt wurde.
+ **ReadyForFulfillment**— Zeigt an, dass der Bot alle Informationen gesammelt hat, die zur Erfüllung der Absicht erforderlich sind, und dass die Client-Anwendung die Fulfillment-Geschäftslogik ausführen kann. 
+ **Fehlgeschlagen** — Zeigt an, dass eine Absicht fehlgeschlagen ist.

In den folgenden Themen erfahren Sie, wie Sie Amazon Lex V2 verwenden, APIs um den Konversationskontext und die Sitzungen zwischen Ihrem Bot und Benutzern zu verwalten.

**Topics**
+ [Konversationskontext mit Ihren Lex V2-Bots](conversation-contexts.md)
+ [Grundlegendes zu Amazon Lex V2-Bot-Sitzungen](managing-sessions.md)

# Konversationskontext mit Ihren Lex V2-Bots
<a name="conversation-contexts"></a>

*Konversationskontext* sind Informationen, die der Benutzer, Ihre Client-Anwendung oder eine Lambda-Funktion einem Amazon Lex V2-Bot zur Erfüllung einer Absicht zur Verfügung stellt. Der Konversationskontext umfasst vom Benutzer bereitgestellte Slot-Daten, von der Client-Anwendung festgelegte Anforderungsattribute und Sitzungsattribute, die von der Client-Anwendung und den Lambda-Funktionen erstellt werden.

**Topics**
+ [Den Absichtskontext für Ihren Lex V2-Bot festlegen](context-mgmt-active-context.md)
+ [Verwenden von Standard-Slot-Werten in Intents für Ihren Lex V2-Bot](context-mgmt-default.md)
+ [Sitzungsattribute für Ihren Lex V2-Bot festlegen](context-mgmt-session-attribs.md)
+ [Einstellung von Anforderungsattributen für Ihren Lex V2-Bot](context-mgmt-request-attribs.md)
+ [Einstellung des Sitzungs-Timeouts](context-mgmt-session-timeout.md)
+ [Austausch von Informationen zwischen Absichten mit Ihrem Lex V2-Bot](context-mgmt-cross-intent.md)
+ [Einstellung komplexer Attribute in Ihrem Lex V2-Bot](context-mgmt-complex-attributes.md)

# Den Absichtskontext für Ihren Lex V2-Bot festlegen
<a name="context-mgmt-active-context"></a>

Sie können Amazon Lex V2 *kontextabhängige* Absichten auslösen lassen. Ein *Kontext* ist eine Statusvariable, die einer Absicht zugeordnet werden kann, wenn Sie einen Bot definieren. Sie konfigurieren die Kontexte für eine Absicht, wenn Sie die Absicht mithilfe der Konsole oder mithilfe der [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)Operation erstellen. Sie können den Kontext nur im Gebietsschema Englisch (US) (en-US) verwenden.

Es gibt zwei Arten von Beziehungen für Kontexte: Ausgabekontexte und Eingabekontexte. Ein *Ausgabekontext* wird aktiv, wenn eine zugehörige Absicht erfüllt ist. In der Antwort der [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)Operation [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)oder wird ein Ausgabekontext an Ihre Anwendung zurückgegeben, und er wird für die aktuelle Sitzung festgelegt. Nachdem ein Kontext aktiviert wurde, bleibt er für die Anzahl der Runden oder das Zeitlimit aktiv, das bei der Definition des Kontexts konfiguriert wurde. 

Ein *Eingabekontext* legt Bedingungen fest, unter denen eine Absicht erkannt werden kann. Eine Absicht kann während einer Konversation nur erkannt werden, wenn alle ihre Eingabekontexte aktiv sind. Eine Absicht ohne Eingabekontexte kann immer anerkannt werden. 

Amazon Lex V2 verwaltet automatisch den Lebenszyklus von Kontexten, die durch die Erfüllung von Absichten mit Ausgabekontexten aktiviert werden. Sie können auch aktive Kontexte in einem Aufruf der `RecognizeUtterance` Operation `RecognizeText` oder festlegen.

Sie können den Kontext einer Konversation auch mithilfe der Lambda-Funktion für die Absicht festlegen. Der Ausgabekontext von Amazon Lex V2 wird an das Eingabeereignis der Lambda-Funktion gesendet. Die Lambda-Funktion kann in ihrer Antwort Kontexte senden. Weitere Informationen finden Sie unter [Integration einer AWS Lambda Funktion in Ihren Amazon Lex V2-Bot](lambda.md).

Nehmen wir zum Beispiel an, Sie möchten einen Mietwagen buchen, der so konfiguriert ist, dass er einen Ausgabekontext namens „book\$1car\$1filled“ zurückgibt. Wenn die Absicht erfüllt ist, legt Amazon Lex V2 die Ausgabekontextvariable „book\$1car\$1filled“ fest. Da es sich bei „book\$1car\$1fulfilled“ um einen aktiven Kontext handelt, wird eine Absicht, bei der der Kontext „book\$1car\$1filled“ als Eingabekontext festgelegt ist, nun bei der Erkennung berücksichtigt, sofern eine Benutzeräußerung als Versuch erkannt wird, diese Absicht auszulösen. Sie können dies für Absichten verwenden, die erst nach der Buchung eines Autos Sinn ergeben, z. B. das Versenden einer Quittung per E-Mail oder das Ändern einer Reservierung.

## Ausgabekontext der Absichten für Ihren Lex V2-Bot
<a name="context-output"></a>

Amazon Lex V2 aktiviert die Ausgabekontexte einer Absicht, wenn die Absicht erfüllt ist. Sie können den Ausgabekontext verwenden, um zu kontrollieren, welche Absichten für die Weiterverfolgung der aktuellen Absicht in Frage kommen.

Jeder Kontext hat eine Liste von Parametern, die in der Sitzung verwaltet werden. Die Parameter sind die Slot-Werte für die erfüllte Absicht. Sie können diese Parameter verwenden, um Slot-Werte für andere Zwecke vorab auszufüllen. Weitere Informationen finden Sie unter. [Verwenden von Standard-Slot-Werten in Intents für Ihren Lex V2-Bot](context-mgmt-default.md)

Sie konfigurieren den Ausgabekontext, wenn Sie eine Absicht mit der Konsole oder mit der [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)Operation erstellen. Sie können eine Absicht mit mehr als einem Ausgabekontext konfigurieren. Wenn die Absicht erfüllt ist, werden alle Ausgabekontexte aktiviert und in der [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)Antwort [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)oder zurückgegeben.

Wenn Sie einen Ausgabekontext definieren, definieren Sie auch seine *Gültigkeitsdauer*, also die Dauer oder Anzahl der Runden, in denen der Kontext in Antworten von Amazon Lex V2 enthalten ist. Ein *Turn* ist eine Anfrage von Ihrer Anwendung an Amazon Lex V2. Sobald die Anzahl der Runden oder die Zeit abgelaufen ist, ist der Kontext nicht mehr aktiv. 

Ihre Anwendung kann den Ausgabekontext nach Bedarf verwenden. Ihre Anwendung kann den Ausgabekontext beispielsweise verwenden, um:
+ Ändern Sie das Verhalten der Anwendung je nach Kontext. Beispielsweise könnte eine Reiseanwendung für den Kontext „book\$1car\$1filled“ eine andere Aktion als für „rental\$1hotel\$1filled“ haben.
+ Geben Sie den Ausgabekontext als Eingabekontext für die nächste Äußerung an Amazon Lex V2 zurück. Wenn Amazon Lex V2 die Äußerung als Versuch erkennt, eine Absicht hervorzurufen, verwendet es den Kontext, um die Absichten, die zurückgegeben werden können, auf solche mit dem angegebenen Kontext zu beschränken.

## Geben Sie den Kontext der Absichten für Ihren Lex V2-Bot ein
<a name="context-input"></a>

Sie legen einen Eingabekontext fest, um die Punkte in der Konversation zu begrenzen, an denen die Absicht erkannt wird. Absichten ohne Eingabekontext können immer erkannt werden.

Sie legen die Eingabekontexte fest, auf die eine Absicht reagiert, indem Sie die Konsole oder den `CreateIntent` Vorgang verwenden. Eine Absicht kann mehr als einen Eingabekontext haben.

Bei einer Absicht mit mehr als einem Eingabekontext müssen alle Kontexte aktiv sein, um die Absicht auszulösen. Sie können einen Eingabekontext festlegen, wenn Sie die [PutSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html)Operation [RecognizeText[RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html), oder aufrufen. 

Sie können die Slots so konfigurieren, dass sie Standardwerte aus dem aktuell aktiven Kontext übernehmen. Standardwerte werden verwendet, wenn Amazon Lex V2 eine neue Absicht erkennt, aber keinen Slot-Wert erhält. Sie geben den Kontextnamen und den Slot-Namen im Formular an`#context-name.parameter-name`, wenn Sie den Slot definieren. Weitere Informationen finden Sie unter [Verwenden von Standard-Slot-Werten in Intents für Ihren Lex V2-Bot](context-mgmt-default.md).

# Verwenden von Standard-Slot-Werten in Intents für Ihren Lex V2-Bot
<a name="context-mgmt-default"></a>

Wenn Sie einen Standardwert verwenden, geben Sie eine Quelle für einen Slot-Wert an, der für neue Absichten gefüllt werden soll, wenn durch die Benutzereingabe kein Slot bereitgestellt wird. Bei dieser Quelle kann es sich um vorherige Dialogfelder, Anfragen oder Sitzungsattribute oder um einen festen Wert handeln, den Sie bei der Erstellung festlegen. 

Sie können Folgendes als Quelle für Ihre Standardwerte verwenden.
+ Vorheriger Dialog (Kontexte) — \$1context -name.parameter-name
+ Sitzungsattribute — [Attributname]
+ Attribute anfordern — <attribute-name>
+ Fester Wert — Jeder Wert, der nicht mit dem vorherigen Wert übereinstimmt

Wenn Sie die [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)Operation verwenden, um Slots zu einer Absicht hinzuzufügen, können Sie eine Liste mit Standardwerten hinzufügen. Standardwerte werden in der Reihenfolge verwendet, in der sie aufgelistet sind. Nehmen wir zum Beispiel an, Sie haben eine Absicht mit einem Slot mit der folgenden Definition:

```
"slots": [
    {
        "botId": "string",
        "defaultValueSpec": {
            "defaultValueList": [
                {
                    "defaultValue": "#book-car-fulfilled.startDate"
                },
                {
                    "defaultValue": "[reservationStartDate]"
                }
            ]
        },
        Other slot configuration settings
    }
]
```

Wenn die Absicht erkannt wird, wird der Wert des Slots mit dem Namen reservation-start-date "" auf einen der folgenden Werte gesetzt.

1. Wenn der Kontext book-car-fulfilled "" aktiv ist, wird der Wert des Parameters „StartDate“ als Standardwert verwendet.

1. Wenn der Kontext book-car-fulfilled "" nicht aktiv ist oder wenn der Parameter „StartDate“ nicht festgelegt ist, wird der Wert des Sitzungsattributs reservationStartDate "" als Standardwert verwendet.

1. Wenn keiner der ersten beiden Standardwerte verwendet wird, hat der Slot keinen Standardwert und Amazon Lex V2 ruft wie gewohnt einen Wert ab.

Wenn ein Standardwert für den Slot verwendet wird, wird der Slot nicht abgerufen, auch wenn er erforderlich ist.

# Sitzungsattribute für Ihren Lex V2-Bot festlegen
<a name="context-mgmt-session-attribs"></a>

*Sitzungsattribute* enthalten anwendungsspezifische Informationen, die während einer Sitzung zwischen einem Bot und einer Client-Anwendung ausgetauscht werden. Amazon Lex V2 übergibt Sitzungsattribute an alle Lambda-Funktionen, die für einen Bot konfiguriert sind. Wenn eine Lambda-Funktion Sitzungsattribute hinzufügt oder aktualisiert, gibt Amazon Lex V2 die neuen Informationen zurück an die Client-Anwendung. 

Verwenden Sie Sitzungsattribute in Ihren Lambda-Funktionen, um einen Bot zu initialisieren und Eingabeaufforderungen und Antwortkarten anzupassen. Beispiel:
+ Initialisierung — Bei einem Bot zur Pizzabestellung übergibt die Client-Anwendung den Standort des Benutzers als Sitzungsattribut beim ersten Aufruf der Operation oder. [RecognizeText[RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) Beispiel, `"Location": "111 Maple Street"`. Die Lambda-Funktion verwendet diese Informationen, um die nächstgelegene Pizzeria zu finden, in der die Bestellung aufgegeben werden kann.
+ Ansagen Personalize — Konfigurieren Sie Eingabeaufforderungen und Antwortkarten so, dass sie auf Sitzungsattribute verweisen. Zum Beispiel: „Hey [FirstName], welche Toppings hättest du gern?“ Wenn Sie den Vornamen des Benutzers als Sitzungsattribut (`{"FirstName": "Vivian"}`) übergeben, ersetzt Amazon Lex den Platzhalter durch den Namen. Es sendet dann eine personalisierte Aufforderung an den Benutzer: „Hey Vivian, welche Beläge möchtest du?“

Sitzungsattribute bleiben für die Dauer der Sitzung bestehen. Amazon Lex V2 speichert sie in einem verschlüsselten Datenspeicher, bis die Sitzung endet. Der Client kann Sitzungsattribute in einer Anfrage erstellen, indem er entweder die [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)Operation [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)oder aufruft, wobei das `sessionAttributes` Feld auf einen Wert gesetzt ist. Eine Lambda-Funktion kann in einer Antwort ein Sitzungsattribut erstellen. Nachdem der Client oder eine Lambda-Funktion ein Sitzungsattribut erstellt hat, wird der Wert des gespeicherten Attributs immer dann verwendet, wenn die Client-Anwendung kein `sessionAttribute` Feld in eine Anfrage an Amazon Lex V2 einbezieht.

Angenommen, Sie haben zwei Sitzungsattribute `{"x": "1", "y": "2"}`. Wenn der Client die `RecognizeUtterance` Operation `RecognizeText` or aufruft, ohne das `sessionAttributes` Feld anzugeben, ruft Amazon Lex V2 die Lambda-Funktion mit den gespeicherten Sitzungsattributen (`{"x": 1, "y": 2}`) auf. Wenn die Lambda-Funktion keine Sitzungsattribute zurückgibt, gibt Amazon Lex V2 die gespeicherten Sitzungsattribute an die Client-Anwendung zurück.

Wenn entweder die Client-Anwendung oder eine Lambda-Funktion Sitzungsattribute weitergibt, aktualisiert Amazon Lex V2 die gespeicherten Sitzungsattribute. Wird ein bestehender Wert wie ` {"x": 2}` übergeben, wird der gespeicherte Wert aktualisiert. Wenn Sie einen neuen Satz Sitzungsattribute übergeben, wie z. B. `{"z": 3}`, werden die vorhandenen Werte entfernt, und nur der neue Wert wird beibehalten. Wird eine leere Zuordnung, `{}`, übergeben, werden die gespeicherten Werte gelöscht.

Um Sitzungsattribute an Amazon Lex V2 zu senden, erstellen Sie eine string-to-string Zuordnung der Attribute. Das folgende Beispiel zeigt, wie Sitzungsattribute zugeordnet werden: 

```
{
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

Für den `RecognizeText` Vorgang fügen Sie die Map mithilfe des `sessionAttributes` Felds der `sessionState` Struktur wie folgt in den Hauptteil der Anfrage ein:

```
"sessionState": {
    "sessionAttributes": {
        "attributeName": "attributeValue",
        "attributeName": "attributeValue"
    }
}
```

Für die `RecognizeUtterance` Operation kodieren Sie die Map mit Base64 und senden sie dann als Teil des `x-amz-lex-session-state` Headers.

Wenn Sie binäre oder strukturierte Daten in einem Sitzungsattribut übermitteln, müssen Sie die Daten zunächst in eine einfache Zeichenfolge transformieren. Weitere Informationen finden Sie unter [Einstellung komplexer Attribute in Ihrem Lex V2-Bot](context-mgmt-complex-attributes.md).

# Einstellung von Anforderungsattributen für Ihren Lex V2-Bot
<a name="context-mgmt-request-attribs"></a>

*Anforderungsattribute* enthalten anforderungsspezifische Informationen und gelten nur für die aktuelle Anforderung. Eine Client-Anwendung sendet diese Informationen an Amazon Lex V2. Verwenden Sie Anforderungsattribute zur Weitergabe von Informationen, die nicht während der ganzen Sitzung erhalten bleiben müssen. Sie können eigene Anforderungsattribute erstellen oder vordefinierte verwenden. Zum Senden von Anforderungsattributen nutzen Sie den `x-amz-lex-request-attributes`-Header in einem [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) oder das `requestAttributes`-Feld in einer [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)-Anforderung. Da Anforderungsattribute nicht wie Sitzungsattribute anforderungsübergreifend erhalten bleiben, werden sie nicht in `RecognizeUtterance`- oder `RecognizeText`-Antworten zurückgegeben. 

**Anmerkung**  
Nutzen Sie Sitzungsattribute, wenn Sie möchten, dass Informationen anforderungsübergreifend erhalten bleiben.

## Einstellung benutzerdefinierter Anforderungsattribute für jede Lex V2-Bot-Anfrage
<a name="context-mgmt-user"></a>

Ein *benutzerdefiniertes Anforderungsattribut* besteht aus Daten, die Sie bei jeder Anforderung an Ihren Bot senden. Sie senden die Informationen im `amz-lex-request-attributes`-Header einer `RecognizeUtterance`-Anforderung oder im Feld `requestAttributes` einer `RecognizeText`-Anforderung. 

Um Anforderungsattribute an Amazon Lex V2 zu senden, erstellen Sie eine string-to-string Zuordnung der Attribute. Das folgende Beispiel zeigt, wie Anforderungsattribute zugewiesen werden: 

```
{
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

Bei der `PostText`-Operation fügen Sie die Zuordnung wie folgt mittels des Felds `requestAttributes` in den Text der Anforderung ein:

```
"requestAttributes": {
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

Bei der `PostContent`-Operation kodieren Sie die Zuordnung mit base64 und senden diese als `x-amz-lex-request-attributes`-Header.

Wenn Sie binäre oder strukturierte Daten in einem Anforderungsattribut übermitteln, müssen Sie die Daten zunächst in eine einfache Zeichenfolge transformieren. Weitere Informationen finden Sie unter [Einstellung komplexer Attribute in Ihrem Lex V2-Bot](context-mgmt-complex-attributes.md).

Amazon Lex V2 bietet vordefinierte Anforderungsattribute zur Verwaltung der Art und Weise, wie Informationen verarbeitet werden, die an Ihren Bot gesendet werden. Die Attribute bleiben nicht für die gesamte Sitzung erhalten, daher müssen Sie die vordefinierten Attribute in jede Anforderung mit einschließen. Alle vordefinierten Attribute befinden sich im Namespace `x-amz-lex:`.

Zusätzlich zu den folgenden vordefinierten Attributen bietet Amazon Lex vordefinierte Attribute für Messaging-Plattformen. Eine Liste dieser Attribute finden Sie unter Bereitstellen eines Amazon Lex Lex-Bot auf einer Messaging-Plattform.

## Einrichten des Antworttyps
<a name="response-type-context"></a>



Wenn Sie über zwei Client-Anwendungen mit unterschiedlichen Funktionen verfügen, müssen Sie das Format der Mitteilungen in einer Antwort möglicherweise einschränken. Beispielsweise möchten Sie die an einen Web-Client gesendeten Mitteilungen auf Klartext beschränken, einen mobilen Client jedoch befähigen, sowohl Klartext als auch Speech Synthesis Markup Language (SSML) zu verwenden. Verwenden Sie das Anforderungsattribut x-amz-lex: accept-content-types ", um das Format der von den `PostText` Operationen `PostContent` und zurückgegebenen Nachrichten festzulegen. 

Sie können das Attribut auf eine beliebige Kombination der folgenden Mitteilungstypen festlegen: 
+ `PlainText`— Die Nachricht enthält einfachen UTF-8-Text.
+ `SSML`— Die Nachricht enthält Text, der für die Sprachausgabe formatiert ist.
+ `CustomPayload`— Die Nachricht enthält ein benutzerdefiniertes Format, das Sie für Ihren Kunden erstellt haben. Sie können die Nutzlast definieren, um den Anforderungen Ihrer Anwendung zu entsprechen.

Amazon Lex V2 gibt nur Nachrichten mit dem angegebenen Typ im Nachrichtenfeld der Antwort zurück. Sie können mehr als einen Wert festlegen, indem Sie die einzelnen Werte durch Komma trennen. Wenn Sie Mitteilungsgruppen verwenden, muss jede Mitteilungsgruppe mindestens eine Mitteilung des angegebenen Typs enthalten. Andernfalls erhalten Sie den Fehler `NoUsableMessageException`. Weitere Informationen finden Sie unter Nachrichtengruppen. 

## Einstellung vordefinierter Anforderungsattribute in Ihrem Lex V2-Bot
<a name="setting-predefined-request-attributes"></a>

Amazon Lex V2 bietet vordefinierte Anforderungsattribute zur Verwaltung der Art und Weise, wie Informationen verarbeitet werden, die an Ihren Bot gesendet werden. Die Attribute bleiben nicht für die gesamte Sitzung erhalten, daher müssen Sie die vordefinierten Attribute in jede Anforderung mit einschließen. Alle vordefinierten Attribute befinden sich im Namespace `x-amz-lex:`.

## Deaktivieren von Intent-Switches in Ihrem Lex V2-Bot
<a name="disabling-intent-switches-attributes"></a>

Verwenden Sie das Anforderungsattribut, um zu steuern, ob Benutzer während der Bestätigung von Absichten oder der Slot-Erkennung zwischen den Absichten wechseln können. `x-amz-lex:intent-switch` Wenn dieses Attribut auf gesetzt ist`DISABLE`, verhindert es, dass Benutzer eine andere Absicht auslösen, während sie gerade dabei sind, den aktuellen Absichtsfluss abzuschließen.

Wenn ein Benutzer beispielsweise gerade einen Flug bucht und zur Eingabe von Flugdaten aufgefordert wird, werden Äußerungen wie „Wetter überprüfen“ oder „Hotel buchen“ — die normalerweise andere Absichten auslösen können — ignoriert, sodass sichergestellt wird, dass sich die Konversation weiterhin auf den aktuellen Buchungsprozess konzentriert.

# Einstellung des Sitzungs-Timeouts
<a name="context-mgmt-session-timeout"></a>

Amazon Lex speichert Kontextinformationen — Slot-Daten und Sitzungsattribute — bis eine Konversationssitzung endet. Um zu steuern, wie lange eine Sitzung für einen Bot dauert, legen Sie einen Zeitüberschreitungswert für die Sitzung fest. Standardmäßig dauert eine Sitzung 5 Minuten, Sie können aber auch eine Dauer zwischen 0 und 1 440 Minuten (24 Stunden) angeben. 

Angenommen, Sie erstellen einen `ShoeOrdering`-Bot zur Unterstützung von Absichten wie `OrderShoes` und `GetOrderStatus`. Wenn Amazon Lex feststellt, dass der Benutzer beabsichtigt, Schuhe zu bestellen, fragt es nach Slot-Daten. Sie fragt beispielsweise nach Schuhgröße, Farbe, Marke etc. Wenn der Benutzer einige der Slot-Daten angibt, den Schuhkauf aber nicht abschließt, merkt sich Amazon Lex alle Slot-Daten und Sitzungsattribute für die gesamte Sitzung. Wenn der Benutzer vor Ablauf zur Sitzung zurückkehrt, kann er die verbleibenden Slot-Daten angeben und den Kauf abschließen.

In der Amazon Lex V2-Konsole legen Sie das Sitzungs-Timeout fest, wenn Sie einen Bot erstellen. Mit der AWS-Befehlszeilenschnittstelle (AWS-CLI) oder API legen Sie das Timeout fest, wenn Sie einen Bot mit dem [CreateBot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBot.html)Vorgang erstellen, indem Sie das Feld [IdleSession TTLIn](https://docs.aws.amazon.com/lexv2/latest/dg/API_PutBot.html#API_CreateBot.html#lexv2-CreateBot-request-idleSessionTTLInSeconds) Seconds festlegen.

# Austausch von Informationen zwischen Absichten mit Ihrem Lex V2-Bot
<a name="context-mgmt-cross-intent"></a>

Amazon Lex V2 unterstützt den Informationsaustausch zwischen Absichten. Verwenden Sie zum Teilen zwischen Absichten Ausgabekontexte oder Sitzungsattribute. 

Um Ausgabekontexte zu verwenden, definieren Sie einen Ausgabekontext, wenn Sie eine Absicht erstellen oder aktualisieren. Wenn die Absicht erfüllt ist, enthalten Antworten von Amazon Lex V2 den Kontext und die Slot-Werte aus der Absicht als Kontextparameter. Sie können diese Parameter als Standardwerte in nachfolgenden Absichten oder in Ihrem Anwendungscode oder in Lambda-Funktionen verwenden.

Um Sitzungsattribute zu verwenden, legen Sie die Attribute in Ihrem Lambda- oder Anwendungscode fest. Angenommen, ein Benutzer des Bots `ShoeOrdering` bestellt Schuhe. Der Bot schaltet sich in die Konversation mit dem Benutzer ein und erfasst Slot-Daten wie Schuhgröße, Farbe und Marke. Wenn der Benutzer eine Bestellung aufgibt, legt die Lambda-Funktion, die die Bestellung erfüllt, das `orderNumber` Sitzungsattribut fest, das die Bestellnummer enthält. Der Benutzer verwendet die Absicht `GetOrderStatus`, um den Status der Bestellung zu erhalten. Der Bot kann den Benutzer nach Slot-Daten fragen, wie beispielsweise Bestellnummer oder -datum. Wenn der Bot die notwendigen Informationen hat, gibt er den Status der Bestellung zurück.

Wenn Sie der Meinung sind, dass Ihre Benutzer möglicherweise Absichten während der Sitzung ändern, können Sie Ihren Bot so konfigurieren, dass der Status der letzten Bestellung wiedergegeben wird. Anstatt den Benutzer erneut nach Bestellinformationen zu fragen, nutzen Sie das Sitzungsattribut `orderNumber`, um Informationen absichtsübergreifend zu teilen und die Absicht `GetOrderStatus` zu erfüllen. Der Bot führt dies durch, indem er den Status der letzten vom Benutzer aufgegebenen Bestellung zurückgibt.

# Einstellung komplexer Attribute in Ihrem Lex V2-Bot
<a name="context-mgmt-complex-attributes"></a>

Sitzungs- und Anforderungsattribute sind string-to-string Zuordnungen von Attributen und Werten. In vielen Fällen können Sie mit der Zeichenfolgen-Zuordnung Attributwerte zwischen Ihrer Clientanwendung und einem Bot übertragen. In einigen Fällen müssen Sie jedoch möglicherweise binäre Daten oder eine komplexe Struktur übertragen, die schwer in eine Zeichenfolgen-Zuordnung konvertiert werden kann. Das folgende JSON-Objekt stellt beispielsweise ein Array der drei beliebtesten Städte in den USA dar:

```
{
   "cities": [
      {
         "city": {
            "name": "New York",
            "state": "New York",
            "pop": "8537673"
         }
      },
      {
         "city": {
            "name": "Los Angeles",
            "state": "California",
            "pop": "3976322"
         }
      },
      {
         "city": {
            "name": "Chicago",
            "state": "Illinois",
            "pop": "2704958"
         }
      }
   ]
}
```

Dieses Datenarray lässt sich nicht gut in eine string-to-string Map übertragen. In diesem Fall können Sie ein Objekt in eine einfache Zeichenfolge transformieren, sodass Sie sie mit den Operationen [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) und [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) an Ihren Bot senden können. 

Wenn Sie beispielsweise verwenden, können Sie die `JSON.stringify` Operation verwenden JavaScript, um ein Objekt in JSON zu konvertieren, und die `JSON.parse` Operation, um JSON-Text in ein JavaScript Objekt zu konvertieren:

```
// To convert an object to a string.
var jsonString = JSON.stringify(object, null, 2);
// To convert a string to an object.
var obj = JSON.parse(JSON string);
```

Um Attribute mit der `RecognizeUtterance` Operation zu senden, müssen Sie die Attribute base64-kodieren, bevor Sie sie dem Anforderungsheader hinzufügen, wie im folgenden JavaScript Code gezeigt:

```
var encodedAttributes = new Buffer(attributeString).toString("base64");
```

Sie können binäre Daten an die Operationen `RecognizeText` und `RecognizeUtterance` senden, indem Sie die Daten zunächst in eine mit base64 kodierte Zeichenfolge konvertieren und diese Zeichenfolge dann als Wert in den Sitzungsattributen übermitteln:

```
"sessionAttributes" : {
   "binaryData": "base64 encoded data"
}
```

# Grundlegendes zu Amazon Lex V2-Bot-Sitzungen
<a name="managing-sessions"></a>

Wenn ein Benutzer eine Konversation mit Ihrem Bot beginnt, erstellt Amazon Lex V2 eine *Sitzung*. Die zwischen Ihrer Anwendung und Amazon Lex V2 ausgetauschten Informationen bilden den Sitzungsstatus für die Konversation. Wenn Sie eine Anfrage stellen, wird die Sitzung durch eine von Ihnen angegebene Kennung identifiziert. Weitere Informationen zur Sitzungs-ID finden Sie in dem `sessionId` Feld in der [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)Operation [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)or.

Sie können den zwischen Ihrer Anwendung und Ihrem Bot gesendeten Sitzungsstatus ändern. Beispielsweise können Sie Sitzungsattribute erstellen und ändern, die benutzerdefinierte Informationen zur Session enthalten. Außerdem können Sie den Gesprächsablauf ändern, indem Sie den Dialogkontext für die Interpretation der nächste Äußerung festlegen.

Es gibt drei Möglichkeiten, den Sitzungsstatus zu aktualisieren. 
+ Übergeben Sie die Sitzungsinformationen inline als Teil eines Aufrufs an die `RecognizeUtterance` Operation `RecognizeText` oder.
+ Verwenden Sie eine Lambda-Funktion mit der `RecognizeUtterance` Operation `RecognizeText` oder, die nach jeder Runde der Konversation aufgerufen wird. Weitere Informationen finden Sie unter [Integration einer AWS Lambda Funktion in Ihren Amazon Lex V2-Bot](lambda.md). Die andere Möglichkeit besteht darin, die Amazon Lex V2-Runtime-API in Ihrer Anwendung zu verwenden, um Änderungen am Sitzungsstatus vorzunehmen. 
+ Verwenden Sie Operationen, mit denen Sie Sitzungsinformationen für eine Konversation mit Ihrem Bot verwalten können. Hierzu gehören die Operation [PutSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html), die Operation [GetSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_GetSession.html) und die Operation [DeleteSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_DeleteSession.html). Sie können mit diesen Operationen Informationen über den Status der Sitzung Ihres Benutzers mit Ihrem Bot anfordern und eine differenzierte Kontrolle über den Status erlangen.

Verwenden Sie die Operation `GetSession`, wenn Sie den aktuellen Status der Sitzung anfordern möchten. Der Vorgang gibt den aktuellen Status der Sitzung zurück, einschließlich des Status des Dialogs mit Ihrem Benutzer, aller festgelegten Sitzungsattribute und Slot-Werte für die aktuelle Absicht sowie aller anderen Absichten, die Amazon Lex V2 als mögliche Absichten identifiziert hat, die der Äußerung des Benutzers entsprechen.

Die Operation `PutSession` ermöglicht es Ihnen, den aktuellen Sitzungsstatus direkt zu bearbeiten. Sie können die Sitzung festlegen, einschließlich der Art der Dialogaktion, die der Bot als Nächstes ausführt, und der Nachrichten, die Amazon Lex V2 an den Benutzer sendet. Dadurch haben Sie Kontrolle über den Gesprächsablauf mit dem Bot. Stellen Sie das `type` Dialogaktionsfeld `Delegate` auf ein, damit Amazon Lex V2 die nächste Aktion für den Bot bestimmt.

Sie können mit der Operation `PutSession` eine neue Sitzung mit einem Bot erstellen und die Absicht festlegen, mit der der Bot beginnen soll. Sie können mit der Operation `PutSession` auch von einer Absicht zu einer anderen wechseln. Wenn Sie eine Sitzung erstellen oder die Absicht ändern, können Sie auch den Sitzungsstatus, wie z. B. Slot-Werte und Sitzungsattribute, festlegen. Wenn die neue Absicht abgeschlossen ist, haben Sie die Möglichkeit, die vorherige Absicht neu zu starten. 

Die Antwort von der Operation `PutSession` enthält die gleichen Informationen wie die von der Operation `RecognizeUtterance`. Sie können diese Informationen, genauso wie die Antwort von der Operation `RecognizeUtterance`, verwenden, um vom Benutzer die nächste Teilinformation anzufordern.

Sie können mit der Operation `DeleteSession` eine vorhandene Sitzung entfernen und mit einer neuen Sitzung ganz von vorne beginnen. Wenn Sie beispielsweise Ihren Bot testen, können Sie mit der Operation `DeleteSession` Testsitzungen von Ihrem Bot entfernen.

Die Sitzungsvorgänge funktionieren mit Ihren Fulfillment-Lambda-Funktionen. Wenn Ihre Lambda-Funktion beispielsweise `Failed` als Erfüllungsstatus zurückkehrt, können Sie die `PutSession` Operation verwenden, um den Aktionstyp des Dialogs auf `close` und `fulfillmentState` auf festzulegen, um den Erfüllungsschritt erneut `ReadyForFulfillment` zu versuchen.

Es folgen einige Aufgaben, die Sie mit den Sitzungsoperationen ausführen können:
+ Veranlassen des Bots zum Starten einer Konversation, anstatt auf den Benutzer zu warten.
+ Wechseln von Absichten während einer Konversation.
+ Zurückkehren zur einer vorherigen Absicht.
+ Starten oder Neustarten einer Konversation während der Interaktion.
+ Validieren von Slot-Werten und Veranlassen des Bots, für ungültige Werte neue Werte anzufordern.

Jede dieser Aufgaben wird im Folgenden beschrieben.

## Eine neue Sitzung starten
<a name="session-start"></a>

Wenn Sie möchten, dass der Bot die Konversation mit Ihrem Benutzer startet, können Sie dazu Operation `PutSession` verwenden. 
+ Erstellen Sie eine Begrüßungsabsicht ohne Slots und eine abschließende Nachricht, die den Benutzer auffordert, eine Absicht zu nennen. Beispiel: „Was möchten Sie bestellen? Sie können Folgendes sagen: 'Ein Getränk bestellen' oder 'Eine Pizza bestellen'.“
+ Aufrufen der `PutSession`-Operation. Legen Sie als Absichtsnamen den Namen Ihrer Begrüßungsabsicht und als Dialogaktion `Delegate` fest. 
+ Amazon Lex antwortet mit der Aufforderung von Your Welcome Intent, die Konversation mit Ihrem Benutzer zu beginnen.

## Absicht wechseln
<a name="session-switch"></a>

Sie können mit der Operation `PutSession` von einer Absicht zu einer anderen wechseln. Sie können mit ihr auch zu einer vorherigen Absicht zurückwechseln. Sie können mit der Operation `PutSession` Sitzungsattribute oder Slot-Werte für die neue Absicht einstellen.
+ Aufrufen der `PutSession`-Operation. Legen Sie als Absichtsnamen den Namen der neuen Absicht und als Dialogaktion `Delegate` fest. Sie können auch alle für die neue Absicht erforderlichen Slot-Werte oder Sitzungsattribute festlegen.
+ Amazon Lex beginnt eine Konversation mit dem Benutzer, der die neue Absicht verwendet.

## Wiederaufnahme einer vorherigen Absicht
<a name="session-return"></a>

Um eine vorherige Absicht wieder aufzunehmen, verwenden Sie die `GetSession` Operation, um den Status der Absicht abzurufen, die erforderliche Interaktion durchzuführen und dann die `PutSession` Operation zu verwenden, um die Absicht auf den vorherigen Dialogstatus zu setzen.
+ Aufrufen der `GetSession`-Operation. Speichern Sie den Status der Absicht.
+ Führen Sie eine weitere Interaktion durch, z. B. die Erfüllung einer anderen Absicht.
+ Rufen Sie die `PutSession` Operation auf, indem Sie die Informationen verwenden, die für die vorherige Absicht gespeichert wurden. Dadurch gelangt der Benutzer wieder zur vorherigen Absicht an der gleichen Stelle im Gespräch.

In einigen Fällen kann es erforderlich sein, dass die Konversation Ihres Benutzers mit Ihrem Bot fortgesetzt wird. Angenommen, Sie haben einen Kundenservice-Bot erstellt. Ihre Anwendung stellt fest, dass der Benutzer mit einem Kundendienstmitarbeiter sprechen muss. Nach der Unterhaltung mit dem Benutzer kann der Mitarbeiter das Gespräch mit den vom ihm erfassten Informationen wieder an den Bot weiterleiten.

Um eine Sitzung fortzusetzen, verwenden Sie Schritte ähnlich wie diese:
+ Ihre Anwendung stellt fest, dass der Benutzer mit einem Kundendienstmitarbeiter sprechen muss.
+ Fordern Sie mit der Operation `GetSession` den aktuellen Dialogstatus der Absicht an. 
+ Der Kundendienstmitarbeiter spricht mit dem Benutzer und löst das Problem.
+ Legen Sie mit der Operation `PutSession` den Dialogstatus der Absicht fest. Hierzu gehören möglicherweise Festlegen von Slot-Werten, Einstellen von Sitzungsattributen oder Ändern der Absicht.
+ Der Bot setzt die Konversation mit dem Benutzer fort.

## Slot-Werte werden validiert
<a name="session-validation"></a>

Sie können Antworten an Ihren Bot mit Ihrer Client-Anwendung validieren. Wenn die Antwort nicht gültig ist, können Sie mit der Operation `PutSession` eine neue Antwort von Ihrem Benutzer anfordern. Angenommen, Ihr Bot zur Aufnahme von Blumenbestellungen kann nur Rosen, Tulpen und Lilien verkaufen. Wenn der Benutzer Nelken bestellt, kann Ihre Anwendung wie folgt vorgehen:
+ Untersuchen des Slot-Wertes, der von der Antwort `PostText` oder `PostContent` zurückgegeben wird.
+ Wenn der Slot-Wert nicht gültig ist, Aufrufen der Operation `PutSession`. Ihre Anwendung sollte den Slot-Wert löschen, das Feld `slotToElicit` festlegen und den Wert `dialogAction.type` auf `elicitSlot` einstellen. Optional können Sie die `messageFormat` Felder `message` und festlegen, wenn Sie die Nachricht ändern möchten, die Amazon Lex verwendet, um den Slot-Wert zu ermitteln.