

# Gestore di revisione dei messaggi di Chat IVS
<a name="chat-message-review-handler"></a>

Un gestore di revisione dei messaggi consente di revisionare e/o modificare i messaggi prima che vengano consegnati in una stanza. Quando un gestore di revisione dei messaggi è associato a una stanza, viene richiamato per ogni richiesta SendMessage in quella stanza. Il gestore applica la logica aziendale dell'applicazione e stabilisce se consentire, negare o modificare un messaggio. Amazon IVS Chat supporta le funzioni di AWS Lambda come gestori.

## Creazione di una funzione Lambda
<a name="create-lambda-function"></a>

Prima di configurare un gestore di revisione dei messaggi per una stanza, è necessario creare una funzione lambda con una policy IAM basata sulle risorse. La funzione lambda deve trovarsi nello stesso account e regione AWS della stanza con cui verrà utilizzata la funzione. La policy basata sulle risorse consente ad Amazon IVS Chat di richiamare la funzione lambda. Per le istruzioni, consulta la pagina [Policy basata sulle risorse per Chat Amazon IVS](security-iam.md#security-chat-policy-examples).

### Flusso di lavoro
<a name="create-lambda-function-workflow"></a>

![\[Flusso di lavoro per creare una funzione lambda con una policy IAM basata sulle risorse.\]](http://docs.aws.amazon.com/it_it/ivs/latest/ChatUserGuide/images/Chat_Message_Review_Handler_Workflow.png)


### Sintassi della richiesta
<a name="create-lambda-function-request-syntax"></a>

Quando un client invia un messaggio, Amazon IVS Chat richiama la funzione lambda con un payload JSON:

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

### Corpo della richiesta
<a name="create-lambda-function-request-body"></a>


| Campo | Descrizione | 
| --- | --- | 
| `Attributes` | Gli attributi associati al messaggio. | 
| `Content` |  Il contenuto originale del messaggio. | 
| `MessageId` | L'ID del messaggio. Generato da IVS Chat. | 
| `RoomArn` | L'ARN della stanza in cui vengono inviati i messaggi. | 
| `Sender` | Informazioni sul mittente. Questo oggetto ha diversi campi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 

### Sintassi della risposta
<a name="create-lambda-function-response-syntax"></a>

La funzione lambda del gestore deve restituire una risposta JSON con la seguente sintassi. Le risposte che non corrispondono alla sintassi sottostante o soddisfano i vincoli di campo non sono valide. In questo caso, il messaggio è consentito o negato a seconda del valore `FallbackResult` specificato nel gestore di revisione dei messaggi; consulta [MessageReviewHandler](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/API_MessageReviewHandler.html) in *Amazon IVS Chat API Reference* (Documentazione di riferimento dell'API Amazon IVS Chat).

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

### Campi di risposta
<a name="create-lambda-function-response-fields"></a>


| Campo | Descrizione | 
| --- | --- | 
| `Attributes` |  Attributi associati al messaggio restituito dalla funzione lambda. Se `ReviewResult` è `DENY`, una `Reason` può essere fornita in `Attributes`; ad esempio: `"Attributes": {"Reason": "denied for moderation` In questo caso, il client mittente riceve un errore WebSocket 406 con il motivo nel messaggio di errore. Consulta [Errori WebSocket](https://docs.aws.amazon.com/ivs/latest/chatmsgapireference/error-messages.html#websocket-errors) nella *Documentazione di riferimento sull'API Amazon IVS Chat Messaging*. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 
| `Content` |  Contenuto del messaggio restituito dalla funzione Lambda. Potrebbe essere modificato o originale a seconda della logica aziendale. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 
| `ReviewResult` | Il risultato dell'elaborazione delle revisioni su come gestire il messaggio. Se consentito, il messaggio viene consegnato a tutti gli utenti connessi alla stanza. Se negato, il messaggio non viene consegnato a nessun utente.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/ChatUserGuide/chat-message-review-handler.html)  | 

### Codice di esempio
<a name="create-lambda-function-example"></a>

Di seguito è riportato un esempio di gestore lambda in Go. Modifica il contenuto del messaggio, mantiene invariati gli attributi del messaggio e consente il messaggio.

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

## Associazione e annullamento dell'associazione di un gestore con una stanza
<a name="associate-disassociate-room"></a>

Una volta configurato e implementato il gestore lambda, utilizza l'[API Amazon IVS Chat](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/Welcome.html):
+ Per associare il gestore a una stanza, chiama CreateRoom o UpdateRoom e specifica il gestore.
+ Per annullare l'associazione del gestore da una stanza, chiama UpdateRoom con un valore vuoto per `MessageReviewHandler.Uri`.

## Monitoraggio degli errori con Amazon CloudWatch
<a name="monitor-errors-with-cloudwatch"></a>

Puoi monitorare gli errori che si verificano nella revisione dei messaggi con Amazon CloudWatch e creare allarmi o dashboard per indicare o rispondere alle modifiche di errori specifici. Se si verifica un errore, il messaggio viene consentito o negato a seconda del valore di `FallbackResult` specificato quando associ il gestore a una stanza; consulta [MessageReviewHandler](https://docs.aws.amazon.com/ivs/latest/ChatAPIReference/API_MessageReviewHandler.html) in *Amazon IVS Chat API Reference* (Documentazione di riferimento dell'API Amazon IVS Chat).

Esistono diversi tipi di errori:
+ `InvocationErrors` si verificano quando Amazon IVS Chat non può richiamare un gestore.
+ `ResponseValidationErrors` si verificano quando un gestore restituisce una risposta non valida.
+ `Errors` di AWS Lambda si verificano quando un gestore lambda restituisce un errore di funzione quando è stato richiamato.

Per ulteriori informazioni sugli errori di invocazione e sugli errori di convalida delle risposte (emessi da Chat Amazon IVS), consulta la pagina [Monitoraggio di Chat Amazon IVS](chat-health.md). Per ulteriori informazioni sugli errori di AWS Lambda, consulta [Utilizzo dei parametri Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics.html).