

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Flux d’événements de cas Amazon Connect
<a name="case-event-streams"></a>

Les flux d’événements Cas Amazon Connect vous fournissent des mises à jour en temps quasi-réel lorsque des cas sont créés ou modifiés au sein de votre domaine Cas Amazon Connect. Les événements publiés vers le flux incluent les événements de ressources suivants :
+ Cas créé
+ Cas modifiés
+ Des éléments connexes (commentaires, appels, chats, tâches) sont ajoutés à un cas

Vous pouvez utiliser les flux d’événements de cas pour intégrer des flux dans vos solutions de lac de données, créer des tableaux de bord affichant les métriques de performance des cas, mettre en œuvre des règles commerciales ou des actions automatisées en fonction des événements de cas, et configurer des outils d’alerte pour déclencher des notifications personnalisées concernant l’activité d’un cas spécifique.

**Topics**
+ [Configuration de flux d’événements de cas](case-event-streams-enable.md)
+ [Autoriser les cas à envoyer des mises à jour aux règles Contact Lens](cases-rules-integration-onboarding.md)
+ [Données utiles et schéma des événements de cas](case-event-streams-sample.md)

# Configuration des flux d’événements des cas Amazon Connect Cas
<a name="case-event-streams-enable"></a>

Cette rubrique explique comment configurer et utiliser des flux d’événements de cas d’utilisation. Certaines étapes d'intégration nécessitent que vous appeliez [Amazon Connect APIs Cases](https://docs.aws.amazon.com/cases/latest/APIReference/Welcome.html).

## Étape 1 : créer une instance Amazon Connect et activer le service Profils des clients
<a name="step1-case-event-streams-enable"></a>

1. Assurez-vous de disposer d’une instance Amazon Connect fonctionnelle dans l’une des Régions AWS où le service Cas est disponible. Consultez [Disponibilité de Cas par région](regions.md#cases_region).

1. Activez le service Profils des clients Amazon Connect. Pour obtenir des instructions, veuillez consulter [Activez les profils clients pour votre instance Amazon Connect.](enable-customer-profiles.md).

   Le service Cas Amazon Connect nécessite des profils client, car chaque cas doit être associé à un profil client issu du service Profils des clients.

## Étape 2 : ajouter un domaine Cas à votre instance Amazon Connect
<a name="step2-case-event-streams-enable"></a>

Pour obtenir des instructions, veuillez consulter [Activation des cas à l’aide de la console Amazon Connect](enable-cases.md).

Si vous souhaitez ajouter un domaine de cas à l'aide de l'API, consultez l'[CreateDomain](https://docs.aws.amazon.com/cases/latest/APIReference/API_CreateDomain.html)API dans le manuel *Amazon Connect Cases API Reference*. 

## Étape 3 : créer un modèle de cas
<a name="step3-case-event-streams-enable"></a>

[Créez un modèle de cas](case-templates.md). Vous allez utiliser le modèle dans *Étape 6 : tester les flux d’événements de cas*. 

Si vous souhaitez créer un modèle de dossier à l'aide de l'API, consultez l'[CreateTemplate](https://docs.aws.amazon.com/cases/latest/APIReference/API_CreateTemplate.html)API dans le manuel *Amazon Connect Cases API Reference*. 

## Étape 4 : activer les flux d’événements de cas et les configurer pour recevoir des événements dans une file d’attente SQS
<a name="step4-case-event-streams-enable"></a>

Exécutez la commande suivante pour activer les flux d’événements de cas pour votre domaine Cas. Une fois cette commande exécutée, lorsque des dossiers sont créés ou mis à jour, un événement est publié sur le bus par défaut du EventBridge service de votre compte (il doit se trouver dans le même Région AWS que votre domaine Cases).

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

Par défaut, les événements publiés par le service Cas Amazon Connect contiennent uniquement des métadonnées relatives au cas, telles que `templateId`, `caseId`, `caseArn`, `approximateChangeTime`, etc. Vous pouvez exécuter la commande suivante pour obtenir plus d’informations sur le cas (au moment de la génération de l’événement) à inclure dans l’événement.

**Note**  
Si vous souhaitez inclure un champ personnalisé dans l’événement, utilisez l’ID de champ personnalisé. Pour obtenir des instructions sur la façon de localiser l’ID de champ personnalisé, consultez [Recherche de l'ID du champ personnalisé](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
      }
    }
  }"
