

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.

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