

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.

# 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"
}
```