

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de los flujos de canales para procesar los mensajes de la mensajería de Amazon Chime SDK
<a name="using-channel-flows"></a>

Los flujos de canales se utilizan para aplicar la lógica empresarial a los mensajes en movimiento antes de que se entreguen a los destinatarios de un canal de mensajería. Los flujos de canales pueden llevar a cabo acciones como eliminar números de identificación oficiales, números de teléfono o blasfemias de los mensajes. También puede usar los flujos de canales para realizar funciones como agregar las respuestas a una encuesta antes de enviar los resultados a los participantes.

**Requisitos previos**
+ Conocimiento de las funciones básicas de Amazon Chime SDK, como la administración de canales y el envío y la recepción de mensajes.
+ La capacidad de invocar los mensajes del SDK de Amazon Chime. APIs

**Conceptos de flujo de canales**

Para utilizar los flujos de canales de forma eficaz, debe comprender estos conceptos:

**Procesador de canal**  
 AWS Lambda Función que ejecuta la lógica de preprocesamiento en los mensajes del canal. Al asociar un canal a un flujo de canal, se invoca el procesador del flujo para cada mensaje del canal. Para reducir la latencia, un solo procesador funciona mejor en la mayoría de los casos de uso. Por último, cada procesador debe devolver la llamada al servicio Amazon Chime SDK una vez que se complete el procesamiento.   
Actualmente, solo admitimos un procesador por flujo de canal. Si necesita más de un procesador, envíe una solicitud de soporte para solicitar un aumento.

**Flujo de canales**  
Los flujos de canales son contenedores de hasta tres procesadores de canales, además de una secuencia de ejecución. Al asociar un flujo a un canal, el procesador toma medidas con respecto a todos los mensajes enviados a ese canal.

**Invocación de flujos de canal**  
Los siguientes elementos invocan los flujos de canales:
+ Nuevos mensajes estándar persistentes
+ Nuevos mensajes estándar no persistentes
+ Mensajes estándar persistentes actualizados

**nota**  
Los flujos de canales no procesan los mensajes de control o del sistema. Para obtener más información sobre los tipos de mensajes que proporciona la mensajería de Amazon Chime SDK, consulte [Descripción de los tipos de mensajes de Amazon Chime SDK](msg-types.md).

**Topics**
+ [Configuración de un procesador de canales para la mensajería de Amazon Chime SDK](processor-setup.md)
+ [Creación de un flujo de canal para la mensajería de Amazon Chime SDK](create-channel-flow.md)
+ [Asociación y desasociación de flujos de canal de mensajería de Amazon Chime SDK](associate-channel-flow.md)
+ [Envío de mensajes en la mensajería de Amazon Chime SDK](sending-msgs.md)
+ [Creación de alertas de errores mediante la automatización con la mensajería del EventBridge SDK de Amazon Chime](event-bridge-events.md)

# Configuración de un procesador de canales para la mensajería de Amazon Chime SDK
<a name="processor-setup"></a>

Para empezar a utilizar los flujos de canal, primero debe crear una función de Lambda de procesador para gestionar el preprocesamiento de su caso de uso. Por ejemplo, puede actualizar el contenido de los mensajes o los metadatos, denegar mensajes y evitar que se envíen o dejar pasar el mensaje original.

**Requisitos previos**
+ La función Lambda debe estar en la misma AWS cuenta y en las mismas AWS regiones que la. AppInstance

**Concesión de permisos de invocación**  
Debe dar permiso al servicio de mensajería de Amazon Chime SDK para invocar su recurso Lambda. Para obtener más información sobre los permisos, consulte [Uso de políticas basadas en recursos para AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html). Por ejemplo:

  
**Entidad principal**: "messaging.chime.amazonaws.com"  
**Acción**: lambda: InvokeFunction  
**Efecto**: Permitir  
**AWSSourceAccount:***Your AWS AccountId*.  
**AWSSourceArn:** `"arn:aws:chime:region:AWS AccountId: appInstance/"`

**nota**  
Puede proporcionar un ID de instancia de aplicación específico para invocar su procesador o usar un comodín para permitir que todas las instancias de aplicaciones de Amazon Chime SDK de una cuenta invoquen su procesador.

