

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á.

# Usar fluxos de canal para processar mensagens do sistema de mensagens do SDK do Amazon Chime
<a name="using-channel-flows"></a>

Use fluxos de canal para executar a lógica de negócios em mensagens em andamento antes que elas sejam entregues aos destinatários em um canal de mensagens. Os fluxos de canais podem realizar ações como remover números de identificação do governo, números de telefone ou palavrões das mensagens. Você também pode usar fluxos de canais para realizar funções como agregar respostas a uma enquete antes de enviar os resultados de volta aos participantes.

**Pré-requisitos**
+ Conhecimento da funcionalidade básica do SDK do Amazon Chime, como gerenciamento de canais e envio e recebimento de mensagens.
+ A capacidade de invocar o sistema de mensagens do Amazon Chime SDK. APIs

**Conceitos de fluxo do canal**

Para usar os fluxos de canais de forma eficaz, você deve entender estes conceitos:

**Processador de canal**  
Uma AWS Lambda função que executa a lógica de pré-processamento nas mensagens do canal. Quando você associa um canal a um fluxo de canal, o processador no fluxo é chamado para cada mensagem no canal. Para reduzir a latência, um único processador funciona melhor para a maioria dos casos de uso. Finalmente, cada processador deve fazer um retorno de chamada para o serviço SDK do Amazon Chime após a conclusão do processamento.   
Atualmente, oferecemos suporte apenas a um processador por fluxo de canal. Se você precisar de mais de um processador, envie um ticket de suporte para obter um aumento.

**Fluxo do canal**  
Os fluxos de canais são contêineres para processadores de até três canais, além de uma sequência de execução. Você associa um fluxo a um canal e o processador age em todas as mensagens enviadas para esse canal.

**Chamada de fluxos de canal**  
Os itens a seguir invocam fluxos de canais:
+ Novas mensagens-padrão persistentes
+ Novas mensagens-padrão não persistentes
+ Mensagens-padrão persistentes atualizadas

**nota**  
Os fluxos do canal não processam mensagens de controle ou do sistema. Para obter mais informações sobre os tipos de mensagem fornecidos pelo Mensagens do SDK do Amazon Chime, consulte [Noções básicas sobre os tipos de mensagem do SDK do Amazon Chime](msg-types.md).

**Topics**
+ [Configurar um processador de canais para o sistema de mensagens do SDK do Amazon Chime](processor-setup.md)
+ [Criar um fluxo de canal para o sistema de mensagens do SDK do Amazon Chime](create-channel-flow.md)
+ [Associar e desassociar fluxos de canal para o sistema de mensagens do SDK do Amazon Chime](associate-channel-flow.md)
+ [Enviar mensagens no sistema de mensagens do SDK do Amazon Chime](sending-msgs.md)
+ [Criação de alertas de falha por meio da automação com o sistema de mensagens do Amazon EventBridge Chime SDK](event-bridge-events.md)

# 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`.

# Criar um fluxo de canal para o sistema de mensagens do SDK do Amazon Chime
<a name="create-channel-flow"></a>

Depois de configurar o (s) processador (es), você usa o Amazon Chime SDK Messaging APIs para criar um fluxo de canal. Pode-se usar uma ação `Fallback` para definir se o processamento deve ser interrompido ou continuado se o fluxo do canal não conseguir se conectar à função do Lambda do processador. Se um processador tiver uma ação alternativa de `ABORT`, ele definirá o status da mensagem como `FAILED` e não enviará a mensagem. Observe que, se o último processador na sequência de fluxo do canal tiver uma ação de fallback de `CONTINUE`, a mensagem será considerada processada e enviada aos destinatários no canal. Depois de criar um fluxo de canal, você pode associá-lo a canais individuais. Para ter mais informações, consulte a documentação da API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelFlow.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelFlow.html). 

# Associar e desassociar fluxos de canal para o sistema de mensagens do SDK do Amazon Chime
<a name="associate-channel-flow"></a>

Quando você associa um canal a um fluxo de canal, os processadores no fluxo do canal pré-processam todas as mensagens enviadas para o canal. Você deve ser moderador ou administrador do canal para invocar a associação e a dissociação do fluxo do canal. APIs Lembre-se desses fatos à medida que avança.
+ Você pode associar no máximo 1 fluxo de canal a um canal a qualquer momento. Para associar um fluxo de canal, chame a API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_AssociateChannelFlow.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_AssociateChannelFlow.html). 
+ Para desassociar um fluxo de canal e interromper o pré-processamento das mensagens de canal, chame a API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_DisassociateChannelFlow.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_DisassociateChannelFlow.html). 

