

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.

# Flujos de eventos de Amazon Connect Cases
Flujos de eventos de caso

Los flujos de eventos de Amazon Connect Cases le proporcionan actualizaciones casi en tiempo real cuando se crean o modifican casos en su dominio de Amazon Connect Cases. Entre los eventos que se publican en el flujo, se incluyen estos eventos de recurso:
+ Caso creado
+ Modificación de Cases
+ Los elementos relacionados (Comentarios, Llamadas, Chats, Tareas) se agregan a un caso

Puede utilizar los flujos de evento de caso para integrar flujos en sus soluciones de lago de datos, crear paneles que muestren las métricas de rendimiento de los casos, implementar reglas de negocio o acciones automatizadas basadas en eventos de caso y configurar herramientas de alerta para desencadenar notificaciones personalizadas de la actividad de casos específicos.

**Topics**
+ [Configuración de los flujos de evento de caso](case-event-streams-enable.md)
+ [Permiso para que Cases envíe actualizaciones a las reglas de Contact Lens](cases-rules-integration-onboarding.md)
+ [Carga y esquema del evento de caso](case-event-streams-sample.md)

# Configuración de transmisiones de eventos de Amazon Connect Cases
Configuración de los flujos de evento de caso

En este tema se explica cómo configurar y utilizar los flujos de evento de caso. Algunos de los pasos de incorporación requieren que llames a [Amazon Connect Cases APIs](https://docs.aws.amazon.com/cases/latest/APIReference/Welcome.html).

## Paso 1: crear una instancia de Amazon Connect y habilitar Perfiles de clientes
Paso 1: crear una instancia de Amazon Connect y habilitar Perfiles de clientes

1. Asegúrese de que dispone de una instancia de Amazon Connect en funcionamiento en una de las Regiones de AWS donde Cases esté disponible. Consulte [Disponibilidad de Cases por región](regions.md#cases_region).

1. Habilite los Perfiles de clientes de Amazon Connect. Para obtener instrucciones, consulte [Habilitación de perfiles de clientes para su instancia de Amazon Connect](enable-customer-profiles.md).

   Amazon Connect Cases requiere Perfiles de clientes porque cada caso debe asociarse a un perfil de cliente del servicio Perfiles de clientes.

## Paso 2: agregar un dominio de Cases a la instancia de Amazon Connect
Paso 2: agregar un dominio de Cases

Para obtener instrucciones, consulte [Habilitación de Cases con la consola de Amazon Connect](enable-cases.md).

Si desea añadir un dominio de casos mediante la API, consulte la [CreateDomain](https://docs.aws.amazon.com/cases/latest/APIReference/API_CreateDomain.html)API en la *referencia de la API de casos de Amazon Connect*. 

## Paso 3: crear una plantilla de caso
Paso 3: crear una plantilla de caso

[Cree una plantilla de caso](case-templates.md). En *Paso 6: probar los flujos de evento de caso*, utilizará la plantilla. 

Si desea crear una plantilla de caso mediante la API, consulte la [CreateTemplate](https://docs.aws.amazon.com/cases/latest/APIReference/API_CreateTemplate.html)API en la *referencia de la API de casos de Amazon Connect*. 

## Paso 4: habilitar los flujos de evento de caso y configurar la recepción de eventos en una cola SQS
Paso 4: habilitar los flujos de evento de caso y configurar la recepción de eventos en una cola SQS

Ejecute el siguiente comando para habilitar los flujos de eventos de casos para su dominio de Cases. Una vez ejecutado este comando, cuando se crean o actualizan los casos, se publica un evento en el bus predeterminado del EventBridge servicio de su cuenta (debe estar en el Región de AWS mismo dominio de Cases).

```
aws connectcases put-case-event-configuration --domain-id dad5efb6-8485-4a55-8241-98a88EXAMPLE --event-bridge enabled=true
```

De forma predeterminada, los eventos publicados por Amazon Connect Cases solo contienen metadatos sobre el caso, como `templateId`, `caseId`, `caseArn`, `approximateChangeTime` y mucho más. Puede ejecutar el siguiente comando para obtener más información sobre el caso (en el momento en que se generó el suceso) que se incluirá en el evento.

**nota**  
Si desea incluir un campo personalizado en el evento, utilice el ID del campo personalizado. Para obtener instrucciones sobre cómo localizar el ID del campo personalizado, consulte [Búsqueda del ID de campo personalizado](cases-block.md#get-case-properties-find-uuid). 

```
# You can include any other field defined in your cases domain in the fields section.
# To list the fields that are defined in your cases domain, call the Cases ListFields API.
# To include case fields that you create (custom fields) in the event, enter the custom field ID.
aws connectcases put-case-event-configuration --domain-id YOUR_CASES_DOMAIN_ID --event-bridge "{
    \"enabled\": true, 
    \"includedData\": {
       \"caseData\": {
          \"fields\": [
          {
          \"id\": \"status\"
          },
          {
          \"id\": \"title\"
          },
          {
          \"id\": \"customer_id\"
          },
         {
          \"id\": \"your custom field ID\"
          }
        ]
      },
      \"relatedItemData\": {
      \"includeContent\": true
      }
    }
  }"
```

A continuación, cree una cola de Amazon SQS y configúrela como destino para los eventos de Amazon Connect Cases en su EventBridge autobús, de modo que todos los eventos de casos se envíen a la cola de SQS para su posterior procesamiento.

```
# Create an SQS queue
aws sqs create-queue --queue-name case-events-queue --attributes "{\"Policy\": \"{ \\\"Version\\\": \\\"2012-10-17\\\", \\\"Statement\\\": [{ \\\"Sid\\\": \\\"case-event-subscription\\\", \\\"Effect\\\": \\\"Allow\\\", \\\"Principal\\\": { \\\"Service\\\": \\\"events.amazonaws.com\\\"}, \\\"Action\\\": \\\"SQS:SendMessage\\\", \\\"Resource\\\": \\\"*\\\"}]}\"}"

# Create an rule on the EventBridge default bus that represents the case events
aws events put-rule --name case-events-to-sqs-queue --event-pattern "{\"source\": [\"aws.cases\"]}" --state ENABLED

# Ask event bridge to publish case events to the SQS queue.
aws events put-targets --rule case-events-to-sqs-queue --target "[{
\"Id\": \"target-1\",
\"Arn\": \"arn:aws:sqs:The AWS Region of your Amazon Connect instance:your AWS account ID:case-events-queue\"
}]"
```

## Paso 5: probar flujos de evento de caso
Paso 5: probar flujos de evento de caso

Utilice la aplicación de agente de Amazon Connect para: 

1. Aceptar un contacto de chat.

1. Crear un perfil de cliente y asociarlo al contacto de chat.

1. Cree un caso. 
**nota**  
El botón **Crear caso** de la pestaña **Casos** estará inactivo hasta que acepte un contacto y lo asocie a un perfil de cliente.

Navegue hasta la consola de Amazon SQS y compruebe que en su cola de SQS existe un evento de caso (tipo: `CASE.CREATED`) para el caso recién creado. Del mismo modo, puede modificar el caso creado anteriormente y obtener un evento de caso correspondiente (tipo: `CASE.UPDATED`) en su cola de SQS. Puede asociar el contacto al caso y dejar un comentario sobre él, a fin de obtener también eventos de caso para esas acciones.

## Paso 6: casos de uso para los flujos de evento de caso
Paso 6: casos de uso para los flujos de evento de caso

Los flujos de evento de caso publican eventos cada vez que se crea un caso, se actualiza un caso, se asocia un contacto al caso y se agrega un comentario sobre un caso. Puede utilizar estos eventos para:
+ Métricas, análisis y paneles
+ Crear aplicaciones que notifiquen a los usuarios (por ejemplo, enviar correos electrónicos)
+ Acciones automatizadas que se desencadenan en función de cierto tipo de actualizaciones de casos

Por ejemplo, puede utilizar el objetivo de SQS activado EventBridge (como se muestra en el paso 4) para almacenar temporalmente los eventos del caso en la cola de SQS y utilizar las funciones de Lambda para procesar los eventos del SQS a fin de crear aplicaciones personalizadas, como enviar correos electrónicos al cliente cuando se actualice su caso, resolver automáticamente cualquier tarea relacionada con el caso, etc. Del mismo modo, puede utilizar el objetivo Firehose del EventBridge para almacenar los eventos del caso en un bucket de S3 y, a continuación, utilizar el objetivo AWS Glue para ETL, Athena para los análisis ad hoc y Quick para los paneles.

# Permiso para que Amazon Connect Cases envíe actualizaciones a las reglas de Contact Lens
Permiso para que Cases envíe actualizaciones a las reglas de Contact Lens

**nota**  
Para seguir las instrucciones de este procedimiento, debe tener conocimientos de desarrollador o tener experiencia con la CLI de Amazon Connect.

Complete este procedimiento único para que los usuarios puedan establecer reglas que se ejecuten cuando se cree o actualice un caso. 

1. Compruebe que Amazon Connect Cases esté [habilitado](enable-cases.md) para su instancia de Amazon Connect. 

1. Siga estos pasos para habilitar las transmisiones de eventos de Amazon Connect Cases. Para obtener más información, consulte [Configuración de transmisiones de eventos de Amazon Connect Cases](case-event-streams-enable.md). Tenga en cuenta los siguientes cambios en el procedimiento:

   1. Puede omitir la parte en la que se le pide que cree una cola de SQS, ya que no es obligatorio.

   1. Ejecute el comando de la CLI `put-case-event-configuration` para incluir toda la información de los campos del caso en el evento. Asegúrese de incluir todos los campos que necesita para que el motor de reglas funcione.
**nota**  
Para garantizar que las reglas de incumplimiento del SLA de Cases funcionen correctamente, debe establecer `relatedItemData.includeContent` en `true`, tal como se muestra en el siguiente ejemplo.

      ```
      aws connectcases put-case-event-configuration --domain-id 01310a0e-24ba-4a3c-89e9-9e1daeaxxxx --event-bridge "{
          \"enabled\": true, 
          \"includedData\": {
             \"caseData\": {
                 \"fields\": [
                   {
                     \"id\": \"status\"
                   },
                   {
                     \"id\": \"title\"
                   },
                   {
                     \"id\": \"assigned_queue\"
                   },
                   {
                     \"id\": \"assigned_user\"
                   },
                   {
                     \"id\": \"case_reason\"
                   },
                   {
                     \"id\": \"last_closed_datetime\"
                   },
                   {
                     \"id\": \"created_datetime\"
                   },
                   {
                     \"id\": \"last_updated_datetime\"
                   },
                   {
                     \"id\": \"reference_number\"
                   },
                   {
                     \"id\": \"summary\"
                   }
                 ]
            },
            \"relatedItemData\": {
            \"includeContent\": true
            }
          }
        }"
      ```

   1. Si hay campos de caso personalizados, asegúrese de incluir también un ID de campo personalizado en la matriz de campos de la carga útil anterior. Puede buscar el campo IDs ejecutando el siguiente comando `list-fields` CLI:

      ```
      aws connectcases list-fields --domain-id 01310a0e-24ba-4a3c-89e9-9e1daeaxxxx
      ```

   1. Repita el paso 2 si necesita añadir nuevos campos personalizados. 

1. Realice una llamada a la [CreateEventIntegration](https://docs.aws.amazon.com/appintegrations/latest/APIReference/API_CreateEventIntegration.html)API o ejecute el comando `create-event-integration` CLI, como se muestra en el siguiente comando de ejemplo.
   + Carga:

     ```
     aws appintegrations create-event-integration --name amazon-connect-cases --description amazon-connect-cases --event-filter '{"Source":"aws.cases"}' --event-bridge-bus default
     ```
   + El resultado tendrá un aspecto similar al del ejemplo siguiente:

     ```
     {
         "EventIntegrationArn": "arn:aws:app-integrations:us-west-2:111222333444:event-integration/amazon-connect-cases"
     }
     ```

1. Realice una llamada a la [CreateIntegrationAssociation](https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateIntegrationAssociation.html)API o ejecute el comando `create-integration-association` CLI, como se muestra en el siguiente comando de ejemplo.
   + Carga:

     El `IntegrationArn` es la respuesta que se obtiene en el paso 3.

     ```
     aws connect create-integration-association --instance-id bba5df5c-6a5f-421f-a81d-9c16402xxxx --integration-type EVENT --integration-arn arn:aws:app-integrations:us-west-2:111222333444:event-integration/amazon-connect-cases --source-type CASES
     ```
   + El resultado será algo similar al siguiente ejemplo:

     ```
     {
         "IntegrationAssociationId": "d49048cd-497d-4257-ab5c-8de797a123445",
         "IntegrationAssociationArn": "arn:aws:connect:us-west-2:111222333444:instance/bba5df5c-6a5f-421f-a81d-9c16402bxxxx/integration-association/d49048cd-497d-4257-ab5c-8de797a123445"
     }
     ```

Sus usuarios ahora deberían poder crear reglas que se ejecuten al crear o actualizar un caso.

# Carga útil y esquema de un evento de caso en Amazon Connect Cases
Carga y esquema del evento de caso

Cuando solicita incluir datos del caso en la carga de evento, los datos reflejan la versión del caso después de esa edición concreta. 

Los límites predeterminados de Amazon Connect Cases garantizan que la carga útil sea inferior a 256 KB (el tamaño máximo de un EventBus evento). Como puede personalizar el modelo de objetos del caso (por ejemplo, puede definir campos personalizados en los objetos del caso para capturar información específica de la empresa), el esquema de eventos del caso refleja las personalizaciones realizadas en el objeto del caso, como se muestra en los siguientes ejemplos (por ejemplo, vea cómo se utilizan las características específicas del cliente como propiedades de UUIDs JSON). 

## Ejemplo de carga de evento de caso para el recurso de caso
Ejemplo de carga de evento de caso para el recurso de caso

```
// Given the limits on the "includedData" configuration
// this payload is guaranteed to less than 256KB at launch.
{
    "version": "0",
    "id": "event ID",
    "detail-type": "Amazon Connect Cases Change",
    "source": "aws.cases",
    "account": "your AWS account ID",
    "time": "2022-03-16T23:43:26Z",
    "region": "The AWS Region of your Amazon Connect instance",
    "resources": [
        "arn:aws:cases:your Amazon Connect AWS Region:your AWS account ID:domain/case domain ID",
        "arn:aws:cases:your Amazon Connect AWS Region:your AWS account ID:domain/case domain ID/case/case ID"
    ],
    "detail": {
        "version": "0",
        "eventType": "CASE.UPDATED",
        "approximateChangeTime": "2022-03-16T23:16:57.893Z",  // Can be used for ordering
        "changedFieldIds": ["status", "last_updated_datetime"],
        "performedBy": {
            "user": {
                "userArn": "arn:aws:connect:your Amazon Connect AWS Region:your AWS account ID:instance/connect instance ID/user/connect user ID"        
            },
            "iamPrincipalArn": "arn:aws:iam::your Amazon Connect AWS Region:role/role name"
        },       
        "case": {
            "caseId": "case ID",
            "templateId": "template ID",
            "createdDateTime": "2022-03-16T23:16:57.893Z",
            
            // This section contains only non-null field values for the 
            // fields that customers have configured in the "includedData".
           
            // Field values included in this section reflects the case
            // after this particular change is applied.
            "fields": {
                "status": {
                    "value": {
                        "stringValue": "open"
                   }
                },
                "case_reason": {
                    "value": {
                        "stringValue": "Shipment lost"
                    }
                },
                "custom-field-uuid-1": {
                    "value": {
                        "stringValue": "Customer didn't receive the product"
                    }
                }
            }
        }
    }
}
```

## Ejemplo de carga de evento de caso para el recurso de elemento relacionado
Ejemplo de carga de evento de caso para el recurso de elemento relacionado

```
// Given the limits on the "includedData" configuration
// this payload is guaranteed to less than 256KB
{
    "version": "0",
    "id": "event ID",
    "detail-type": "Amazon Connect Cases Change",
    "source": "aws.cases",
    "account": "your AWS account ID",
    "time": "2022-03-16T23:43:26Z",
    "region": "The AWS Region of your Amazon Connect instance",
    "resources": [
        "arn:aws:cases:your Amazon Connect AWS Region:your AWS account ID:domain/case domain ID",
        "arn:aws:cases:your Amazon Connect AWS Region:your AWS account ID:domain/case domain ID/case/case ID/related-item/related-item ID"
    ],
    
    "detail": {   
        "version": "0",
        "eventType": "RELATED_ITEM.CREATED",
        "approximateChangeTime": "2022-03-16T23:16:57.893Z", // Can be used for ordering
        "changedAttributes": ["comment.commentText"],
        "performedBy": {
            "user": {
                "userArn": "arn:aws:connect:your Amazon Connect AWS Region:your AWS account ID:instance/connect instance ID/user/connect user ID"        
            },
            "iamPrincipalArn": "arn:aws:iam::your Amazon Connect AWS Region:role/role name"
        },        
        "relatedItem": {
            "relatedItemType": "Comment",
            "relatedItemId": "related-item ID",
            "caseId": "case id that this related item is a sub-resource of",
            "createdDateTime": "2022-03-16T23:16:57.893Z",
            
            // This section includes any attributes that customers have configured
            // in the "includedData" configuration.
            "comment": {               
                "body": "Gave a $5 refund to customer to make them happy",
            },
            
            // if the related item was of type contact.
            // "contact": {
            //      "contactArn": ".......",
            // }
        }
    }
}
```

## Ejemplo de carga útil de evento de caso para el recurso de caso ejecutado por una entidad personalizada
Ejemplo de carga útil de evento de caso para el recurso de caso ejecutado por una entidad personalizada

```
// Given the limits on the "includedData" configuration
// this payload is guaranteed to less than 256KB at launch.
{
    "version": "0",
    "id": "event ID",
    "detail-type": "Amazon Connect Cases Change",
    "source": "aws.cases",
    "account": "your AWS account ID",
    "time": "2022-03-16T23:43:26Z",
    "region": "The AWS Region of your Amazon Connect instance",
    "resources": [
        "arn:aws:cases:your Amazon Connect AWS Region:your AWS account ID:domain/case domain ID",
        "arn:aws:cases:your Amazon Connect AWS Region:your AWS account ID:domain/case domain ID/case/case ID"
    ],
    "detail": {
        "version": "0",
        "eventType": "CASE.UPDATED",
        "approximateChangeTime": "2022-03-16T23:16:57.893Z",  // Can be used for ordering
        "changedFieldIds": ["status", "last_updated_datetime"],
        "performedBy": {
            "user": {
                "customEntity": "your custom entity"        
            },
            "iamPrincipalArn": "arn:aws:iam::your Amazon Connect AWS Region:role/role name"
        },       
        "case": {
            "caseId": "case ID",
            "templateId": "template ID",
            "createdDateTime": "2022-03-16T23:16:57.893Z",
            
            // This section contains only non-null field values for the 
            // fields that customers have configured in the "includedData".
           
            // Field values included in this section reflects the case
            // after this particular change is applied.
            "fields": {
                "status": {
                    "value": {
                        "stringValue": "open"
                   }
                },
                "case_reason": {
                    "value": {
                        "stringValue": "Shipment lost"
                    }
                },
                "custom-field-uuid-1": {
                    "value": {
                        "stringValue": "Customer didn't receive the product"
                    }
                }
            }
        }
    }
}
```