**Otorgar permisos de devolución de llamadas**  
También debe permitir que las funciones de Lambda de su procesador llamen a la API `ChannelFlowCallback`. Para obtener información sobre cómo hacerlo, consulte el [rol de ejecución de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) en la *guía para desarrolladores de AWS Lambda *. 

Puede añadir una política en línea al rol de ejecución de la función de Lambda. Este ejemplo permite al procesador invocar el `ChannelFlowCallback API`.

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

****  

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

------

**nota**  
Siga las prácticas recomendadas para las funciones de Lambda. Para obtener más información, consulte los siguientes temas:   
[Prácticas recomendadas de eficiencia en el rendimiento](https://docs.aws.amazon.com/whitepapers/latest/serverless-architectures-lambda/performance-efficiency-best-practices.html) 
[Prácticas recomendadas para trabajar con AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html)
[Configuración de la simultaneidad reservada](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html#configuration-concurrency-reserved)
[Invocación asincrónica](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html)

**Invocación de funciones de Lambda de procesador**  
Cuando un usuario envía un mensaje, la siguiente solicitud de entrada invoca la función de Lambda del procesador.

```
{
    "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  
El evento se envía al procesador. El valor es una constante `CHANNEL_MESSAGE_EVENT`.

CallbackId  
El token utilizado al llamar a la API `ChannelFlowCallback` desde el procesador.

ChannelMessage  
*ChannelArn*El ARN del canal  
*Content*: contenido del mensaje que se va a procesar  
*CreatedTimestamp*El momento en el que se creó el mensaje  
*LastEditedTimestamp*Hora a la que se editó un mensaje  
*MessageId*El identificador del mensaje  
*Metadata*: los metadatos del mensaje que se van a procesar  
*Persistence*: El Booleano que controla si el mensaje se conserva en el back-end. Valores válidos: `PERSISTENT | NON_PERSISTENT`  
*Sender*: El remitente del mensaje. Tipo: un [objeto de identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Identity.html).  
*Tipo*   El tipo de mensaje. ChannelFlow solo admite los tipos de mensajes `STANDARD`. Valor válido: `STANDARD`

La función del procesador determina lo siguiente acerca de cada mensaje.
+ Si se debe actualizar el contenido del mensaje, los metadatos o ambos
+ Si se debe denegar un mensaje 
+ Si se debe dejar un mensaje sin cambios

Cuando finaliza el procesamiento, la función de Lambda del procesador devuelve el resultado al servicio de mensajería de Amazon Chime SDK para que el mensaje se pueda enviar a todos los destinatarios. El estado del mensaje se marca como `PENDING` hasta que la función de Lambda del procesador devuelva los resultados. La función de Lambda del procesador dispone de 48 horas para enviar los resultados. No garantizamos la entrega de los mensajes después de esa fecha y la 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) muestra un mensaje de error de excepción prohibida. Para devolver los resultados, invoque la API `ChannelFlowCallback`.

# Creación de un flujo de canal para la mensajería de Amazon Chime SDK
<a name="create-channel-flow"></a>

Una vez que haya configurado los procesadores, utilizará la mensajería del SDK de Amazon Chime APIs para crear un flujo de canales. Puede usar una acción de `Fallback` para definir si se debe detener o continuar el procesamiento si el flujo del canal no se puede conectar a la función de Lambda del procesador. Si un procesador tiene una acción alternativa de `ABORT`, el procesador establece el estado del mensaje en `FAILED` y no lo envía. Tenga en cuenta que si el último procesador de la secuencia de flujo del canal tiene una acción alternativa de `CONTINUE`, el mensaje se considera procesado y enviado a los destinatarios del canal. Una vez que haya creado un flujo de canales, podrá asociarlo a canales individuales. Para obtener más información, consulte la documentación de la 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). 

# Asociación y desasociación de flujos de canal de mensajería de Amazon Chime SDK
<a name="associate-channel-flow"></a>

Cuando se asocia un canal a un flujo de canal, los procesadores del flujo de canal preprocesan todos los mensajes enviados al canal. Debe ser moderador o administrador del canal para invocar la asociación y disociación del flujo del canal. APIs Recuerde estos hechos sobre la marcha.
+ Puede asociar un máximo de 1 flujo de canal a un canal en un momento dado. Para asociar un flujo de canal, llame a la 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 desasociar un flujo de canal y detener el preprocesamiento de los mensajes del canal, llame a la 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). 

# Envío de mensajes en la mensajería de Amazon Chime SDK
<a name="sending-msgs"></a>

Utilizará la API `SendChannelMessage` para enviar mensajes a un canal. Para un canal asociado a un flujo de canales, el procesador asigna uno de los siguientes valores de estado.




| Mensaje de estado | Description (Descripción) | 
| --- | --- | 
| `SENT` | El mensaje se ha procesado correctamente. | 
| `PENDING` | Procesamiento continuo. | 
| `FAILED` | El procesamiento ha fallado porque no se puede acceder a la función de Lambda del procesador. | 
| `DENIED` | El mensaje no se enviará. | 

**Recibir eventos de estado intermedio**  
**Eventos de Websocket**

Los eventos de Websocket se envían a un canal después de establecer correctamente una conexión. Para obtener más información, consulta [Uso WebSockets para recibir mensajes en la mensajería del SDK de Amazon Chime](websockets.md). 


| Tipo de evento | Status | Destinatarios | Notas | 
| --- | --- | --- | --- | 
| `CREATE_CHANNEL_MESSAGE` | `SENT` | Todos los miembros del canal | API `SendChannelMessage` con preprocesamiento correcto | 
| `UPDATE_CHANNEL_MESSAGE` | `SENT` | Todos los miembros del canal | API `UpdateChannelMessage` con preprocesamiento correcto | 
| `PENDING_CREATE_CHANNEL_MESSAGE` | `PENDING` | Únicamente el remitente del mensaje | API `SendChannelMessage` con preprocesamiento saliente | 
| `PENDING_UPDATE_CHANNEL_MESSAGE` | `PENDING` | Únicamente el remitente del mensaje | API `UpdateChannelMessage` con preprocesamiento saliente | 
| `FAILED_CREATE_CHANNEL_MESSAGE` | `FAILED` | Únicamente el remitente del mensaje | API `SendChannelMessage` con preprocesamiento incorrecto | 
| `FAILED_UPDATE_CHANNEL_MESSAGE` | `FAILED` | Únicamente el remitente del mensaje | API `UpdateChannelMessage` con preprocesamiento incorrecto | 
| `DENIED_CREATE_CHANNEL_MESSAGE` | `DENIED` | Únicamente el remitente del mensaje | API `SendChannelMessage` con un procesador que deniega el mensaje | 
| `DENIED_UPDATE_CHANNEL_MESSAGE` | `DENIED` | Únicamente el remitente del mensaje | API `UpdateChannelMessage` con un procesador que deniega el mensaje | 

**API GetChannelMessageStatus**  
Esta API proporciona una forma alternativa de recuperar el estado del mensaje si el evento no se ha recibido debido a una conexión websocket defectuosa. Para obtener más información, consulte la documentación de la 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**  
Esta API no devuelve los estados de los mensajes denegados porque no los almacenamos.

# Creación de alertas de errores mediante la automatización con la mensajería del EventBridge SDK de Amazon Chime
<a name="event-bridge-events"></a>

Amazon Chime SDK entrega eventos cuando se produce un error al invocar la función de Lambda del procesador. Los eventos se envían independientemente de la acción de `Fallback` especificada para el procesador al crear un flujo de canal. Puede escribir reglas sencillas para especificar estos eventos, además de las acciones automatizadas a realizar cuando alguno de esos eventos coincida con una regla. Para obtener más información, consulta la [Guía del EventBridge usuario de Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/). Cuando se producen errores como estos, según la acción de `Fallback` que configure, los miembros del canal no pueden enviar mensajes o los mensajes fluirán por el canal sin procesarse. Para obtener más información sobre la acción de `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) en la referencia de la API de Amazon Chime SDK. 

En este ejemplo, se muestra un evento de error 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"
      }
}
```