# Enviar mensagens no sistema de mensagens do SDK do Amazon Chime
<a name="sending-msgs"></a>

Use a API `SendChannelMessage` para enviar mensagens a um canal. Para um canal associado a um fluxo de canal, o processador atribui um dos seguintes valores de status.




| Mensagem de status | Description | 
| --- | --- | 
| `SENT` | Mensagem processada com êxito. | 
| `PENDING` | Processamento em andamento. | 
| `FAILED` | O processamento falhou porque a função do Lambda do processador está inacessível. | 
| `DENIED` | A mensagem não será enviada. | 

**Recepção de eventos de status intermediários**  
**Eventos do Websocket**

Os eventos do Websocket são enviados para um canal depois de estabelecerem uma conexão com êxito. Para obter mais informações, consulte [Usando WebSockets para receber mensagens no Amazon Chime SDK](websockets.md). 


| Tipo de evento | Status | Destinatários | Observações | 
| --- | --- | --- | --- | 
| `CREATE_CHANNEL_MESSAGE` | `SENT` | Todos os membros do canal | API `SendChannelMessage` com pré-processamento bem-sucedido | 
| `UPDATE_CHANNEL_MESSAGE` | `SENT` | Todos os membros do canal | API `UpdateChannelMessage` com pré-processamento bem-sucedido | 
| `PENDING_CREATE_CHANNEL_MESSAGE` | `PENDING` | Remetente de mensagem somente | API `SendChannelMessage` com pré-processamento contínuo | 
| `PENDING_UPDATE_CHANNEL_MESSAGE` | `PENDING` | Remetente de mensagem somente | API `UpdateChannelMessage` com pré-processamento contínuo | 
| `FAILED_CREATE_CHANNEL_MESSAGE` | `FAILED` | Remetente de mensagem somente | API `SendChannelMessage` com pré-processamento com falha | 
| `FAILED_UPDATE_CHANNEL_MESSAGE` | `FAILED` | Remetente de mensagem somente | API `UpdateChannelMessage` com pré-processamento com falha | 
| `DENIED_CREATE_CHANNEL_MESSAGE` | `DENIED` | Remetente de mensagem somente | API `SendChannelMessage` com o processador negando a mensagem | 
| `DENIED_UPDATE_CHANNEL_MESSAGE` | `DENIED` | Remetente de mensagem somente | API `UpdateChannelMessage` com o processador negando a mensagem | 

**GetChannelMessageStatusAPI**  
Essa API fornece uma maneira alternativa de recuperar o status da mensagem se o evento não tiver sido recebido devido a uma conexão WebSocket ruim. Para ter mais informações, consulte a documentação da API [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetChannelMessageStatus.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetChannelMessageStatus.html).

**nota**  
Essa API não retorna status para mensagens negadas, porque não as armazenamos.

# Criação de alertas de falha por meio da automação com o sistema de mensagens do Amazon EventBridge Chime SDK
<a name="event-bridge-events"></a>

O SDK do Amazon Chime entrega eventos quando há um erro ao invocar a função do Lambda do seu processador. Os eventos são enviados independentemente da ação `Fallback` especificada para o processador ao criar um fluxo de canal. Você pode escrever regras simples para especificar os eventos que são de seu interesse e as ações automatizadas a serem executadas quando qualquer um desses eventos corresponder a uma regra. Para obter mais informações, consulte o [Guia EventBridge do usuário da Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/). Quando erros como esses ocorrem, dependendo da ação `Fallback` que você configura, os membros do canal não podem enviar mensagens ou as mensagens fluirão pelo canal sem processamento. Para ter mais informações sobre a ação `Fallback`, consulte [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Processor.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Processor.html) na referência da API do SDK do Amazon Chime. 

Este exemplo mostra um evento de falha típico.

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-111122223333",
    "detail-type": "Chime ChannelFlow Processing Status",
    "source": "aws.chime",
    "account": "111122223333",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "region",
    "resources": [],
    "detail": {
        "eventType": "ProcessorInvocationFailure",
        "appInstanceArn": "arn:aws:chime:region:AWSAccountId:app-instance/AppInstanceId",
        "channelArn": "arn:aws:chime:region:AWSAccountId:app-instance/AppInstanceId/channel/ChannelId",
        "messageId": "298efac7298efac7298efac7298efac7298efac7298efac7298efac7298efac7",
        "processorResourceArn": "arn:aws:lambda:region:AWSAccountId:function:ChannelFlowLambda",
        "failureReason": "User is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:region:AppInstanceId:function:ChannelFlowLambda because no resource-based policy allows the lambda:InvokeFunction action"
      }
}
```