Manipulador de revisão de mensagem de chat - Amazon IVS

Manipulador de revisão de mensagem de chat

Um manipulador de revisão de mensagens permite revisar ou modificar mensagens antes que elas sejam entregues em uma sala. Quando um manipulador de revisão de mensagens é associado a uma sala, ele é chamado para cada solicitação SendMessage para a sala. O manipulador aplica a lógica de negócios da aplicação e determina se deseja permitir, negar ou modificar uma mensagem. O Amazon IVS Chat oferece suporte a funções do AWS Lambda, como manipuladores.

Criação de uma função do Lambda

Antes de configurar um manipulador de revisão de mensagens para uma sala, é necessário criar uma função Lambda com uma política do IAM baseada em recursos. A função Lambda deve estar na mesma conta da AWS e na mesma região da AWS que a sala com a qual você usará a função. A política baseada em recurso dá ao Amazon IVS Chat permissão para invocar sua função Lambda. Para obter instruções, consulte Política baseada em recurso para o Chat do Amazon IVS.

Fluxo de trabalho


                    Fluxo de trabalho para criar uma função Lambda com uma política do IAM baseada em recurso.

Sintaxe da Solicitação

Quando um cliente envia uma mensagem, o Amazon IVS Chat invoca a função Lambda com uma carga útil JSON:

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

Corpo da Solicitação

Campo Descrição

Attributes

Atributos associados à mensagem.

Content

Conteúdo original da mensagem.

MessageId

O ID da mensagem. Gerada pelo IVS Chat.

RoomArn

O ARN da sala onde as mensagens são enviadas.

Sender

Informações sobre o remetente. Esse objeto tem vários campos:

  • Attributes: metadados sobre o remetente estabelecido durante a autenticação. Pode ser usado para fornecer ao cliente mais informações sobre o remetente; por exemplo, URL do avatar, selos, fonte e cor.

  • UserId: um identificador especificado pela aplicação do visualizador (usuário final) que enviou a mensagem. Pode ser usado pela aplicação cliente para se referir ao usuário na API de mensagens ou nos domínios da aplicação.

  • Ip: o endereço IP do cliente que está enviando a mensagem.

Sintaxe da Resposta

O manipulador da função Lambda deve retornar uma resposta JSON com a sintaxe a seguir. As respostas que não correspondem à sintaxe abaixo ou não satisfazem as restrições de campo são inválidas. Nesse caso, a mensagem é permitida ou negada conforme o valor de FallbackResult especificado no manipulador de revisão de mensagens; consulte MessageReviewHandler na Referência da API do Amazon IVS Chat.

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

Campos de resposta

Campo Descrição

Attributes

Atributos associados à mensagem retornada da função Lambda.

Se ReviewResult for DENY, poderá ser fornecido um Reason em Attributes; por exemplo:

"Attributes": {"Reason": "denied for moderation

Nesse caso, o cliente remetente receberá um erro WebSocket 406 com o motivo na mensagem de erro. (Consulte Erros WebSocket na Referência da API de mensagens do Amazon IVS Chat.)

  • Restrições de tamanho: máximo de 1 KB

  • Obrigatório: Não

Content

O conteúdo da mensagem retornada da função Lambda. Pode ser editado ou original, conforme a lógica de negócios.

  • Restrições de tamanho: o tamanho mínimo é 1. Tamanho máximo do MaximumMessageLength que você definiu ao criar ou atualizar a sala. Consulte a Referência da API do Amazon IVS Chat para obter mais informações. Isso se aplica somente quando ReviewResult é ALLOW.

  • Obrigatório: Sim

ReviewResult

O resultado do processamento de revisão sobre como manipular a mensagem. Se permitido, a mensagem será entregue a todos os usuários conectados à sala. Se negado, a mensagem não será entregue a nenhum usuário.

  • Valores válidos: ALLOW | DENY

  • Obrigatório: Sim

Código de exemplo

Veja abaixo um exemplo de manipulador do Lambda em Go. Modifica o conteúdo da mensagem, mantém os atributos da mensagem inalterados e permite a mensagem.

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 }

Associar e desassociar um manipulador de uma sala

Depois de configurar e implementar o manipulador do Lambda, use a API do Amazon IVS Chat:

  • Para associar o manipulador a uma sala, chame CreateRoom ou UpdateRoom e especifique o manipulador.

  • Para desassociar o manipulador de uma sala, chame UpdateRoom com um valor vazio para MessageReviewHandler.Uri.

Monitoramento de erros com o Amazon CloudWatch

É possível monitorar erros que ocorrem na revisão de mensagens com o Amazon CloudWatch e criar alarmes ou painéis para indicar ou responder às alterações de erros específicos. Se ocorrer um erro, a mensagem será permitida ou negada conforme o valor de FallbackResult especificado quando você associa o manipulador a uma sala; consulte MessageReviewHandler na Referência da API do Amazon IVS Chat.

Há vários tipos de erros:

  • InvocationErrors ocorrem quando o Amazon IVS Chat não pode chamar um manipulador.

  • ResponseValidationErrors ocorrem quando um manipulador retorna uma resposta inválida.

  • Os Errors do AWS Lambda ocorrem quando um manipulador do Lambda retorna um erro de função quando foi invocado.

Para obter mais informações sobre erros de invocação e erros de validação de resposta (emitidos pelo Chat do Amazon IVS), Monitoramento do Chat do Amazon IVS. Para obter mais informações sobre erros do AWS Lambda, consulte Trabalhar com métricas de funções do Lambda.