

# Gestionnaire de révision des messages de chat IVS
<a name="chat-message-review-handler"></a>

Un gestionnaire de révision des messages vous permet d'examiner et/ou de modifier les messages avant qu'ils ne soient livrés dans une salle. Lorsqu'un gestionnaire de révision des messages est associé à une salle, il est appelé pour chaque demande SendMessage envoyée à cette salle. Le gestionnaire applique la logique métier de votre application et détermine s'il convient d'autoriser, de refuser ou de modifier un message. Amazon IVS Chat prend en charge les fonctions AWS Lambda en tant que gestionnaires.

## Création d'une fonction lambda
<a name="create-lambda-function"></a>

Avant de configurer un gestionnaire de révision des messages pour une salle, vous devez créer une fonction lambda avec une politique IAM basée sur les ressources. La fonction lambda doit se trouver dans les mêmes compte AWS et Région AWS que la salle avec laquelle vous utiliserez la fonction. La politique basée sur les ressources donne à Amazon IVS Chat l'autorisation d'appeler votre fonction lambda. Pour obtenir des instructions, consultez la [Politique basée sur les ressources pour Chat Amazon IVS](security-iam.md#security-chat-policy-examples).

### Flux de travail
<a name="create-lambda-function-workflow"></a>

![\[Flux de travail permettant de créer une fonction lambda avec une politique IAM basée sur les ressources.\]](http://docs.aws.amazon.com/fr_fr/ivs/latest/ChatUserGuide/images/Chat_Message_Review_Handler_Workflow.png)


### Syntaxe de la requête
<a name="create-lambda-function-request-syntax"></a>

Lorsqu'un client envoie un message, Amazon IVS Chat appelle la fonction lambda avec une charge utile JSON :

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

### Corps de la requête
<a name="create-lambda-function-request-body"></a>


| Champ | Description | 
| --- | --- | 
| `Attributes` | Attributs associés au message. | 
| `Content` |  Contenu original du message. | 
| `MessageId` | L'ID du message. Généré par IVS Chat. | 
| `RoomArn` | L'ARN de la salle à laquelle les messages sont envoyés. | 
| `Sender` | Informations sur l'expéditeur. Cet objet comporte plusieurs champs : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 

### Syntaxe de la réponse
<a name="create-lambda-function-response-syntax"></a>

La fonction lambda du gestionnaire doit renvoyer une réponse JSON avec la syntaxe suivante. Les réponses qui ne correspondent pas à la syntaxe ci-dessous ou qui ne satisfont pas aux contraintes de champ ne sont pas valides. Dans ce cas, le message est autorisé ou refusé en fonction de la valeur `FallbackResult` que vous spécifiez dans votre gestionnaire de révision des messages ; consultez [MessageReviewHandler](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/API_MessageReviewHandler.html) dans la *Référence de l'API de chat Amazon IVS*.

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

### Champs de réponse
<a name="create-lambda-function-response-fields"></a>


| Champ | Description | 
| --- | --- | 
| `Attributes` |  Attributs associés au message renvoyé par la fonction lambda. Si `ReviewResult` est `DENY`, un `Reason` peut être fourni en `Attributes` ; par exemple : `"Attributes": {"Reason": "denied for moderation` Dans ce cas, le client expéditeur reçoit une erreur WebSocket 406 avec la raison indiquée dans le message d'erreur. (Consultez [Erreurs WebSocket](https://docs.aws.amazon.com/ivs/latest/chatmsgapireference/error-messages.html#websocket-errors) dans la *Référence de l'API de messagerie Amazon IVS Chat*.) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 
| `Content` |  Contenu du message renvoyé à partir de la fonction lambda. Il peut être édité ou original en fonction de la logique métier. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 
| `ReviewResult` | Le résultat du traitement de révision sur la façon de traiter le message. S'il est autorisé, le message est envoyé à tous les utilisateurs connectés à la salle. S'il est refusé, le message n'est envoyé à aucun utilisateur.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 

### Exemple de code
<a name="create-lambda-function-example"></a>

Vous trouverez ci-dessous un exemple de gestionnaire lambda dans Go. Il modifie le contenu du message, conserve les attributs du message inchangés et autorise le message.

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

## Associer et dissocier un gestionnaire à/d'une salle
<a name="associate-disassociate-room"></a>

Une fois que vous avez configuré et implémenté le gestionnaire lambda, utilisez l'[API de chat Amazon IVS](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/Welcome.html) :
+ Pour associer le gestionnaire à une salle, appelez CreateRoom ou UpdateRoom et spécifiez le gestionnaire.
+ Pour dissocier le gestionnaire d'une salle, appelez UpdateRoom avec une valeur vide pour `MessageReviewHandler.Uri`.

## Surveillance des erreurs avec Amazon CloudWatch
<a name="monitor-errors-with-cloudwatch"></a>

Vous pouvez surveiller les erreurs survenant lors de la révision des messages avec Amazon CloudWatch, et vous pouvez créer des alarmes ou des tableaux de bord pour indiquer ou répondre aux changements d'erreurs spécifiques. Si une erreur se produit, le message est autorisé ou refusé en fonction de la valeur `FallbackResult` que vous spécifiez lorsque vous associez le gestionnaire à une salle ; consultez [MessageReviewHandler](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/API_MessageReviewHandler.html) dans la *Référence de l'API de chat Amazon IVS*.

Il existe plusieurs types d'erreurs :
+ `InvocationErrors` se produit lorsque Amazon IVS Chat ne peut pas appeler un gestionnaire.
+ `ResponseValidationErrors` se produit lorsqu'un gestionnaire renvoie une réponse non valide.
+ Les `Errors` AWS Lambda se produisent lorsqu'un gestionnaire lambda renvoie une erreur de fonction lorsqu'il a été appelé.

Pour plus d'informations sur les erreurs d'invocation et les erreurs de validation de réponse (émises par Chat Amazon IVS), consultez [Surveillance de Chat Amazon IVS](chat-health.md). Pour plus d'informations sur les erreurs AWS Lambda, consultez [Utilisation des métriques Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics.html).