

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurar um processador de canais para o sistema de mensagens do SDK do Amazon Chime
<a name="processor-setup"></a>

Para começar a usar fluxos de canais, primeiro crie uma função do Lambda do processador para lidar com o pré-processamento do seu caso de uso. Por exemplo, você pode atualizar o conteúdo da mensagem ou metadados, negar mensagens e evitar que sejam enviadas ou deixar a mensagem original passar.

**Pré-requisitos**
+ A função Lambda deve estar na mesma AWS conta e nas mesmas AWS regiões do. AppInstance

**Conceder permissões de invocação**  
É necessário dar ao serviço de mensagens do SDK do Amazon Chime a permissão para invocar seu recurso do Lambda. Para obter mais informações sobre permissões, consulte [Usar políticas baseadas em recursos para o AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html). Por exemplo:

  
**Entidade principal**: "messaging.chime.amazonaws.com"  
**Ação**: lambda: InvokeFunction  
**Effect (Efeito)**: permitir  
**AWS: SourceAccount**:*Your AWS AccountId*.  
**AWSSourceArn:** `"arn:aws:chime:region:AWS AccountId: appInstance/"`

**nota**  
Você pode fornecer um ID da instância de aplicativo específico para invocar seu processador ou usar um curinga para permitir que todas as instâncias do aplicativo SDK do Amazon Chime em uma conta invoquem seu processador.

**Como conceder permissões de retorno de chamada**  
Você também precisa permitir que as funções do Lambda do processador chamem a API `ChannelFlowCallback`. Para obter informações sobre como fazer isso, consulte [Executar função do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) no *Guia do desenvolvedor do AWS Lambda *. 

Você pode adicionar uma política em linha à função de execução da sua função do Lambda. Este exemplo permite que o processador invoque o `ChannelFlowCallback API`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "chime:ChannelFlowCallback"
            ],
            "Resource": [
            "arn:aws:chime:us-east-1:111122223333:appInstance/*"
            ]
        }
    ]
}
```

------

**nota**  
Siga as melhores práticas para funções do Lambda. Para obter mais informações, consulte esses tópicos:   
[Práticas recomendadas de eficiência de performance](https://docs.aws.amazon.com/whitepapers/latest/serverless-architectures-lambda/performance-efficiency-best-practices.html) 
[Práticas recomendadas para trabalhar com AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html)
[Configurar a simultaneidade reservada](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html#configuration-concurrency-reserved)
[Invocação assíncrona](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html)

**Como invocar funções do Lambda do processador**  
Quando um usuário envia uma mensagem, a solicitação de entrada a seguir invoca a função do Lambda do processador.

```
{
    "EventType": "string"
    "CallbackId": "string"
    "ChannelMessage": {
        "MessageId": "string",
        "ChannelArn": "string",
        "Content": "string",
        "Metadata": "string",
        "Sender":{
            "Arn": "string", 
            "Name": "string"
        },
        "Persistence": "string",
        "LastEditedTimestamp": "string", 
        "Type": "string",
        "CreatedTimestamp": "string", 
    }
}
```

EventType  
O evento que está sendo enviado ao processador. O valor é uma constante `CHANNEL_MESSAGE_EVENT`.

CallbackId  
O token usado ao chamar a API `ChannelFlowCallback` do processador.

ChannelMessage  
*ChannelArn*O ARN do canal  
*Conteúdo*   O conteúdo da mensagem a ser processada  
*CreatedTimestamp*A hora em que a mensagem foi criada  
*LastEditedTimestamp*A hora em que uma mensagem foi editada  
*MessageId*O identificador da mensagem  
*Metadata*   Metadados da mensagem a serem processados  
*Persistência*   Booliano que controla se a mensagem é persistida no back-end. Valores válidos: `PERSISTENT | NON_PERSISTENT`  
*Remetente*   O remetente da mensagem. Tipo: um [objeto identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Identity.html).  
*Tipo* O tipo de mensagem. O ChannelFlow aceita apenas os tipos de mensagem `STANDARD`. Valor válido: `STANDARD`

A função do processador determina o seguinte sobre cada mensagem.
+ Se deve atualizar o conteúdo da mensagem, os metadados ou ambos
+ Se deve negar uma mensagem 
+ Se uma mensagem deve ser deixada inalterada

Quando o processamento termina, a função do Lambda do processador envia o resultado de volta ao serviço de mensagens do SDK do Amazon Chime para que a mensagem possa ser enviada a todos os destinatários. O status da mensagem é marcado `PENDING` até que a função do Lambda do processador retorne os resultados. A função do Lambda do processador tem 48 horas para enviar os resultados de volta. Não garantimos a entrega de mensagens depois disso, e a API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelFlowCallback.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelFlowCallback.html) emite uma mensagem de erro de exceção proibida. Para devolver os resultados, invoque a API `ChannelFlowCallback`.