

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Flussi di eventi di Amazon Connect Cases
<a name="case-event-streams"></a>

I flussi di eventi di Casi Amazon Connect ti forniscono aggiornamenti quasi in tempo reale quando i casi vengono creati o modificati all'interno del tuo dominio di Casi Amazon Connect. Gli eventi pubblicati nel flusso includono i seguenti eventi relativi alle risorse:
+ Caso creato
+ Casi modificati
+ Gli elementi correlati (commenti, chiamate, chat, attività) vengono aggiunti a un caso

Puoi utilizzare i flussi di eventi dei casi per integrare i flussi nelle tue soluzioni data lake, creare dashboard che mostrino le metriche delle prestazioni dei casi, implementare regole aziendali o azioni automatizzate basate sugli eventi dei casi e configurare strumenti di avviso per attivare notifiche personalizzate relative ad attività dei casi specifiche.

**Topics**
+ [Configurazione di flussi di eventi dei casi](case-event-streams-enable.md)
+ [Consenti a Cases di inviare aggiornamenti alle regole di Contact Lens](cases-rules-integration-onboarding.md)
+ [Payload e schema degli eventi dei casi](case-event-streams-sample.md)

# Configurazione dei flussi di eventi di Amazon Connect Cases
<a name="case-event-streams-enable"></a>

In questo argomento viene descritto come configurare e utilizzare i flussi di eventi dei casi. Alcune delle fasi di onboarding richiedono di chiamare [Amazon Connect](https://docs.aws.amazon.com/cases/latest/APIReference/Welcome.html) Cases. APIs

## Passaggio 1: creazione di un'istanza Amazon Connect e abilitazione di Profili cliente
<a name="step1-case-event-streams-enable"></a>

1. Assicurati di avere un'istanza Amazon Connect funzionante in una delle Regioni AWS in cui Casi è disponibile. Per informazioni, consulta [Disponibilità di Casi per regione](regions.md#cases_region).

1. Abilita Profili cliente Amazon Connect. Per istruzioni, consulta [Abilitare i profili dei clienti per l’istanza Amazon Connect](enable-customer-profiles.md).

   Il servizio Profili cliente è necessario per Casi Amazon Connect perché ogni caso deve essere associato a un profilo cliente di quel servizio.

## Passaggio 2: aggiunta di un dominio di Casi all'istanza Amazon Connect
<a name="step2-case-event-streams-enable"></a>

Per istruzioni, consulta [Abilitare Cases tramite la console Amazon Connect](enable-cases.md).

Se desideri aggiungere un case domain utilizzando l'API, consulta l'[CreateDomain](https://docs.aws.amazon.com/cases/latest/APIReference/API_CreateDomain.html)API nell'*Amazon Connect Cases API Reference*. 

## Passaggio 1: creazione di un modello di caso
<a name="step3-case-event-streams-enable"></a>

[Crea un modello di caso](case-templates.md) da utilizzare nel *Passaggio 6: test dei flussi di eventi dei casi*. 

Se desideri creare un modello di caso utilizzando l'API, consulta l'[CreateTemplate](https://docs.aws.amazon.com/cases/latest/APIReference/API_CreateTemplate.html)API nell'*Amazon Connect Cases API Reference*. 

## Passaggio 4: abilitazione e configurazione dei flussi di eventi dei casi per la ricezione di eventi in una coda SQS
<a name="step4-case-event-streams-enable"></a>

Esegui il comando riportato sotto per abilitare i flussi di eventi dei casi per il tuo dominio di Casi. Dopo l'esecuzione di questo comando, quando i casi vengono creati o aggiornati, viene pubblicato un evento sul bus predefinito del EventBridge servizio del tuo account (deve trovarsi nello Regione AWS stesso dominio Cases).

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

Per impostazione predefinita, gli eventi pubblicati da Casi Amazon Connect contengono solo metadati relativi a un caso, ad esempio `templateId`, `caseId`, `caseArn`, `approximateChangeTime` e così via. Puoi eseguire il comando riportato sotto per includere nell'evento maggiori informazioni sul caso (al momento della generazione dell'evento).

**Nota**  
Se desideri includere nell'evento un campo personalizzato, utilizza l'ID relativo. Per istruzioni su come trovare l'ID del campo personalizzato, consulta [Ricerca dell'ID del campo personalizzato](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
      }
    }
  }"
