

# IVS-Chat-Nachrichtenüberprüfungs-Handler
<a name="chat-message-review-handler"></a>

Ein Nachrichtenrezension-Handler ermöglicht es Ihnen, Nachrichten zu überprüfen und/oder zu ändern, bevor sie an einen Raum geliefert werden. Wenn ein Nachrichtenrezension-Handler mit einem Raum verknüpft ist, wird er für jede SendMessage-Anforderung an diesen Raum aufgerufen. Der Handler erzwingt die Geschäftslogik Ihrer Anwendung und bestimmt, ob eine Nachricht zugelassen, verweigert oder geändert werden soll. Amazon IVS Chat unterstützt AWS-Lambda-Funktionen als Handler.

## Erstellen einer Lambda-Funktion
<a name="create-lambda-function"></a>

Bevor Sie einen Nachrichtenrezension-Handler für einen Raum einrichten, müssen Sie eine Lambda-Funktion mit einer ressourcenbasierten IAM-Richtlinie erstellen. Die Lambda-Funktion muss sich im selben AWS-Konto und in derselben AWS-Region befinden wie der Raum, mit dem Sie die Funktion verwenden. Die ressourcenbasierte Richtlinie gibt Amazon IVS Chat die Berechtigung zum Aufrufen Ihrer Lambda-Funktion. Anweisungen finden Sie unter [Ressourcenbasierte Richtlinie für Amazon IVS Chat](security-iam.md#security-chat-policy-examples).

### Workflow
<a name="create-lambda-function-workflow"></a>

![\[Workflow zum Erstellen einer Lambda-Funktion mit einer ressourcenbasierten IAM-Richtlinie.\]](http://docs.aws.amazon.com/de_de/ivs/latest/ChatUserGuide/images/Chat_Message_Review_Handler_Workflow.png)


### Anforderungssyntax
<a name="create-lambda-function-request-syntax"></a>

Wenn ein Client eine Nachricht sendet, ruft Amazon IVS Chat die Lambda-Funktion mit einer JSON-Nutzlast auf:

```
{
   "Content": "string",
   "MessageId": "string",
   "RoomArn": "string",
   "Attributes": {"string": "string"},
   "Sender": {
      "Attributes": { "string": "string" },
      "UserId": "string",
      "Ip": "string"
   }
}
```

### Anforderungstext
<a name="create-lambda-function-request-body"></a>


| Feld | Beschreibung | 
| --- | --- | 
| `Attributes` | Attribute, die mit dem Ereignis verknüpft sind. | 
| `Content` |  Ursprünglicher Inhalt der Nachricht. | 
| `MessageId` | Die Nachrichten-ID. Generiert von IVS Chat. | 
| `RoomArn` | Der ARN des Raums, an den Nachrichten gesendet werden. | 
| `Sender` | Informationen zum Absender. Dieses Objekt hat mehrere Felder: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 

### Antwortsyntax
<a name="create-lambda-function-response-syntax"></a>

Die Handler-Lambda-Funktion muss eine JSON-Antwort mit der folgenden Syntax zurückgeben. Antworten, die nicht der folgenden Syntax entsprechen oder die Feldeinschränkungen nicht erfüllen, sind ungültig. In diesem Fall wird die Nachricht je nach `FallbackResult`-Wert, den Sie in Ihrem Nachrichtenrezension-Handler angeben, zugelassen oder abgelehnt; siehe [MessageReviewHandler](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/API_MessageReviewHandler.html) in der *Amazon-IVS-Chat-API-Referenz*.

```
{
   "Content": "string",
   "ReviewResult": "string",
   "Attributes": {"string": "string"},
}
```

### Antwortfelder
<a name="create-lambda-function-response-fields"></a>


| Feld | Beschreibung | 
| --- | --- | 
| `Attributes` |  Attribute, die mit der Nachricht verknüpft sind, die von der Lambda-Funktion zurückgegeben wird. Wenn `ReviewResult` eine `DENY` ist, kann in `Attributes` ein `Reason` angegeben werden; z. B.: `"Attributes": {"Reason": "denied for moderation` In diesem Fall erhält der Absenderclient einen WebSocket 406-Fehler mit dem Grund in der Fehlermeldung. (Siehe [WebSocket-Fehler](https://docs.aws.amazon.com/ivs/latest/chatmsgapireference/error-messages.html#websocket-errors) in der *Amazon-IVS-Chat-Messaging-API-Referenz*.) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 
| `Content` |  Inhalt der von der Lambda-Funktion zurückgegebenen Nachricht. Er kann je nach Geschäftslogik bearbeitet oder original sein. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 
| `ReviewResult` | Das Ergebnis der Überprüfungsverarbeitung zum Umgang mit der Nachricht. Falls zugelassen, wird die Nachricht an alle mit dem Raum verknüpften Benutzer übermittelt. Falls verweigert, wird die Nachricht an keinen Benutzer zugestellt.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 

### Beispiel-Code
<a name="create-lambda-function-example"></a>

Unten ist ein Beispiel für Lambda-Handler in Go. Dabei wird der Nachrichteninhalt geändert, die Nachrichtenattribute werden unverändert beibehalten und die Nachricht wird zugelassen.

```
package main

import (
   "context"
   "github.com/aws/aws-lambda-go/lambda"
)

type Request struct {
   MessageId string
   Content string
   Attributes map[string]string
   RoomArn string
   Sender Sender
}

type Response struct {
   ReviewResult string
   Content string
   Attributes map[string]string
}

type Sender struct {
   UserId string
   Ip string
   Attributes map[string]string
}

func main() {
   lambda.Start(HandleRequest)
}

func HandleRequest(ctx context.Context, request Request) (Response, error) {
   content := request.Content + "modified by the lambda handler"
   return Response{
       ReviewResult: "ALLOW",
       Content: content,
   }, nil
}
```

## Verknüpfen und Trennen eines Handlers mit/von einem Raum
<a name="associate-disassociate-room"></a>

Sobald Sie den Lambda-Handler eingerichtet und implementiert haben, verwenden Sie die [Amazon-IVS-Chat-API](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/Welcome.html):
+ Um den Handler einem Raum zuzuordnen, rufen Sie CreateRoom oder UpdateRoom auf und geben Sie den Handler an.
+ Um den Handler von einem Raum zu trennen, rufen Sie UpdateRoom mit einem leeren Wert für `MessageReviewHandler.Uri` auf.

## Überwachung von Fehlern mit Amazon CloudWatch
<a name="monitor-errors-with-cloudwatch"></a>

Sie können Fehler bei der Nachrichtenüberprüfung mit Amazon CloudWatch überwachen und Alarme oder Dashboards erstellen, um die Änderungen bestimmter Fehler anzuzeigen oder darauf zu reagieren. Wenn ein Fehler auftritt, wird die Nachricht je nach `FallbackResult`-Wert, den Sie angeben, wenn Sie den Handler einem Raum zuordnen, zugelassen oder verweigert; siehe [MessageReviewHandler](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/API_MessageReviewHandler.html) in der *Amazon-IVS-Chat-API-Referenz*.

Es gibt mehrere Arten von Fehlern:
+ `InvocationErrors` treten auf, wenn Amazon IVS Chat einen Handler nicht aufrufen kann.
+ `ResponseValidationErrors` treten auf, wenn ein Handler eine ungültige Antwort zurückgibt.
+ AWS-Lambda-`Errors` treten auf, wenn ein Lambda-Handler einen Funktionsfehler zurückgibt, wenn er aufgerufen wurde.

Weitere Informationen zu Aufruffehlern und Fehlern bei der Antwortvalidierung (ausgegeben von Amazon IVS Chat) finden Sie in den Amazon-IVS-Chat-Informationen unter [Überwachen von Amazon-IVS-Streaming mit niedriger Latenz](chat-health.md). Weitere Informationen zu AWS Lambda-Fehlern finden Sie unter [Arbeiten mit Lambda-Metriken](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics.html).