```

Créez ensuite une file d'attente Amazon SQS et définissez-la comme cible pour les événements Amazon Connect Cases sur votre EventBridge bus afin que tous les événements de dossier soient transmis à la file d'attente SQS pour un traitement ultérieur.

```
# 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\"
}]"
```

## Étape 5 : tester les flux d’événements de cas
<a name="step5-case-event-streams-enable"></a>

Utilisez l’application d’agent Amazon Connect pour effectuer les opérations suivantes : 

1. Accepter un contact par chat.

1. Créer un profil client et l’associer au contact par chat.

1. Créer une demande. 
**Note**  
Le bouton **Créer un cas** dans l’onglet **Cas** est inactif tant que vous n’avez pas accepté un contact et que vous ne l’avez pas associé à un profil client.

Accédez à la console Amazon SQS et vérifiez qu’un événement de cas (type : `CASE.CREATED`) pour le cas nouvellement créé est disponible dans votre file d’attente SQS. De même, vous pouvez modifier le cas créé ci-dessus et obtenir un événement de cas correspondant (type : `CASE.UPDATED`) dans votre file d’attente SQS. Vous pouvez associer le contact au cas et laisser un commentaire sur le cas afin d’obtenir également les événements de cas pour ces actions.

## Étape 6 : cas d’utilisation pour les flux d’événements de cas
<a name="step6-case-event-streams-enable"></a>

Les flux d’événements de cas publient des événements chaque fois qu’un cas est créé, qu’un cas est mis à jour, qu’un contact est associé au cas et qu’un commentaire est ajouté à un cas. Vous pouvez utiliser ces événements pour :
+ Les métriques, analyses et tableaux de bord
+ La création d’applications qui informent les utilisateurs (par exemple : envoi d’e-mails)
+ Des actions automatisées qui sont déclenchées en fonction de certains types de mises à jour de cas

Par exemple, vous pouvez utiliser la cible SQS activée EventBridge (comme indiqué à l'étape 4) pour stocker temporairement les événements du dossier dans la file d'attente SQS, et utiliser les fonctions Lambda pour traiter les événements dans le SQS afin de créer des applications personnalisées, telles que l'envoi d'e-mails au client lorsque son dossier est mis à jour, la résolution automatique des tâches liées au dossier, etc. De même, vous pouvez utiliser la cible Firehose EventBridge pour stocker les événements du dossier dans un compartiment S3, puis utiliser la cible pour l'ETL, Athena AWS Glue pour les analyses ad hoc et Quick pour les tableaux de bord.

# Autoriser les cas Amazon Connect à envoyer des mises à jour aux règles Contact Lens
<a name="cases-rules-integration-onboarding"></a>

**Note**  
Pour exécuter les instructions de cette procédure, vous devez avoir des compétences de développeur ou avoir de l’expérience avec l’interface CLI Amazon Connect.

Effectuez cette procédure unique afin que vos utilisateurs puissent configurer des règles qui s’appliquent lorsqu’un cas est créé ou mis à jour. 

1. Vérifiez que les cas Amazon Connect sont [activés](enable-cases.md) pour votre instance Amazon Connect. 

1. Suivez les étapes pour activer les flux d’événements des cas Amazon Connect. Pour de plus amples informations, veuillez consulter [Configuration des flux d’événements des cas Amazon Connect Cas](case-event-streams-enable.md). Notez les modifications suivantes apportées à la procédure :

   1. Vous pouvez ignorer la partie qui vous demande de créer une file d’attente SQS, car elle n’est pas obligatoire.

   1. Exécutez la commande CLI `put-case-event-configuration` pour inclure toutes les informations des champs de cas dans l’événement. Assurez-vous d’inclure tous les champs dont vous avez besoin pour que le moteur de règles fonctionne.
**Note**  
Pour garantir le bon fonctionnement des règles relatives aux violations du SLA de cas, vous devez définir `relatedItemData.includeContent` sur `true`, comme indiqué dans l’exemple suivant.

      ```
      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. S’il existe des champs de cas personnalisés, assurez-vous d’inclure également un ID de champ personnalisé dans le tableau de champs dans les données utiles précédente. Vous pouvez trouver le champ IDs en exécutant la commande `list-fields` CLI suivante :

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

   1. Répétez l’étape 2 si vous devez ajouter de nouveaux champs personnalisés. 

1. Effectuez un appel d'[CreateEventIntegration](https://docs.aws.amazon.com/appintegrations/latest/APIReference/API_CreateEventIntegration.html)API ou exécutez la commande `create-event-integration` CLI, comme indiqué dans l'exemple de commande suivant.
   + Données utiles :

     ```
     aws appintegrations create-event-integration --name amazon-connect-cases --description amazon-connect-cases --event-filter '{"Source":"aws.cases"}' --event-bridge-bus default
     ```
   + La sortie sera similaire à l’exemple suivant :

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

1. Effectuez un appel d'[CreateIntegrationAssociation](https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateIntegrationAssociation.html)API ou exécutez la commande `create-integration-association` CLI, comme indiqué dans l'exemple de commande suivant.
   + Données utiles :

     `IntegrationArn` est la réponse que vous obtenez à partir de l’étape 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
     ```
   + La sortie est similaire à l’exemple suivant :

     ```
     {
         "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"
     }
     ```

Vos utilisateurs devraient désormais être en mesure de créer des règles qui s’exécutent lorsqu’un cas est créé ou mis à jour.

# Données utiles et schéma des événements de cas dans les cas Amazon Connect
<a name="case-event-streams-sample"></a>

Lorsque vous demandez l’inclusion des données de cas dans les données utiles de l’événement, les données reflètent la version du cas après cette modification. 

Les limites par défaut d'Amazon Connect Cases garantissent que la charge utile sera inférieure à 256 Ko (la taille maximale d'un EventBus événement). Comme vous pouvez personnaliser le modèle d'objet du dossier (par exemple, vous pouvez définir des champs personnalisés sur les objets du dossier pour capturer des informations spécifiques à l'entreprise), le schéma des événements du dossier reflète les personnalisations apportées à l'objet du dossier, comme indiqué dans les exemples suivants (par exemple, découvrez comment les propriétés JSON spécifiques au client UUIDs sont utilisées). 

## Exemple de données utiles d’un événement de cas pour la ressource de cas
<a name="example-case-event-payload"></a>

```
// 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"
                    }
                }
            }
        }
    }
}
```

## Exemple de données utiles d’un événement de cas pour la ressource associée à un élément
<a name="example-case-event-payload"></a>

```
// 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": ".......",
            // }
        }
    }
}
```

## Exemple de données utiles d’un événement de cas pour la ressource de cas exécutée par une entité personnalisée
<a name="example-case-event-payload-case-resource-custom-entity"></a>

```
// 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"
                    }
                }
            }
        }
    }
}
```