

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à.

# Concedi ad Amazon Connect l'accesso alle tue AWS Lambda funzioni
<a name="connect-lambda-functions"></a>

Amazon Connect è in grado di interagire con i sistemi e seguire percorsi differenti nei flussi in modo dinamico. A tal fine, richiama AWS Lambda le funzioni in un flusso, recupera i risultati e richiama i tuoi servizi o interagisci con altri archivi o servizi di AWS dati. Per ulteriori informazioni, consulta la [Guida per gli sviluppatori di AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

Per richiamare una funzione Lambda da un flusso, esegui le seguenti operazioni.

**Topics**
+ [Creazione di una funzione Lambda](#create-lambda-function)
+ [Aggiunta di una funzione Lambda all'istanza Amazon Connect](#add-lambda-function)
+ [Richiamo di una funzione Lambda da un flusso](#function-contact-flow)
+ [Best practice per invocare più funzioni Lambda](#invoke-multiple-functions)
+ [Configurazione della funzione Lambda per l'analisi dell'evento](#function-parsing)
+ [Verificare la risposta della funzione](#verify-function)
+ [Utilizzo della risposta della funzione Lambda](#process-function-response)
+ [Tutorial: Creazione di una funzione Lambda e richiamo in un flusso](#tutorial-invokelambda)

## Creazione di una funzione Lambda
<a name="create-lambda-function"></a>

Crea una funzione Lambda utilizzando qualsiasi runtime e configurala. Per ulteriori informazioni, consulta [Nozioni di base su Lambda](https://docs.aws.amazon.com/lambda/latest/dg/get-started.html) nella *Guida per gli sviluppatori AWS Lambda *.

Se crei la funzione Lambda nella stessa regione del contact center, puoi utilizzare la console di Amazon Connect per aggiungere la funzione Lambda all'istanza come descritto nella seguente attività, [Aggiunta di una funzione Lambda all'istanza Amazon Connect](#add-lambda-function). Questa operazione aggiunge automaticamente le autorizzazioni sulle risorse che consentono ad Amazon Connect di richiamare la funzione Lambda. In caso contrario, se la funzione Lambda si trova in un'altra regione puoi aggiungerla al flusso dei utilizzando il designer del flusso e aggiungere le autorizzazioni sulle risorse utilizzando il comando [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html), con il parametro Principale impostato di `connect.amazonaws.com` e l'ARN dell'istanza Amazon Connect. Per ulteriori informazioni, consulta [Utilizzo delle policy basate su risorse per AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) nella *Guida per lo sviluppatore di AWS Lambda *.

## Aggiunta di una funzione Lambda all'istanza Amazon Connect
<a name="add-lambda-function"></a>

Prima di utilizzare una funzione Lambda nel flusso è necessario aggiungerla all'istanza Amazon Connect.

**Aggiunta di una funzione Lambda all'istanza**

1. Apri la console Amazon Connect all'indirizzo [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/).

1. Nella pagina delle istanze, scegli il nome dell'istanza nella colonna **Alias istanza**. Questo nome di istanza appare nell'URL che usi per accedere ad Amazon Connect.   
![\[La pagina delle istanze del contact center virtuale di Amazon Connect, l'alias dell'istanza.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/instance.png)

1. Nel riquadro di navigazione, scegli **Flussi**.

1. Nella sezione **AWS Lambda**, utilizza la casella a discesa **Function (Funzione)** per selezionare la funzione da aggiungere all'istanza.
**Suggerimento**  
Il menu a discesa elenca solo le funzioni nella stessa regione dell'istanza. Se non è elencata alcuna funzione, scegli **Crea una nuova funzione Lambda**, che apre la AWS Lambda console.  
Per utilizzare una Lambda in una regione o in un account diverso, in [Funzione AWS Lambda ](invoke-lambda-function-block.md), sotto **Seleziona una funzione**, puoi inserire l'ARN di una Lambda. Quindi imposta la policy basata sulle risorse corrispondente su quella Lambda per consentire al flusso di chiamarla.   
Per chiamare `lambda:AddPermission`, è necessario:  
impostare il principale su **connect.amazonaws.com**;
impostare l'account di origine come account in cui si trova l'istanza;
impostare l'ARN di origine sull'ARN dell'istanza.
Per ulteriori informazioni, consulta [Concessione di accesso alle funzioni ad altri account](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html#permissions-resource-xaccountinvoke).

1. Scegli **Aggiungi funzione Lambda**. Verifica che l'ARN della funzione sia aggiunto sotto la voce **Lambda Functions (Funzioni Lambda)**.

Ora è possibile fare riferimento a quella funzione Lambda nei flussi.

## Richiamo di una funzione Lambda da un flusso
<a name="function-contact-flow"></a>

1. Apri o crea un flusso.

1. Aggiungi un blocco [Funzione AWS Lambda ](invoke-lambda-function-block.md) (nel gruppo **Integrate (Integrazione)**) alla griglia. Collega i rami da e al blocco.

1. Scegli il titolo del blocco [Funzione AWS Lambda ](invoke-lambda-function-block.md) per aprirne la pagina delle proprietà.

1. In **Select a function (Seleziona una funzione)**, scegli dall'elenco delle funzioni aggiunte all'istanza.

1. (Facoltativo) In **Function input parameters (Parametri di input della funzione)**, scegli **Add a parameter (Aggiungi un parametro)**. È possibile specificare coppie chiave-valore che vengono inviate alla funzione Lambda quando viene richiamata. È possibile anche specificare un valore **Timeout** per la funzione.

1. In **Timeout (massimo 8 secondi)**, specifica quanto tempo Lambda attende prima del timeout. Trascorso questo tempo, il contatto viene indirizzato verso il ramo Errore.

A ogni invocazione della funzione Lambda da un flusso, è possibile passare un set di informazioni predefinito correlato a un contatto in corso, nonché eventuali attributi aggiuntivi definiti in **Parametri di input funzione** per il blocco **Richiama funzione AWS Lambda ** aggiunto.

Di seguito è riportato un esempio di richiesta JSON a una funzione Lambda:

```
{
    "Details": {
        "ContactData": {
            "Attributes": {
               "exampleAttributeKey1": "exampleAttributeValue1"
              },
            "Channel": "VOICE",
            "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "CustomerEndpoint": {
                "Address": "+1234567890",
                "Type": "TELEPHONE_NUMBER"
            },
            "CustomerId": "someCustomerId",
            "Description": "someDescription",
            "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",
            "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",
            "LanguageCode": "en-US",
            "MediaStreams": {
                "Customer": {
                    "Audio": {
                        "StreamARN": "arn:aws:kinesisvideo::eu-west-2:111111111111:stream/instance-alias-contact-ddddddd-bbbb-dddd-eeee-ffffffffffff/9999999999999",
                        "StartTimestamp": "1571360125131", // Epoch time value
                        "StopTimestamp": "1571360126131",
                        "StartFragmentNumber": "100" // Numberic value for fragment number 
                    }
                }
            },
            "Name": "ContactFlowEvent",
            "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "Queue": {
                   "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                 "Name": "PasswordReset"
                "OutboundCallerId": {
                    "Address": "+12345678903",
                    "Type": "TELEPHONE_NUMBER"
                }
            },
            "References": {
                "key1": {
                    "Type": "url",
                    "Value": "urlvalue"
                }
            },
            "SystemEndpoint": {
                "Address": "+1234567890",
                "Type": "TELEPHONE_NUMBER"
            }
        },
        "Parameters": {"exampleParameterKey1": "exampleParameterValue1",
               "exampleParameterKey2": "exampleParameterValue2"
        }
    },
    "Name": "ContactFlowEvent"
}
```

La richiesta è divisa in due parti:
+ Dati di contatto: vengono sempre trasmessi da Amazon Connect per ogni contatto. Alcuni parametri sono opzionali.

  Questa sezione può includere attributi precedentemente associati a un contatto, ad esempio quando si utilizza un blocco **Imposta attributi contatti** in un flusso. Questa mappa può essere vuota se non esistono attributi salvati.

  L'immagine seguente mostra dove apparirebbero questi attributi nella pagina delle proprietà di un **Imposta attributi contatti**.  
![\[La pagina delle proprietà del blocco Imposta attributi contatti.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-setAttribute.png)
+ Parametri: si tratta di parametri specifici di questa chiamata che sono stati definiti al momento della creazione della funzione Lambda. **L'immagine seguente mostra dove apparirebbero questi parametri nella pagina delle proprietà del blocco Richiama funzione AWS Lambda **.   
![\[I parametri di input della funzione nel blocco funzionale Invoke AWS Lambda.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-setParameter.png)

Il blocco [Funzione AWS Lambda ](invoke-lambda-function-block.md) può ricevere parametri di input in formato JSON, adattandosi sia a tipi di dati primitivi che a JSON annidato. Di seguito è riportato un esempio di input JSON utilizzabile nel blocco [Funzione AWS Lambda ](invoke-lambda-function-block.md).

```
{ 
  "Name": "Jane", 
  "Age":10, 
  "isEnrolledInSchool": true, 
  "hobbies": {
    "books":["book1", "book2"], 
    "art":["art1", "art2"]
  } 
}
```

### Policy per riprovare una chiamata
<a name="retry"></a>

Se l'invocazione Lambda in un flusso è oggetto di limitazione, la richiesta verrà ritentata. Sarà inoltre riprovata se si verifica un errore di servizio generale (errore 500). 

Quando una chiamata sincrona restituisce un errore, Amazon Connect riprova fino a 3 volte, per un massimo di 8 secondi. A quel punto, il flusso procederà verso il basso nel ramo Error (Errore). 

Per ulteriori informazioni su come Lambda riprova, consulta [Gestione degli errori e tentativi automatici](https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html) in Lambda. AWS 

## Best practice per invocare più funzioni Lambda
<a name="invoke-multiple-functions"></a>

Amazon Connect limita la durata di una sequenza di funzioni Lambda a 20 secondi. Genera un timeout con un messaggio di errore quando il tempo di esecuzione totale supera questa soglia. Poiché per i clienti l'esecuzione di una funzione Lambda è silenziosa, ti consigliamo di aggiungere un blocco **Play prompt (Riproduci prompt)** tra le funzioni per mantenerli impegnati e consapevoli della lunga interazione. 

Interrompendo la catena di funzioni Lambda con il blocco **Riproduci prompt**, è possibile richiamare più funzioni che durano oltre la soglia di 20 secondi.

## Configurazione della funzione Lambda per l'analisi dell'evento
<a name="function-parsing"></a>

Per passare correttamente attributi e parametri tra la funzione Lambda e Amazon Connect, configura la funzione in modo che analizzi correttamente la richiesta JSON inviata dal blocco di ** AWS Lambda funzioni Invoke** o dagli **attributi Set contact** e definisci qualsiasi logica aziendale da applicare. La modalità di analisi di JSON dipende dal runtime utilizzato per la funzione. 

Ad esempio, il codice seguente mostra come accedere `exampleParameterKey1` dal blocco di ** AWS Lambda funzioni Invoke** e `exampleAttributeKey1` dal blocco **Set contact** attributes utilizzando Node.JS:

```
exports.handler = function(event, context, callback) {
// Example: access value from parameter (Invoke AWS Lambda function)
let parameter1 = event['Details']['Parameters']['exampleParameterKey1'];
  		  
// Example: access value from attribute (Set contact attributes block)
let attribute1 = event['Details']['ContactData']['Attributes']['exampleAttributeKey1'];
  		  
// Example: access customer's phone number from default data
let phone = event['Details']['ContactData']['CustomerEndpoint']['Address'];
  		  
// Apply your business logic with the values
// ...
}
```

## Verificare la risposta della funzione
<a name="verify-function"></a>

**Suggerimento**  
Il riferimento a un array non è supportato in un flusso. Gli array possono essere utilizzati solo in un’altra funzione Lambda.

La risposta della funzione Lambda può essere STRING\$1MAP o JSON e deve essere impostata durante la configurazione del blocco di funzione Invoke ** AWS Lambda** nel flusso. Se la convalida della risposta è impostata su STRING\$1MAP, la funzione Lambda dovrebbe restituire un oggetto piatto di key/value coppie del tipo stringa. Altrimenti, se la convalida della risposta è impostata su JSON, la funzione Lambda può restituire qualsiasi JSON valido, incluso JSON annidato.

![\[Il blocco di flusso della funzione invoke AWS Lambda che evidenzia l'uso di string map o json.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/verify-function-lambda-response-validation.png)


La risposta Lambda può arrivare fino a 32 kb. Se non è possibile raggiungere Lambda, la funzione genera un'eccezione, la risposta non è compresa, oppure la funzione Lambda richiede più tempo rispetto al limite, il flusso passa all'etichetta `Error`.

Verifica l'output restituito dalla funzione Lambda per confermare che verrà correttamente usato quando restituito ad Amazon Connect. L'esempio seguente mostra una richiesta di esempio in Node.JS.

```
exports.handler = function(event, context, callback) {
// Extract data from the event object	     
let phone = event['Details']['ContactData']['CustomerEndpoint']['Address'];    
	   
// Get information from your APIs

let customerAccountId = getAccountIdByPhone(phone);
let customerBalance = getBalanceByAccountId(customerAccountId);
  		  
    let resultMap = {
        AccountId: customerAccountId,
        Balance: '$' + customerBalance,
}

callback(null, resultMap);
}
```

Questo esempio mostra invece una risposta di esempio in Python:

```
def lambda_handler(event, context):
// Extract data from the event object
  phone = event['Details']['ContactData']['CustomerEndpoint']['Address']
  		  
// Get information from your APIs
  customerAccountId = getAccountIdByPhone(phone)
  customerBalance = getBalanceByAccountId(customerAccountId)
  		  
  	resultMap = {
  		"AccountId": customerAccountId,
  		"Balance": '$%s' % customerBalance
  		}
        
 return resultMap
```

L'output restituito dalla funzione deve essere un oggetto piatto composto da key/value coppie, con valori che includono solo caratteri alfanumerici, trattini e trattini bassi. La dimensione dei dati restituiti deve essere inferiore a 32 KB di dati UTF-8.

L'esempio seguente mostra l'output JSON da queste funzioni Lambda.

```
{
"AccountId": "a12345689",
"Balance": "$1000"
}
```

Se la convalida della risposta è impostata su JSON, la funzione Lambda può restituire anche un JSON annidato, ad esempio:

```
{
  "Name": {
      "First": "John",
      "Last": "Doe"
  },
  "AccountId": "a12345689",
  "OrderIds": ["x123", "y123"]
}
```

È possibile restituire qualsiasi risultato purché si tratti di semplici coppie chiave-valore.

## Utilizzo della risposta della funzione Lambda
<a name="process-function-response"></a>

Ci sono due modi per utilizzare la risposta della funzione nel flusso. È possibile fare riferimento direttamente alle variabili restituite da Lambda o archiviare i valori restituiti dalla funzione come attributi di contatto e quindi fare riferimento agli attributi archiviati. Quando utilizzi un riferimento esterno a una risposta da una funzione Lambda, il riferimento riceverà sempre la risposta dalla funzione richiamata più recente. Per usare la risposta da una funzione prima che venga richiamata una funzione successiva, la risposta deve essere salvata come un attributo di contatto o passata come un parametro alla funzione successiva.

### 1. Accesso diretto alle variabili
<a name="access-variables"></a>

 Se accedi alle variabili direttamente, puoi utilizzarle in blocchi di flusso, ma non sono incluse nei record dei contatti. Per accedere a queste variabili direttamente in un blocco di flusso, aggiungete il blocco dopo il blocco di ** AWS Lambda funzione Invoke**, quindi fate riferimento agli attributi come mostrato nell'esempio seguente: 

```
Name - $.External.Name
Address - $.External.Address
CallerType - $.External.CallerType
```

L'immagine seguente mostra la pagina delle proprietà del blocco **Riproduci prompt**. Le variabili sono specificate nel text-to-speech blocco.

![\[La pagina delle proprietà del blocco Riproduci prompt.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-useExternal.png)


Assicurati che il nome specificato per l'attributo di origine corrisponda al nome della chiave restituito da Lambda.

### 2. Archiviazione di variabili come attributi di contatto
<a name="store-variables"></a>

Se archivi le variabili come attributi di contatto, puoi utilizzarle in tutto il flusso di contatti e sono incluse nei record dei contatti.

Per memorizzare i valori restituiti come attributi di contatto e quindi farvi riferimento, utilizza un blocco **Set contact attributes** nel flusso dopo il blocco di ** AWS Lambda funzione Invoke**. Scegli **Usa attributo**, **Esterno** per il **Tipo**. Seguendo l'esempio, imposta **Attributo di destinazione** su `MyAccountId`, imposta l'**attributo** su `AccountId` e fai lo stesso per `MyBalance` e **Saldo**. Una configurazione di esempio è mostrata nell'immagine seguente.

![\[La pagina delle proprietà del blocco Imposta attributi contatti.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-useInSetAttributes.png)


Aggiungi Indirizzo come un **Source Attribute (Attributo origine)** e utilizza `returnedContactAddress` come la **Destination key (Chiave di destinazione)**. Quindi aggiungi `CallerType` come **Attributo origine** e utilizza `returnedContactType` per **Chiave di destinazione**.

![\[La pagina delle proprietà del blocco Riproduci prompt.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-useAttributeInPlayPrompt.png)


Assicurati che il nome specificato per l'attributo di origine corrisponda al nome della chiave restituito da Lambda.

## Tutorial: Creazione di una funzione Lambda e richiamo in un flusso
<a name="tutorial-invokelambda"></a>

### Passaggio 1: creazione dell'esempio Lambda
<a name="tutorial-invokelambda-step1"></a>

1. Accedi a Console di gestione AWS e apri la AWS Lambda console all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. In AWS Lambda, scegli **Crea funzione**.

1. Scegli **Crea da zero**, se non è già selezionato. In **Basic information (Informazioni di base)** , per **Function name (Nome funzione)** , inserisci **MyFirstConnectLambda**. Per tutte le altre opzioni, accetta le impostazioni predefinite. Queste opzioni sono mostrate nell'immagine seguente della console AWS Lambda.  
![\[La console AWS Lambda.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambdafunctions-tutorial-create-function-name.png)

1. Scegli **Create function (Crea funzione)**.

1. Nella casella **Sorgente codice**, nella scheda **index.js**, elimina il codice del modello dall'editor di codice.

1. Copia e incolla il codice seguente nell'editor di codice come mostrato nell'immagine seguente:  
![\[La sezione Sorgente codice, il pulsante Implementa.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambdafunctions-tutorial-code-source.png)

   ```
   exports.handler = async (event, context, callback) => {
   // Extract information
           const customerNumber = event.Details.ContactData.CustomerEndpoint.Address;
           const companyName = event.Details.Parameters.companyName;
   // Fetch data
           const balance = await fetchBalance(customerNumber, companyName);
           const support = await fetchSupportUrl(companyName);
   // Prepare result
           const resultMap = {
           customerBalance: balance,
           websiteUrl: support
           }
           callback(null, resultMap);
           }
           
           async function fetchBalance(customerPhoneNumber, companyName) {
   // Get data from your API Gateway or Database like DynamoDB
           return Math.floor(Math.random() * 1000);
           }
           
           async function fetchSupportUrl(companyName) {
   // Get data from your API Gateway or Database like DynamoDB
           return 'www.GGG.com/support';
           }
   ```

   Questo codice genererà un risultato casuale per CustomerBalance.

1. Seleziona **Deploy (Implementa)**.

1. Dopo aver scelto **Implementa**, scegli **Test** per avviare l'editor di test.

1. Nella finestra di dialogo **Configura evento di test**, seleziona **Crea nuovo evento**. Per **Nome evento**, immettete **ConnectMock**come nome del test.

1. Nella casella **Evento JSON**, elimina il codice di esempio e inserisci invece il codice seguente. 

   ```
   {
   "Details": {
   "ContactData": {
       "Attributes": {},
       "Channel": "VOICE",
       "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
       "CustomerEndpoint": {
       "Address": "+1234567890",
       "Type": "TELEPHONE_NUMBER"
       },
   "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
   "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",
   "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",
   "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
   "Queue": {
       "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
       "Name": "PasswordReset"
     },
   "SystemEndpoint": {
       "Address": "+1234567890",
       "Type": "TELEPHONE_NUMBER"
       } 
   },
   "Parameters": {
       "companyName": "GGG"
       }
   },
   "Name": "ContactFlowEvent"
   }
   ```

1. Scegli **Save** (Salva).

1. Scegli **Test (Esegui test)**. Dovrebbe essere visualizzato un output simile al seguente:  
![\[La sezione Sorgente codice, il pulsante Test.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambdafunctions-tutorial-code-source-response.png)

   Il saldo sarà diverso. Il codice genera un numero casuale.

### Passaggio 2: Aggiunta della Lambda ad Amazon Connect
<a name="tutorial-invokelambda-step2"></a>

1. Vai alla console Amazon Connect, all'indirizzo [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/). 

1. Scegli l'alias dell'istanza Amazon Connect.  
![\[La pagina delle istanze del contact center virtuale di Amazon Connect, l'alias dell'istanza.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/instance.png)

1. Nel menu di navigazione, scegli **Flussi**.

1. Nella AWS Lambda sezione, utilizza la casella a discesa **Lambda Functions** per selezionare. **MyFirstConnectLambda**  
![\[La pagina dei flussi, la sezione AWS Lambda.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-add-myfirstconnectlambda.png)

1. Scegli **Aggiungi funzione Lambda**.

### Passaggio 3: creazione di un flusso dei contatti
<a name="tutorial-invokelambda-step3"></a>

L'immagine seguente è un esempio del flusso che verrà creato mediante le fasi di questa procedura. Contiene i seguenti blocchi: **Imposta attributi contatti**, **Riproduci prompt**, **Invoca funzione AWS Lambda**, un altro blocco **Imposta attributi contatti**, un altro blocco **Riproduci prompt** e infine un blocco **Disconnetti**.

![\[Un flusso che chiama il blocco di funzioni Invoke AWS Lambda.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-exampleFlow.png)


1. Accedi al sito web di Amazon Connect amministrazione all'indirizzo https://*instance name*.my.connect.aws/.

1. Nel menu di navigazione, vai su **Instradamento**, **Flussi**, **Crea un flusso di contatti**.

1. Trascina un blocco [Set contact attributes (Imposta attributi contatti)](set-contact-attributes.md) sulla griglia e configura la pagina delle proprietà mostrata nell'immagine seguente:   
![\[Un blocco Imposta attributi contatti.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-1.png)

   1. **Namespace** = **Definito dall'utente**.

   1. **Attributo** = **companyName**.

   1. Scegli **Aggiungi manualmente**. **Valore** = **GGG**.

   1. Scegli **Save** (Salva).

1. Trascina un blocco [Riproduci comando](play.md) sulla griglia e configura la pagina delle proprietà come mostrato nell'immagine seguente:   
![\[Un blocco di riproduzione prompt.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-1.png)

   1. ****Scegli **Text-to-speech o chatta il testo**, **imposta manualmente e imposta Interpreta** come su SSML.**** Inserisci il seguente testo nella casella affinché il testo venga pronunciato:

      `Hello, thank you for calling $.Attributes.companyName inc.`

   1. Scegli **Save** (Salva).

1. Trascina un altro blocco [Riproduci comando](play.md) sulla griglia e configura la pagina delle proprietà come mostrato nell'immagine seguente:   
![\[Un blocco di riproduzione prompt.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-2.png)

   1. **Scegli **Text-to-speech o chatta il testo**, **imposta manualmente** e imposta **Interpreta come** testo.** Inserisci il seguente testo nella casella affinché il testo venga pronunciato:

      `Please try again later.`

   1. Scegli **Save** (Salva).

1. Trascina un blocco [Funzione AWS Lambda ](invoke-lambda-function-block.md) sulla griglia e configura la pagina delle proprietà come mostrato nell'immagine seguente:   
![\[Un blocco di funzioni Invoke AWS Lambda.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-exampleFlow-invoke-lambda.png)

   1. Scegli **Seleziona manualmente**, quindi scegli **MyFirstConnectLambda**dal menu a discesa.

   1. **Nella casella **Chiave di destinazione**, inserisci companyName**. (Questo viene inviato a Lambda.)

   1. Scegli la casella **Imposta dinamicamente**

   1. Per **Namespace**, seleziona **Definito dall'utente**.

   1. **Per **Attributo**, inserisci companyName**.

   1. Scegli **Save** (Salva).

1. Trascina un blocco [Set contact attributes (Imposta attributi contatti)](set-contact-attributes.md) sulla griglia, scegli **Aggiungi un altro attributo** e configura la pagina delle proprietà come mostrato nell'immagine seguente:   
![\[Un blocco Imposta attributi contatti.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-2.png)

   1. **Namespace** = **Definito dall'utente**. **Attributo** = **MyBalance**.

   1. Scegli **Imposta dinamicamente**. 

   1. **Namespace** = **Esterno**.

   1. **Attributo** = **customerBalance**. Questo è il risultato di Lambda.

   1. Scegli **Add another attribute (Aggiungi un altro attributo)**.

   1. **Namespace** = **Definito dall'utente**.

   1. **Attributo** = **myURL**.

   1. Seleziona **Imposta dinamicamente**. **Namespace** = **Esterno**. 

   1. **Attributo** = **WebsiteURL**. Questo è il risultato di Lambda.

   1. Scegli **Save** (Salva).

1. Trascina un blocco [Riproduci comando](play.md) sulla griglia e configura la pagina delle proprietà come mostrato nell'immagine seguente:   
![\[Un blocco di riproduzione prompt.\]](http://docs.aws.amazon.com/it_it/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-3.png)

   1. Scegli **Text-to-speech o chatta il testo** e imposta **Interpreta come** su **SSML**. Immetti il testo seguente nella casella di testo:

      `Your remaining balance is <say-as interpret-as="characters">$.Attributes.MyBalance</say-as>.`

      `Thank you for calling $.Attributes.companyName.`

      `Visit $.Attributes.MyURL for more information.`

   1. Scegli **Save** (Salva).

1. Trascina un blocco [Disconnect / hang up (Disconnetti/riaggancia)](disconnect-hang-up.md) sulla griglia. 

1. Connetti tutti i blocchi in modo che il flusso assomigli all'immagine mostrata all'inizio di questa procedura.

1. **Immettete **MyFirstConnectFlow**come nome, quindi scegliete Pubblica.**

1. Nel menu di navigazione, vai su **Canali**, **Numeri di telefono**. 

1. Seleziona il numero di telefono.

1. Seleziona **MyFirstConnectFlow**e scegli **Salva**.

Ora provalo. Chiamare il numero. Dovresti sentire un messaggio di saluto, il saldo e il sito web da visitare.