```

Successivamente, crea una coda Amazon SQS e impostala come destinazione per gli eventi Amazon Connect Cases sul tuo EventBridge bus in modo che tutti gli eventi dei casi vengano inviati alla coda SQS per l'elaborazione successiva.

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

## Passaggio 5: test dei flussi di eventi dei casi
<a name="step5-case-event-streams-enable"></a>

Utilizza l'applicazione degli agenti Amazon Connect per: 

1. Accettare un contatto tramite chat.

1. Creare un profilo cliente e associarlo al contatto tramite chat.

1. Creare un caso. 
**Nota**  
Il pulsante **Crea caso** nella scheda **Casi** diventerà attivo solo dopo che avrai accettato un contatto e lo avrai associato a un profilo cliente.

Accedi alla console Amazon SQS e verifica che nella tua coda SQS sia disponibile un evento (tipo: `CASE.CREATED`) per il caso appena creato. Puoi modificare il caso in questione (nella coda SQS verrà mostrato il seguente tipo di evento: `CASE.UPDATED`), associare il contatto al caso e lasciare un commento su quest'ultimo (anche in questo caso, verranno mostrati eventi relativi a tali azioni).

## Passaggio 6: utilizzo di casi per i flussi di eventi dei casi
<a name="step6-case-event-streams-enable"></a>

I flussi di eventi dei casi pubblicano eventi ogni volta che un caso viene creato o aggiornato, oppure quando ad esso viene associato un contatto o aggiunto un commento. Puoi utilizzare questi eventi per:
+ Metriche, analisi e dashboard
+ App che avvisino gli utenti (ad esempio, tramite l'invio di e-mail)
+ Azioni automatiche che vengono attivate in base a determinati tipi di aggiornamenti dei casi

Ad esempio, puoi utilizzare il target SQS on EventBridge (come mostrato nel passaggio 4) per archiviare temporaneamente gli eventi dei casi nella coda SQS e utilizzare le funzioni Lambda per elaborare gli eventi in SQS per creare applicazioni personalizzate come l'invio di e-mail al cliente quando il caso viene aggiornato, la risoluzione automatica di qualsiasi attività collegata al caso e altro ancora. Allo stesso modo, puoi utilizzare il target Firehose EventBridge per archiviare gli eventi dei casi in un bucket S3 e quindi utilizzare il target per AWS Glue ETL, Athena per analisi ad hoc e Quick per dashboard.

# Consenti ad Amazon Connect Cases di inviare aggiornamenti alle regole di Contact Lens
<a name="cases-rules-integration-onboarding"></a>

**Nota**  
Per eseguire le istruzioni di questa procedura, devi avere competenze da sviluppatore o avere esperienza con la CLI di Amazon Connect.

Completa questa procedura una tantum in modo che gli utenti possano configurare le regole da eseguire quando un caso viene creato o aggiornato. 

1. Verifica che Amazon Connect Cases sia [abilitato](enable-cases.md) per l’istanza Amazon Connect. 

1. Completa i passaggi per abilitare flussi di eventi di Amazon Connect Cases. Per ulteriori informazioni, consulta [Configurazione dei flussi di eventi di Amazon Connect Cases](case-event-streams-enable.md). Nota le seguenti modifiche alla procedura:

   1. Puoi ignorare la parte che chiede di creare una coda SQS, poiché non è richiesta.

   1. Esegui il comando `put-case-event-configuration` della CLI per includere tutte le informazioni relative ai campi dei casi nell’evento. Assicurati di includere tutti i campi necessari per il funzionamento del motore di regole.
**Nota**  
Per garantire che le regole relative alla violazione degli SLA di Cases funzionino correttamente, è necessario impostare `relatedItemData.includeContent` su `true`, come illustrato nell’esempio seguente.

      ```
      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. Se sono presenti campi dei casi personalizzati, assicurati di includere un ID campo personalizzato nell'array dei campi anche nel payload precedente. Puoi trovare il campo IDs eseguendo il seguente comando `list-fields` CLI:

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

   1. Ripeti il passaggio 2 se devi aggiungere nuovi campi personalizzati. 

1. Effettua una chiamata [CreateEventIntegration](https://docs.aws.amazon.com/appintegrations/latest/APIReference/API_CreateEventIntegration.html)API o esegui il comando `create-event-integration` CLI, come illustrato nel seguente comando di esempio.
   + Payload:

     ```
     aws appintegrations create-event-integration --name amazon-connect-cases --description amazon-connect-cases --event-filter '{"Source":"aws.cases"}' --event-bridge-bus default
     ```
   + L’output risulterà simile al seguente esempio:

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

1. Effettua una chiamata [CreateIntegrationAssociation](https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateIntegrationAssociation.html)API o esegui il comando `create-integration-association` CLI, come illustrato nel seguente comando di esempio.
   + Payload:

     `IntegrationArn` è la risposta che si ottiene dal passaggio 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
     ```
   + L’aspetto dell’output sarà simile all’esempio seguente:

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

Adesso gli utenti dovrebbero essere in grado di creare regole da eseguire quando un caso viene creato o aggiornato.

# Payload e schema degli eventi in Amazon Connect Cases
<a name="case-event-streams-sample"></a>

Quando richiedi di includere i dati del caso nel payload dell'evento, i dati riflettono la versione del caso dopo quella particolare modifica. 

I limiti predefiniti di Amazon Connect Case garantiscono che il payload sarà inferiore a 256 KB (la dimensione massima di un EventBus evento). Poiché è possibile personalizzare il modello a oggetti case (ad esempio, è possibile definire campi personalizzati sugli oggetti case per acquisire informazioni specifiche dell'azienda), lo schema degli eventi dei casi riflette le personalizzazioni apportate all'oggetto case, come illustrato negli esempi seguenti (ad esempio, scopri come UUIDs vengono utilizzate le proprietà JSON specifiche del cliente). 

## Esempio di payload di un evento di un caso quando la risorsa è il caso
<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"
                    }
                }
            }
        }
    }
}
```

## Esempio di payload di un evento di un caso quando la risorsa è un elemento correlato
<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": ".......",
            // }
        }
    }
}
```

## Esempio di payload dell’evento di un caso quando la risorsa è il caso eseguito da un’entità personalizzata
<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"
                    }
                }
            }
        }
    }
}
```