

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.

# Accordez à Amazon Connect l'accès à vos AWS Lambda fonctions
<a name="connect-lambda-functions"></a>

Amazon Connect peut interagir avec vos propres systèmes et prendre dynamiquement des chemins différents dans les flux. Pour ce faire, invoquez AWS Lambda des fonctions dans un flux, récupérez les résultats et appelez vos propres services ou interagissez avec d'autres magasins de AWS données ou services. Pour plus d’informations, consultez le [Guide du développeur AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

Pour invoquer une fonction Lambda à partir d’un flux, effectuez les tâches suivantes.

**Topics**
+ [Création d’une fonction Lambda](#create-lambda-function)
+ [Ajout d’une fonction Lambda à votre instance Amazon Connect](#add-lambda-function)
+ [Invocation d’une fonction Lambda à partir d’un flux](#function-contact-flow)
+ [Bonnes pratiques pour invoquer plusieurs fonctions Lambda](#invoke-multiple-functions)
+ [Configuration de votre fonction Lambda pour analyser l’événement](#function-parsing)
+ [Vérification de la réponse de la fonction](#verify-function)
+ [Consommation de la réponse de la fonction Lambda](#process-function-response)
+ [Tutoriel : Création et invocation d’une fonction Lambda dans un flux](#tutorial-invokelambda)

## Création d’une fonction Lambda
<a name="create-lambda-function"></a>

Créez une fonction Lambda, à l'aide de n'importe quelle exécution, et configurez-la. Pour plus d’informations, consultez [Démarrage avec Lambda](https://docs.aws.amazon.com/lambda/latest/dg/get-started.html) dans le *Guide du développeur AWS Lambda *.

Si vous créez la fonction Lambda dans la même région que votre centre de contact, vous pouvez utiliser la console Amazon Connect pour ajouter la fonction Lambda à votre instance comme décrit dans la tâche suivante, [Ajout d’une fonction Lambda à votre instance Amazon Connect](#add-lambda-function). Cette opération ajoute automatiquement les autorisations de ressource qui permettent à Amazon Connect d’invoquer la fonction Lambda. Sinon, si la fonction Lambda se trouve dans une autre région, vous pouvez l’ajouter à votre flux à l’aide du concepteur de flux et ajouter les autorisations de ressource à l’aide de la commande [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html), avec `connect.amazonaws.com` comme principal et l’ARN de votre instance Amazon Connect. Pour plus d'informations, consultez [Utilisation des stratégies fondées sur les ressources pour AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) dans le *Guide du développeur AWS Lambda *.

## Ajout d’une fonction Lambda à votre instance Amazon Connect
<a name="add-lambda-function"></a>

Avant de pouvoir utiliser une fonction Lambda dans un flux, vous devez l’ajouter à votre instance Amazon Connect.

**Ajout d’une fonction Lambda à votre instance**

1. Ouvrez la console Amazon Connect à l'adresse [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/).

1. Sur la page des instances, choisissez le nom de votre instance dans la colonne **Alias d’instance**. Ce nom d'instance apparaît dans l'URL que vous utilisez pour accéder à Amazon Connect.   
![\[Page Instances du centre de contact virtuel Amazon Connect, alias d’instance.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/instance.png)

1. Dans le volet de navigation, sélectionnez **Flux**.

1. Dans la section **AWS Lambda**, utilisez la zone déroulante **Fonction** pour sélectionner la fonction à ajouter à votre instance.
**Astuce**  
La liste déroulante répertorie uniquement les fonctions de la même région que votre instance. Si aucune fonction n'est répertoriée, choisissez **Create a new Lambda function**, qui ouvre la AWS Lambda console.  
Pour utiliser une fonction Lambda dans une autre région ou un autre compte, dans la [Fonction AWS Lambda ](invoke-lambda-function-block.md), sous **Sélectionner une fonction**, vous pouvez saisir l’ARN d’une fonction Lambda. Configurez ensuite la politique basée sur les ressources correspondante sur cette fonction Lambda pour permettre au flux de l’appeler.   
Pour appeler `lambda:AddPermission`, vous devez :  
définir le principal sur **connect.amazonaws.com** ;
définir le compte source comme étant le compte dans lequel se trouve votre instance ;
définir l’ARN source sur l’ARN de votre instance.
Pour plus d’informations, consultez [Octroi de l’accès à la fonction à d’autres comptes](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html#permissions-resource-xaccountinvoke).

1. Choisissez **Ajouter une fonction Lambda**. Vérifiez que l'ARN de la fonction est ajouté sous **Fonctions Lambda**.

Maintenant, vous pouvez vous référer à cette fonction Lambda dans vos flux.

## Invocation d’une fonction Lambda à partir d’un flux
<a name="function-contact-flow"></a>

1. Ouvrez ou créez un flux.

1. Ajoutez un bloc [Fonction AWS Lambda ](invoke-lambda-function-block.md) (dans le groupe **Intégrer** ) à la grille. Connectez les branches vers et depuis le bloc.

1. Choisissez le titre du bloc [Fonction AWS Lambda ](invoke-lambda-function-block.md) pour ouvrir la page des propriétés.

1. Sous **Sélectionner une fonction**, choisissez la fonction dans la liste que vous avez ajoutée à votre instance.

1. (Facultatif) Sous **Paramètres en entrée de la fonction**, choisissez **Ajouter un paramètre**. Vous pouvez spécifier les paires clé-valeur envoyées à la fonction Lambda lorsqu’elle est invoquée. Vous pouvez également spécifier une valeur pour le paramètre **Expiration** de la fonction.

1. Dans **Délai d’attente (max. 8 secondes)**, spécifiez la durée d’attente avant que Lambda expire. Passé ce délai, le contact est routé vers le bas de la branche Erreur.

Chaque fois que vous invoquez une fonction Lambda à partir d’un flux, vous transmettez un ensemble d’informations par défaut relatives au contact en cours, ainsi que tous les attributs supplémentaires définis dans la section **Paramètres d’entrée de la fonction** pour le bloc **Appeler une fonction AWS Lambda ** ajouté.

Voici un exemple de demande JSON transmise à une fonction 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 demande est divisée en deux parties :
+ Données de contact : ces données sont toujours transmises par Amazon Connect pour chaque contact. Certains paramètres sont facultatifs.

  Cette section peut inclure des attributs qui ont été précédemment associés à un contact, par exemple lors de l’utilisation d’un bloc **Définir des attributs de contact** dans un flux. Ce mappage peut être vide si aucun attribut n'est enregistré.

  L’image suivante montre où ces attributs devraient apparaître dans la page de propriétés d’un bloc **Définir des attributs de contact**.  
![\[La page des propriétés du bloc Définir des attributs de contact.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-setAttribute.png)
+ Paramètres : il s’agit des paramètres spécifiques à cet appel qui ont été définis lors de la création de la fonction Lambda. L’image suivante montre où ces paramètres devraient apparaître dans la page des propriétés du bloc **Appeler une fonction AWS Lambda **.   
![\[Les paramètres d'entrée de la fonction dans le bloc de fonctions Invoke AWS Lambda.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-setParameter.png)

Le bloc [Fonction AWS Lambda ](invoke-lambda-function-block.md) peut recevoir des paramètres d’entrée au format JSON, prenant en charge à la fois des types de données primitifs et un objet JSON imbriqué. Voici un exemple d’entrée JSON pouvant être utilisée dans le bloc [Fonction AWS Lambda ](invoke-lambda-function-block.md).

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

### Stratégie de nouvelle tentative d'appel
<a name="retry"></a>

Si votre invocation Lambda dans un flux est restreinte, la demande fera l’objet d’une nouvelle tentative. Il sera également relancé si un échec de service général (erreur 500) se produit. 

Lorsqu’une invocation synchrone renvoie une erreur, Amazon Connect réessaie jusqu’à trois fois, pendant un maximum de 8 secondes. À ce stade, le flux progresse le long de la branche Erreur. 

Pour en savoir plus sur la façon dont Lambda effectue de nouvelles tentatives, consultez la section [Gestion des erreurs et tentatives automatiques](https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html) dans Lambda. AWS 

## Bonnes pratiques pour invoquer plusieurs fonctions Lambda
<a name="invoke-multiple-functions"></a>

Amazon Connect limite la durée d'une séquence de fonctions Lambda à 20 secondes. Elle expire avec un message d'erreur lorsque le temps total d'exécution dépasse ce seuil. Dans la mesure où les clients n'entendent rien pendant l'exécution d'une fonction Lambda, nous vous recommandons d'ajouter un bloc **Lire l'invite** entre les fonctions pour qu'ils restent impliqués durant la longue interaction. 

En interrompant une chaîne de fonctions Lambda avec le bloc **Lire l'invite**, vous pouvez invoquer plusieurs fonctions qui durent plus longtemps que le seuil de 20 secondes.

## Configuration de votre fonction Lambda pour analyser l’événement
<a name="function-parsing"></a>

Pour transmettre correctement les attributs et les paramètres entre votre fonction Lambda et Amazon Connect, configurez votre fonction pour analyser correctement la requête JSON envoyée depuis le bloc de ** AWS Lambda fonction Invoke** ou **définissez les attributs de contact**, et définissez toute logique métier à appliquer. Le mode d'analyse de la requête JSON dépend du runtime que vous utilisez pour votre fonction. 

Par exemple, le code suivant montre comment accéder à `exampleParameterKey1` partir du bloc de ** AWS Lambda fonction Invoke** et `exampleAttributeKey1` du bloc **Set contact attributes** à l'aide de 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
// ...
}
```

## Vérification de la réponse de la fonction
<a name="verify-function"></a>

**Astuce**  
Le référencement d’un tableau n’est pas pris en charge dans un flux. Les tableaux peuvent être utilisés uniquement dans une autre fonction Lambda.

La réponse de la fonction Lambda peut être un STRING\$1MAP ou un JSON et doit être définie lors de la configuration du bloc de fonction Invoke ** AWS Lambda** dans le flux. Si la validation des réponses est définie sur STRING\$1MAP, la fonction Lambda doit renvoyer un objet plat composé de key/value paires de type chaîne. Sinon, si la validation de la réponse est définie sur JSON, la fonction lambda peut renvoyer n’importe quel objet JSON valide, y compris un objet JSON imbriqué.

![\[Le bloc de flux de la fonction Invoke AWS Lambda qui met en évidence l'utilisation de string map ou de json.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/verify-function-lambda-response-validation.png)


La réponse Lambda peut atteindre jusqu’à 32 Ko. Si vous ne parvenez pas à atteindre Lambda, si la fonction lève une exception, si la réponse n’est pas comprise ou si la fonction Lambda prend plus de temps que la limite spécifiée, le flux saute jusqu’à l’étiquette `Error`.

Testez la sortie retournée à partir de votre fonction Lambda pour confirmer qu’elle sera correctement consommée une fois renvoyée à Amazon Connect. L'exemple suivant illustre un exemple de réponse dans 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);
}
```

Voici un exemple de réponse à l'aide de 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
```

La sortie renvoyée par la fonction doit être un objet plat composé de key/value paires, dont les valeurs incluent uniquement des caractères alphanumériques, des tirets et des traits de soulignement. La taille des données retournées doit être inférieure à 32 Ko de données UTF-8.

L’exemple suivant montre la sortie JSON de ces fonctions Lambda :

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

Si la validation de la réponse est définie sur JSON, la fonction lambda peut même renvoyer du code JSON imbriqué, par exemple :

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

Vous pouvez renvoyer n’importe quel résultat à condition qu’il s’agisse de simples paires clé-valeur.

## Consommation de la réponse de la fonction Lambda
<a name="process-function-response"></a>

Il existe deux façons d’utiliser la réponse de la fonction dans votre flux. Vous pouvez référencer directement les variables retournées par Lambda ou stocker les valeurs renvoyées à partir de la fonction sous forme d’attributs de contact, puis référencer les attributs stockés. Lorsque vous utilisez une référence externe à une réponse envoyée par une fonction Lambda, la référence recevra toujours la réponse de la fonction la plus récemment invoquée. Pour utiliser la réponse provenant d'une fonction avant l'appel d'une fonction suivante, la réponse doit être enregistrée sous la forme d'un attribut de contact, ou être transmise en tant que paramètre à l'autre fonction.

### 1. Accès direct aux variables
<a name="access-variables"></a>

 Si vous accédez directement aux variables, vous pouvez les utiliser dans les blocs de flux, mais elles ne sont pas incluses dans les enregistrements de contact. Pour accéder à ces variables directement dans un bloc de flux, ajoutez le bloc après le bloc de ** AWS Lambda fonction Invoke**, puis référencez les attributs comme indiqué dans l'exemple suivant : 

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

L’image suivante illustre la page de propriétés du bloc **Lire l’invite**. Les variables sont spécifiées dans le text-to-speech bloc.

![\[Page des propriétés du bloc Lire l'invite.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-useExternal.png)


Assurez-vous que le nom spécifié pour l’attribut source correspond au nom de clé renvoyé par Lambda.

### 2. Stockage des variables comme attributs de contact
<a name="store-variables"></a>

Si vous stockez les variables sous forme d’attributs de contact, vous pouvez les utiliser dans l’ensemble de votre flux et elles sont incluses dans les enregistrements de contact.

Pour stocker les valeurs renvoyées sous forme d'attributs de contact, puis les référencer, utilisez un bloc **Set contact attributes** dans votre flux après le bloc de ** AWS Lambda fonction Invoke**. Choisissez **Utiliser un attribut**, puis **Externe** pour **Type**. Dans l’exemple que nous utilisons, définissez **Attribut de destination** sur `MyAccountId`, et définissez l’**attribut** sur `AccountId`, puis faites de même pour `MyBalance` et **Balance**. L'image suivante illustre cette configuration.

![\[La page des propriétés du bloc Définir des attributs de contact.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-useInSetAttributes.png)


Ajoutez une adresse en tant qu'**Attribut de source** et utilisez `returnedContactAddress` comme **Clé de destination**. Ajoutez ensuite `CallerType` comme **Attribut de source** et utilisez `returnedContactType` comme **Clé de destination**, comme indiqué dans l’image suivante.

![\[Page des propriétés du bloc Lire l'invite.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-useAttributeInPlayPrompt.png)


Assurez-vous que le nom spécifié pour l’attribut de source externe correspond au nom de clé renvoyé par Lambda.

## Tutoriel : Création et invocation d’une fonction Lambda dans un flux
<a name="tutorial-invokelambda"></a>

### Étape 1 : créer l’exemple Lambda
<a name="tutorial-invokelambda-step1"></a>

1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Dans AWS Lambda, choisissez **Créer une fonction**.

1. Choisissez **Créer à partir de zéro**, si l'option n'est pas déjà sélectionnée. Sous **Basic information** (Informations de base), pour **Function name** (Nom de la fonction), entrez **MyFirstConnectLambda**. Pour toutes les autres options, acceptez les valeurs par défaut. Ces options sont présentées dans l'image suivante de la console AWS Lambda.  
![\[La console AWS Lambda.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambdafunctions-tutorial-create-function-name.png)

1. Choisissez **Créer une fonction**.

1. Dans la zone **Source du code**, dans l'onglet **index.js**, supprimez le code du modèle dans l'éditeur de code.

1. Copiez et collez le code suivant dans l'éditeur de code tel qu'indiqué dans l'image suivante :  
![\[La section Source du code, le bouton de déploiement.\]](http://docs.aws.amazon.com/fr_fr/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';
           }
   ```

   Ce code va générer un résultat aléatoire pour customerBalance.

1. Choisissez **Déployer**.

1. Après avoir choisi **Déployer**, choisissez **Tester** pour lancer l'éditeur de test.

1. Dans la boîte de dialogue **Configurer un événement de test**, sélectionnez **Créer un événement**. Dans **Nom de l'événement**, entrez le **ConnectMock**nom du test.

1. Dans le champ **JSON d'événement**, supprimez l'exemple de code et entrez le code suivant à la place. 

   ```
   {
   "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. Choisissez **Enregistrer**.

1. Sélectionnez **Tester)**. Vous devriez voir apparaître quelque chose de similaire à l'image suivante :  
![\[La section Source du code, le bouton de test.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambdafunctions-tutorial-code-source-response.png)

   Votre solde sera différent. Le code génère un nombre aléatoire.

### Étape 2 : ajouter votre fonction Lambda à Amazon Connect
<a name="tutorial-invokelambda-step2"></a>

1. Accédez à la console Amazon Connect, à l'adresse [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/). 

1. Choisissez l'alias de votre instance Amazon Connect.  
![\[Page Instances du centre de contact virtuel Amazon Connect, alias d'instance.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/instance.png)

1. Dans le menu de navigation, choisissez **Flux**.

1. Dans la AWS Lambda section, utilisez la liste déroulante **Lambda Functions** pour sélectionner. **MyFirstConnectLambda**  
![\[La page des flux, la section AWS Lambda.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-add-myfirstconnectlambda.png)

1. Choisissez **Ajouter une fonction Lambda**.

### Étape 3 : créer le flux de contacts
<a name="tutorial-invokelambda-step3"></a>

L'image suivante est un exemple du flux que vous allez créer en suivant les étapes de cette procédure. Il contient les blocs suivants : **Définir des attributs de contact**, **Lire l’invite**, **Invoquer la fonction AWS Lambda**, un autre bloc **Définir des attributs de contact**, un autre bloc **Lire l’invite** et enfin un bloc **Déconnecter**.

![\[Flux qui appelle le bloc de fonctions Invoke AWS Lambda.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-exampleFlow.png)


1. Connectez-vous au site Web d' Amazon Connect administration à l'adresse https ://*instance name*.my.connect.aws/.

1. Dans le menu de navigation, accédez à **Routage**, **Flux**, **Créer un flux de contacts**.

1. Faites glisser un bloc [Définir des attributs de contact](set-contact-attributes.md) sur la grille et configurez sa page de propriétés comme indiqué dans l'image suivante :   
![\[Un bloc Définir des attributs de contact.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-1.png)

   1. **Espace de noms** = **Défini par l'utilisateur**.

   1. **Attribut** = **companyName**.

   1. Choisissez **Définir manuellement**. **Valeur** = **GGG**.

   1. Choisissez **Enregistrer**.

1. Faites glisser un bloc [Lire l'invite](play.md) sur la grille et configurez sa page de propriétés comme indiqué dans l'image suivante :   
![\[Un bloc Lire l'invite.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-1.png)

   1. Choisissez **Text-to-speech ou discutez du texte**, **définissez manuellement** et définissez **Interpret comme** pour **SSML**. Entrez le texte suivant dans le champ correspondant au texte à prononcer :

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

   1. Choisissez **Enregistrer**.

1. Faites glisser un autre bloc [Lire l'invite](play.md) sur la grille et configurez sa page de propriétés comme indiqué dans l'image suivante :   
![\[Un bloc Lire l'invite.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-2.png)

   1. Choisissez **Text-to-speech ou discutez du texte**, **définissez manuellement** et définissez **Interpréter en tant que** **texte**. Entrez le texte suivant dans le champ correspondant au texte à prononcer :

      `Please try again later.`

   1. Choisissez **Enregistrer**.

1. Faites glisser un bloc [Fonction AWS Lambda ](invoke-lambda-function-block.md) sur la grille et configurez sa page de propriétés comme indiqué dans l'image suivante :   
![\[Un bloc de fonction Invoke AWS Lambda.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-exampleFlow-invoke-lambda.png)

   1. Choisissez **Sélectionner manuellement**, puis choisissez **MyFirstConnectLambda**dans la liste déroulante.

   1. Dans le champ **Clé de destination**, entrez **companyName**. (Cette valeur est envoyée à Lambda.)

   1. Choisissez le champ **Définir dynamiquement**

   1. Pour **Espace de noms**, sélectionnez **Défini par l'utilisateur**.

   1. Dans **Attribut**, entrez **companyName**.

   1. Choisissez **Enregistrer**.

1. Faites glisser un bloc [Définir des attributs de contact](set-contact-attributes.md) sur la grille, choisissez **Ajouter un autre attribut** et configurez sa page de propriétés comme indiqué dans l'image suivante :   
![\[Un bloc Définir des attributs de contact.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-2.png)

   1. **Espace de noms** = **Défini par l'utilisateur**. **Attribut** = **MyBalance**.

   1. Choisissez **Définir dynamiquement**. 

   1. **Espace de noms** = **Externe**.

   1. **Attribut** = **customerBalance**. C'est le résultat de Lambda.

   1. Choisissez **Ajouter un autre attribut**.

   1. **Espace de noms** = **Défini par l'utilisateur**.

   1. **Attribut** = **MyURL**.

   1. Sélectionnez **Définir dynamiquement**. **Espace de noms** = **Externe**. 

   1. **Attribut** = **websiteUrl**. C'est le résultat de Lambda.

   1. Choisissez **Enregistrer**.

1. Faites glisser un bloc [Lire l'invite](play.md) sur la grille et configurez sa page de propriétés comme indiqué dans l'image suivante :   
![\[Un bloc Lire l'invite.\]](http://docs.aws.amazon.com/fr_fr/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-3.png)

   1. Choisissez **Text-to-speech ou discutez du texte**, puis définissez **Interpret comme** sur **SSML**. Saisissez le texte suivant dans le champ :

      `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. Choisissez **Enregistrer**.

1. Faites glisser un bloc [Déconnecter/raccrocher](disconnect-hang-up.md) sur la grille. 

1. Connectez tous les blocs pour que votre flux ressemble à l'image présentée en haut de cette procédure.

1. Entrez **MyFirstConnectFlow**le nom, puis choisissez **Publier**.

1. Dans le menu de navigation, accédez à **Canaux**, **Numéros de téléphone**. 

1. Sélectionnez votre numéro de téléphone.

1. Sélectionnez **MyFirstConnectFlow**et choisissez **Enregistrer**.

Essayez-le maintenant. Appelez le numéro. Vous devriez entendre un message d'accueil, votre solde et le site Web à visiter.