

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.

# Actions prises en charge pour le service audio PSTN du SDK Amazon Chime
<a name="specify-actions"></a>

Vous pouvez spécifier différents types de signalisation et d'actions multimédias dans la réponse d'une AWS Lambda fonction. Chaque action possède des propriétés différentes. Les rubriques suivantes fournissent des exemples de code et expliquent comment utiliser les actions.

**Topics**
+ [Utilisation TransactionAttributes](transaction-attributes.md)
+ [Utilisation de l'enregistrement des appels](sip-apps-call-record.md)
+ [CallAndBridge](call-and-bridge.md)
+ [Hangup](hangup.md)
+ [JoinChimeMeeting](join-chime-meeting.md)
+ [ModifyChimeMeetingAttendee(sourdine et désactivation du son)](mute-unmute.md)
+ [Pause](pause.md)
+ [PlayAudio](play-audio.md)
+ [PlayAudioAndGetDigits](play-audio-get-digits.md)
+ [ReceiveDigits](listen-to-digits.md)
+ [RecordAudio](record-audio.md)
+ [SendDigits](send-digits.md)
+ [Speak](speak.md)
+ [SpeakAndGetDigits](speak-and-get-digits.md)
+ [StartBotConversation](start-bot-conversation.md)

# Utilisation TransactionAttributes
<a name="transaction-attributes"></a>

Vous utilisez la structure de `TransactionAttributes` données pour stocker des informations spécifiques à l'application, telles que l'état des appels ou les réunions IDs, puis vous transmettez ces données aux appels Lambda AWS . Cette structure élimine le besoin de stocker des données dans des bases de données externes telles qu'Amazon DynamoDB. 

`TransactionAttributes`sont [des objets JSON](https://www.w3schools.com/js/js_json_objects.asp) contenant des key/value pairs. The objects can contain a maximum of 100 key/value paires, et les objets ont une taille de charge utile maximale de 20 Ko. Les données d'une `TransactionAttributes` structure sont conservées pendant toute la durée d'une transaction.

Lorsqu'une AWS Lambda fonction passe `TransactionAttributes` à une application multimédia SIP, l'application met à jour tous les attributs enregistrés. Si vous transmettez un `TransactionAttributes` objet avec un jeu de clés existant, vous mettez à jour les valeurs enregistrées. Si vous transmettez un autre jeu de clés, vous remplacez les valeurs existantes par les valeurs de ce jeu de clés différent. Le passage d'une carte vide (`{}`) efface toutes les valeurs stockées.

**Topics**
+ [Paramètre TransactionAttributes](set-trans-attributes.md)
+ [Mise à jour TransactionAttributes](update-trans-attributes.md)
+ [Effacement TransactionAttributes](clear-trans-attributes.md)
+ [Manipulation ACTION\$1SUCCESSFUL événements](attribute-trans-success.md)
+ [Entrées non valides](attribute-trans-invalid.md)

# Paramètre TransactionAttributes
<a name="set-trans-attributes"></a>

L'exemple suivant montre comment associer une `TransactionAttributes` [PlayAudio](play-audio.md) action et transmettre les attributs d'une AWS Lambda fonction à une application multimédia SIP.

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "PlayAudio",
            "Parameters": {
                "ParticipantTag": "LEG-A",
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "mtg1-sipmedia-app-iad",
                    "Key": "Welcome3.wav"
                }
            }
        }
    ],
    "TransactionAttributes": {
        "key1": "value1",
        "key2": "value2"
    }
}
```

# Mise à jour TransactionAttributes
<a name="update-trans-attributes"></a>

Pour modifier le stockage`TransactionAttributes`, mettez à jour le contenu de l'objet JSON avec de nouvelles valeurs. Dans l'exemple suivant, les clés `NewKey1` et `NewKey2` sont ajoutées au`TransactionAttributes`. Ces clés sont associées aux valeurs `NewValue1` et`NewValue2`, respectivement.

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "PlayAudio",
            "Parameters": {
                "ParticipantTag": "LEG-A",
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "mtg1-sipmedia-app-iad",
                    "Key": "Welcome3.wav"
                }
            }
        }
    ],
    "TransactionAttributes": {
        "NewKey1": "NewValue1",
        "NewKey2": "NewValue2"
    }
}
```

Si, dans l'exemple précédent, vous êtes passé `NewValue1` à`key1`, la valeur existante de `key1` sera remplacée par`NewValue1`. Cependant, le passage d'une valeur à `NewKey1` crée une nouvelle paire clé/valeur.

# Effacement TransactionAttributes
<a name="clear-trans-attributes"></a>

Pour effacer le contenu de l'`TransactionAttributes`objet, transmettez au `TransactionAttributes` champ un objet JSON vide :

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "PlayAudio",
            "Parameters": {
                "ParticipantTag": "LEG-A",
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "mtg1-sipmedia-app-iad",
                    "Key": "Welcome3.wav"
                }
            }
        }
    ],
    "TransactionAttributes": {
    }
}
```

**Note**  
Vous ne pouvez pas effacer les données d'une `TransactionAttributes` structure en définissant sa valeur sur`null`. De plus, l'omission de la `TransactionAttribute` structure n'efface pas ses données. Passez toujours un objet JSON vide avec `TransactionAttributes` pour effacer les données de l'objet.

# Manipulation ACTION\$1SUCCESSFUL événements
<a name="attribute-trans-success"></a>

L'exemple suivant montre comment une personne réussit à [PlayAudio](play-audio.md) envoyer le fichier stocké dans le `TransactionAttributes` cadre du`CallDetails `.

```
{ 
    "SchemaVersion": "1.0", 
    "Sequence": 2, 
    "InvocationEventType": "ACTION_SUCCESSFUL", 
    "ActionData": { 
        "Type": "PlayAudio", 
        "Parameters": { 
            "AudioSource": { 
                "Type": "S3", 
                "BucketName": "mtg1-sipmedia-app-iad", 
                "Key": "Welcome3.wav" 
            }, 
            "Repeat": 1, 
            "ParticipantTag": "LEG-A" 
        } 
    }, 
    "CallDetails": { 
        "TransactionId": "mtg1-tx-id", 
        "TransactionAttributes": { 
            "key1": "value1", 
            "key2": "value2" 
        }, 
        "AwsAccountId": "166971021612", 
        "AwsRegion": "us-east-1", 
        "SipRuleId": "aafbd402-b7a2-4992-92f8-496b4563c492", 
        "SipMediaApplicationId": "e88f4e49-dd21-4a3f-b538-bc84eae11505", 
        "Participants": [ 
            { 
                "CallId": "bbff30c5-866a-41b5-8d0a-5d23d5e19f3e", 
                "ParticipantTag": "LEG-A", 
                "To": "+14345550101", 
                "From": "+14255550199", 
                "Direction": "Inbound", 
                "StartTimeInMilliseconds": "1644539405907", 
                "Status": "Connected" 
            } 
        ] 
    } 
}
```

# Entrées non valides
<a name="attribute-trans-invalid"></a>

L'exemple suivant montre une entrée non valide. Dans ce cas, l'objet JSON transmet trop d'éléments à une application multimédia SIP.

```
{ 
    "SchemaVersion": "1.0", 
    "Actions": [ 
        { 
            "Type": "PlayAudio", 
            "Parameters": { 
                "ParticipantTag": "LEG-A", 
                "AudioSource": { 
                    "Type": "S3", 
                    "BucketName": "mtg1-sipmedia-app-iad", 
                    "Key": "Welcome3.wav" 
                } 
            } 
        } 
    ], 
    "TransactionAttributes": { 
        "key1": "value1", 
        "key2": "value2", 
        "key3": "value3", 
        "key4": "value4", 
        "key5": "value5", 
        "key6": "value6", 
        "key7": "value7", 
        "key8": "value8", 
        "key9": "value9", 
        "key10": "value10", 
        "key11": "value11" 
    } 
}
```

L'exemple suivant montre la réponse à l'entrée précédemment donnée. Cette sortie est retransmise d'une application multimédia SIP à la fonction AWS Lambda qui a invoqué l'application.

```
{ 
    "SchemaVersion": "1.0", 
    "Sequence": 2, 
    "InvocationEventType": "INVALID_LAMBDA_RESPONSE", 
    "CallDetails": { 
        "TransactionId": "mtg1-tx-id", 
        "AwsAccountId": "166971021612", 
        "AwsRegion": "us-east-1", 
        "SipRuleId": "aafbd402-b7a2-4992-92f8-496b4563c492", 
        "SipMediaApplicationId": "e88f4e49-dd21-4a3f-b538-bc84eae11505", 
        "Participants": [ 
            { 
                "CallId": "72cbec69-f098-45d8-9ad6-e26cb9af663a", 
                "ParticipantTag": "LEG-A", 
                "To": "+14345550101", 
                "From": "+14255550199", 
                "Direction": "Inbound", 
                "StartTimeInMilliseconds": "1644540839987" 
            } 
        ] 
    }, 
    "ErrorType": "TransactionAttributesInvalidMapSize", 
    "ErrorMessage": "Transaction Attributes has too many mappings. Maximum number of mappings is 10" 
}
```

# Utilisation de l'enregistrement des appels
<a name="sip-apps-call-record"></a>

Les actions d'enregistrement d'appels pour les applications multimédia SIP vous permettent de créer des solutions d'enregistrement d'appels et de transcription post-appel pour une variété d'utilisations. Par exemple, vous pouvez enregistrer les appels du service client et les utiliser à des fins de formation.

Vous utilisez les actions d'enregistrement des appels de concert avec vos applications multimédia SIP. Vous pouvez également utiliser les actions à la demande ou en réponse à un événement SIP. 
+ Pour démarrer l'enregistrement à la demande d'un appel dans votre application multimédia SIP, vous utilisez l'[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice_chime_UpdateSipMediaApplication.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice_chime_UpdateSipMediaApplication.html)API pour appeler votre application et renvoyer l'[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartCallRecording.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StartCallRecording.html)action. 
+ Pour démarrer l'enregistrement des appels en réponse à un événement SIP, vous devez renvoyer l'`StartCallRecording`action dans votre application. 

Vous pouvez suspendre et reprendre un enregistrement en cours. Pour faire une pause, utilisez l'[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_PauseCallRecording.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_PauseCallRecording.html)action. Pour reprendre, utilisez l'`ResumeCallRecording`action. Chaque fois que vous interrompez ou reprenez un enregistrement, l'action capte une tonalité indiquant la pause ou la reprise. Lorsque vous faites une pause, l'action enregistre le silence, que le SDK Amazon Chime utilise pour suivre la durée de la pause et inclure les pauses dans votre facture. Vous pouvez suspendre et reprendre l'enregistrement aussi souvent que nécessaire.

Pour arrêter l'enregistrement des appels, vous devez retourner à l'[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StopCallRecording.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_StopCallRecording.html)action. Cependant, les enregistrements d'appels s'arrêtent automatiquement lorsque l'appel s'arrête, et dans ce cas, il n'est pas nécessaire de renvoyer explicitement l'`StopCallRecording`action. Vous ne pouvez démarrer et arrêter l'enregistrement qu'une seule fois pour un cycle d'appel individuel.

Le SDK Amazon Chime fournit les enregistrements d'appels vers un compartiment Amazon S3 que vous sélectionnez. Le bucket doit appartenir à votre AWS compte. Une fois qu'un appel s'arrête, l'application multimédia SIP envoie l'enregistrement dans le dossier spécifié dans le `Destination` paramètre de l'[StartCallRecording](start-call-recording.md)action. Le SDK Amazon Chime enregistre les appels dans un format WAV ouvert. Les appels qui enregistrent des pistes entrantes et sortantes utilisent le mode stéréo, la piste entrante étant sur le canal gauche et la piste sortante sur le canal droit. Si vous enregistrez uniquement la piste entrante ou sortante, le système utilise le mode mono.

**Note**  
Les enregistrements réalisés à l'aide de cette fonctionnalité peuvent être soumis aux lois ou réglementations relatives à l'enregistrement des communications électroniques. Il est de votre responsabilité et de celle de vos utilisateurs finaux de respecter toutes les lois applicables concernant l'enregistrement, notamment d'informer correctement tous les participants à une session ou à une communication enregistrée que la session ou la communication est enregistrée, et d'obtenir leur consentement.

## Facturation de l'enregistrement des appels
<a name="call-billing"></a>

Le SDK Amazon Chime vous facture à la minute la durée pendant laquelle l'enregistrement des appels est activé pour un segment d'appel, et cette durée inclut toutes les pauses. L'utilisation de l'enregistrement des appels vous est facturée une fois que l'enregistrement des appels est envoyé à votre compartiment Amazon S3.

# Enregistrement de pistes audio
<a name="record-legs"></a>

Vous pouvez enregistrer uniquement les pistes d'appel entrant ou sortant, ou les deux pistes d'un appel.

Cette image montre un appel entrant unijambiste classique ou non ponté. 

![\[Appel entrant qui communique uniquement avec une application multimédia SIP.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/call-record-sma-one-leg.png)


L'appel n'a qu'une seule étape avec un identifiant `callID` de **call-id-1**. La piste `INCOMING` audio est le son transmis par l'appelant à l'application multimédia SIP. La piste `OUTGOING` audio est le son envoyé par l'application multimédia SIP à l'appelant. Votre application multimédia SIP indique `CallId` l'appel que vous souhaitez enregistrer. Pour enregistrer le participant qui a passé l'appel, vous devez spécifier`INCOMING`. Pour enregistrer le participant qui répond à un appel, vous devez spécifier`OUTGOING`. Pour enregistrer les deux participants, spécifiez`BOTH`.

Cette image montre un appel ponté typique avec deux participants.

![\[Appel entrant qui communique avec une application multimédia SIP et un deuxième participant.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/call-record-sma-bridged.png)


****Dans cet exemple, l'appel comporte deux segments d'appel, call-id-1 et **call-id-2, et call-id-1** **est relié à call-id-2**.**** Cela crée quatre pistes audio, les flux audio entrants et sortants pour les deux appels IDs. Vous pouvez spécifier les pistes audio IDs et les appels à enregistrer. Par exemple, si vous souhaitez enregistrer la piste audio du participant appelé, vous devez l'`INCOMING`enregistrer en spécifiant **call-id-2** comme piste `CallId` et `INCOMING` comme piste.

Si vous souhaitez enregistrer tout ce que l'appelant entend, vous devez enregistrer la piste `OUTGOING` audio en spécifiant **call-id-1** comme piste `CallId` et `OUTGOING` comme piste. Si vous souhaitez enregistrer tout le son qu'ils ont `Caller` dit et entendu, vous devez enregistrer les pistes `BOTH` audio en spécifiant `call-id-1` « `CallId` et » `BOTH` comme piste.

# Exemples de cas d'utilisation
<a name="recording-use-cases"></a>

Les applications multimédia SIP fournissent des actions d'enregistrement d'appels comme éléments de base. Ils vous offrent la flexibilité nécessaire pour créer des solutions d'enregistrement des appels adaptées à vos cas d'utilisation professionnels. Les cas suivants illustrent certains scénarios d'utilisation courants.

**Topics**
+ [Cas 1 : enregistrement d'un appel unijambiste impliquant des actions SIP](#recording-case-1)
+ [Cas 2 : enregistrement audio sélectif lors d'un appel ponté](#recording-case-2)
+ [Cas 3 : enregistrement de plusieurs étapes d'appel](#recording-case-3)
+ [Cas 4 : enregistrement à la demande avec pause et reprise](#on-demand-pause-resume)

## Cas 1 : enregistrement d'un appel unijambiste impliquant des actions SIP
<a name="recording-case-1"></a>

Vous pouvez enregistrer un appelant et tout son généré par les actions de l'application multimédia SIP, telles que les [PlayAudioAndGetDigits](play-audio-get-digits.md) actions [PlayAudio](play-audio.md) et. Pendant l'enregistrement, si un appelant appuie sur un chiffre, l'enregistrement capture la tonalité de ce chiffre. Cet exemple utilise l'`PlayAudioAndGetDigits`action, mais la réponse vocale interactive (IVR) peut être une série complexe d'actions d'applications multimédia SIP.

Dans cet exemple, l'application multimédia SIP enregistre les deux pistes audio entre l'appelant et l'application multimédia SIP elle-même. L'enregistrement commence lorsque l'appel est établi et s'arrête lorsque l'appelant raccroche. La facturation commence lorsque l'appel est établi et s'arrête lorsque l'appelant raccroche.

![\[Schéma d'une application multimédia SIP enregistrant deux pistes audio, dans ce cas, entre un appelant et l'application elle-même.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/sma-recording-case-1.png)


## Cas 2 : enregistrement audio sélectif lors d'un appel ponté
<a name="recording-case-2"></a>

Vous pouvez enregistrer de manière sélective la piste audio d'un seul participant à un appel. Vous pouvez utiliser cette fonctionnalité pour activer de manière sélective l'enregistrement des appels uniquement pour un participant spécifique.

Dans cet exemple, l'application multimédia SIP enregistre les pistes audio entrantes entre l'appelé et l'application multimédia SIP elle-même en spécifiant **call-id-2** comme piste `CallId` et `INCOMING` comme piste. L'enregistrement des appels commence lorsque l'appelant est relié à l'appelé, et c'est également à ce moment-là que la facturation commence. L'enregistrement s'arrête lorsque l'appelé raccroche, et c'est également à ce moment-là que la facturation prend fin. Cet enregistrement contient uniquement la piste audio de l'appelé. 

![\[Schéma d'une application multimédia SIP enregistrant sélectivement une piste.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/sma-recording-case-2.png)


## Cas 3 : enregistrement de plusieurs étapes d'appel
<a name="recording-case-3"></a>

Vous pouvez enregistrer plusieurs étapes d'appel. Imaginons, par exemple, que vous reliez un appel à un participant. Lorsque ce participant raccroche, l'appel téléphonique est transféré à un autre participant. Vous pouvez activer l'enregistrement des appels pour les trois étapes d'appel. 

Cet exemple montre trois fichiers d'enregistrement distincts. L'enregistrement de la première partie de l'appel capture la conversation entre l'appelant, votre application et les deux participants qui ont participé à l'appel. L'enregistrement du deuxième segment d'appel capture la conversation entre l'appelant et le premier participant. L'enregistrement du troisième segment d'appel capture la conversation entre l'appelant et le deuxième participant. 

Ce cas crée trois segments d'appel, et la facturation s'applique au début et à la fin de chaque segment d'appel. En d'autres termes, le système fournit trois enregistrements à votre compartiment S3, et chacun vous est facturé. 

![\[Schéma d'une application multimédia SIP enregistrant plusieurs étapes d'appel.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/sma-recording-case-3.png)


## Cas 4 : enregistrement à la demande avec pause et reprise
<a name="on-demand-pause-resume"></a>

Vous pouvez démarrer, arrêter, suspendre et reprendre l'enregistrement des appels à la demande à l'aide de l'[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API. Vous pouvez créer une application client qui appelle l'`UpdateSipMediaApplicationCall`API et appelle votre application multimédia SIP pour renvoyer les actions d'enregistrement des appels.

Vos utilisateurs finaux utilisent l'application cliente pour contrôler l'enregistrement des appels. Par exemple, dans un centre d'appels, un agent utiliserait une application client de bureau pour déclencher des actions d'enregistrement d'appels à la demande. Dans l'exemple du centre d'appels, l'agent peut demander à l'appelant l'autorisation d'enregistrer l'appel téléphonique, et il peut cliquer dans l'application cliente pour démarrer l'enregistrement une fois que l'appelant est d'accord. Dans un autre exemple, l'appelant peut avoir besoin de fournir des informations telles qu'un numéro de sécurité sociale (SSN). Cependant, la politique du centre d'appels exige que l'agent n'enregistre pas d'informations telles que le SSN d'un client. L'agent peut cliquer sur l'application pour suspendre l'enregistrement pendant que le client fournit les informations, puis cliquer à nouveau pour reprendre l'enregistrement. Une fois que l'agent a traité la demande de l'appelant, il clique sur l'application pour arrêter l'enregistrement et raccroche l'appel.

Dans ce cas d'utilisation, l'application multimédia SIP enregistre les pistes audio entre l'appelant et l'application multimédia SIP. Comme la `call-id-1` jambe est attachée à la `call-id-2` jambe, le système enregistre le son sur les deux jambes, celui de l'appelant et celui de l'appelant. L'enregistrement et la facturation commencent lorsque l'`UpdateSipMediaApplicationCall`API appelle l'`StartCallRecording`action. L'enregistrement et la facturation s'arrêtent lorsque l'`UpdateSipMediaApplicationCall`API appelle l'`StopCallRecording`action. Pour rappel, la mise en pause de l'enregistrement ne modifie pas sa durée et toutes les pauses vous sont facturées. 

![\[Schéma d'une application multimédia SIP enregistrant à la demande avec enregistrement suspendu et repris.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/sma-recording-on-demand.png)


# Actions d'enregistrement d'appels pour les applications multimédia SIP
<a name="use-recording-apis"></a>

Vous pouvez spécifier différentes actions d'enregistrement d'appels dans une réponse à partir de la AWS Lambda fonction de votre application multimédia SIP. Les rubriques suivantes fournissent des exemples de code et expliquent comment utiliser les actions.

**Topics**
+ [StartCallRecording](start-call-recording.md)
+ [StopCallRecording](stop-call-recording.md)
+ [PauseCallRecording](pause-call-recording.md)
+ [ResumeCallRecording](resume-call-recording.md)

# StartCallRecording
<a name="start-call-recording"></a>

L'`StartCallRecording`action lance l'enregistrement d'un segment d'appel. Vous démarrez l'enregistrement des appels dans vos applications multimédia SIP, soit à la demande, soit en réponse à un événement SIP.
+ Pour démarrer l'enregistrement à la demande d'un appel, vous utilisez l'`UpdateSipMediaApplication`API pour appeler votre application et renvoyer l'`StartCallRecording`action.
+ Pour démarrer l'enregistrement des appels en réponse à un événement SIP, vous devez renvoyer l'`StartCallRecording`action dans votre application. 

Vous spécifiez si vous souhaitez enregistrer la piste audio de l'étape entrante, de la partie sortante ou des deux. Les sections suivantes expliquent comment utiliser cette `StartCallRecording` action.

**Note**  
Les enregistrements réalisés à l'aide de cette fonctionnalité peuvent être soumis aux lois ou réglementations relatives à l'enregistrement des communications électroniques. Il est de votre responsabilité et de celle de vos utilisateurs finaux de respecter toutes les lois applicables concernant l'enregistrement, notamment d'informer correctement tous les participants à une session ou à une communication enregistrée que la session ou la communication est enregistrée, et d'obtenir leur consentement.

**Topics**
+ [Demander une StartCallRecording action](#request-start)
+ [Spécification d'une destination d'enregistrement](#recording-destination)
+ [Octroi d'autorisations de compartiment Amazon S3](#grant-s3-perms)
+ [Action, réponse réussie](#action-successful)
+ [Réponse à une erreur d'action](#action-error)

## Demander une StartCallRecording action
<a name="request-start"></a>

L'exemple suivant montre comment demander l'`StartCallRecording`action pour les `BOTH` pistes.

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "StartCallRecording",
            "Parameters":
            {
                "CallId": "call-id-1",
                "Track": "BOTH",
                "Destination":
                {
                    "Type": "S3",
                    "Location": "valid-bucket-name-and-optional-prefix"
                }
            }
        }
    ]
}
```

**CallId**  
*Description* — `CallId` du participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**Piste**  
*Description* — Audio `Track` de l'enregistrement de l'appel.  
*Valeurs autorisées* — `BOTH``INCOMING`, ou `OUTGOING`  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**Type de destination**  
*Description* — Type de destination. Seul Amazon S3 est autorisé.  
*Valeurs autorisées* — Amazon S3  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**Destination. Emplacement**  
*Description* — Un compartiment Amazon S3 valide et un préfixe de clé Amazon S3 facultatif. Le bucket doit disposer d'autorisations pour accéder au principal service Amazon Chime SDK Voice Connector, voiceconnector.chime.amazonaws.com.  
*Valeurs autorisées* : chemin Amazon S3 valide pour lequel le SDK Amazon Chime dispose des autorisations relatives aux actions et. `s3:PutObject` `s3:PutObjectAcl`  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

## Spécification d'une destination d'enregistrement
<a name="recording-destination"></a>

Le SDK Amazon Chime fournit les enregistrements d'appels à votre compartiment Amazon S3. Le bucket doit appartenir à votre AWS compte. Vous spécifiez l'emplacement du compartiment dans le `Destination` paramètre de l'`StartCallRecording`action. Le `Type` champ du `Destination` paramètre doit être`S3`. Le `Location` champ comprend votre compartiment Amazon S3, plus un préfixe de clé d'objet facultatif dans lequel l'enregistrement des appels est transmis. 

L'application multimédia SIP utilise la date et l'heure spécifiées`Location`, la date et l'heure du segment d'appel, l'ID de transaction et l'ID d'appel pour formater la clé d'objet Amazon S3. La réponse à l'`StartCallRecording`action renvoie la clé complète de l'objet Amazon S3.

Lorsque vous fournissez uniquement le compartiment Amazon S3 `Location` sur le terrain, l'application multimédia SIP ajoute un préfixe par défaut`Amazon-Chime-SMA-Call-Recordings`, au chemin Amazon S3. L'application multimédia SIP ajoute également l'année, le mois et le jour de début de l'appel pour aider à organiser les enregistrements. L'exemple suivant montre le format général d'un chemin Amazon S3 avec le préfixe par défaut. Cet exemple utilise `myRecordingBucket` comme `Location` valeur.

```
myRecordingBucket/Amazon-Chime-SMA-Call-Recordings/2019/03/01/2019–03–01–17–10–00–010_c4640e3b–1478–40fb-8e38–6f6213adf70b_7ab7748e–b47d–4620-ae2c–152617d3333c.wav
```

L'exemple suivant montre les données représentées dans le chemin Amazon S3 qui enregistre les appels.

```
s3Bucket/Amazon-Chime-SMA-Call-Recordings/year/month/date/year-month-date-hour-minute-second-millisecond_transactionId_callId.wav
```

Lorsque vous fournissez le compartiment Amazon S3 et le préfixe de clé d'objet `Location` sur le terrain, l'application multimédia SIP utilise votre préfixe de clé d'objet dans le chemin Amazon S3 de destination au lieu du préfixe par défaut. L'exemple suivant montre le format général d'un appel enregistrant le chemin Amazon S3 avec votre préfixe. Par exemple, vous pouvez spécifier myRecordingBucket /TechnicalSupport/English comme. `Location` 

```
myRecordingBucket/technicalSupport/english/2019/03/01/2019–03–01–17–10–00–010_c4640e3b1478–40fb–8e38-6f6213adf70b_7ab7748e–b47d–4620–ae2c–152617d3333c.wav
```

L'exemple suivant montre les données du chemin Amazon S3.

```
s3Bucket/yourObjectKeyPrefix/year/month/date/year-month-date-hour-minute-second-millisecond_transactionId_callId.wav
```

L'enregistrement envoyé à votre compartiment Amazon S3 contient des [métadonnées d'objet Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) supplémentaires concernant le segment d'appel. Le tableau suivant répertorie les métadonnées d'objets Amazon S3 prises en charge.


| Nom | Description | 
| --- | --- | 
| identifiant de transaction | Numéro de transaction de l'appel téléphonique | 
| identifiant d'appel | CallId du participant à l' CallDetails invocation de la AWS Lambda fonction | 
| durée d'enregistrement | Durée d'enregistrement des appels en secondes | 
| recording-audio-file-format | Format de fichier audio d'enregistrement d'appels représenté par le type de média Internet | 

## Octroi d'autorisations de compartiment Amazon S3
<a name="grant-s3-perms"></a>

Votre compartiment Amazon S3 de destination doit appartenir au même AWS compte que votre application. En outre, l'action doit donner une `s3:PutObject` `s3:PutObjectAcl` autorisation au responsable du service Amazon Chime SDK Voice Connector,. `voiceconnector.chime.amazonaws.com` L'exemple suivant accorde l'autorisation appropriée. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SIP media applicationRead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [                
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
	    "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

Le service audio PSTN lit et écrit dans votre compartiment S3 pour le compte de votre application Sip Media. Pour éviter le [problème des adjoints confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), vous pouvez limiter les autorisations du bucket S3 à une seule application multimédia SIP.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SIP media applicationRead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [                
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
	    "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:chime:us-east-1:111122223333:sma/sip-media-application-id"
                }
            }
        }
    ]
}
```

------

## Action, réponse réussie
<a name="action-successful"></a>

Lorsque l'enregistrement d'appel est démarré avec succès sur un segment d'appel, l'application multimédia SIP invoque une AWS Lambda fonction du type d'`ACTION_SUCCESSFUL`événement. L'emplacement de l'enregistrement des appels est renvoyé dans la réponse. 

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type" : "StartCallRecording",
        "Parameters": {
            "CallId": "call-id-1",
            "Track": "BOTH",
            "Destination": {
                "Type": "S3",
                "Location": "valid-bucket-name"
            }
        }
        "CallRecordingDestination": {
            "Type": "S3",
            "Location": "call-recording-bucket-and-key"
        }
    }
    "CallDetails": {
        ...
    }
}
```

## Réponse à une erreur d'action
<a name="action-error"></a>

En cas d'erreur de validation, l'application multimédia SIP appelle la AWS Lambda fonction avec le message d'erreur approprié. Le tableau suivant répertorie les messages d'erreur.




| Erreur | Message | Raison | 
| --- | --- | --- | 
| `InvalidActionParameter` | `CallId`le paramètre d'action n'est pas valide | Tout paramètre n'est pas valide. | 
| `SystemException` | Erreur système lors de l'exécution d'une action. | Un autre type d'erreur système s'est produit lors de l'exécution d'une action. | 

Lorsque l'action ne parvient pas à enregistrer le contenu multimédia lors d'un segment d'appel, l'application multimédia SIP invoque une AWS Lambda fonction du type d'`ActionFailed`événement. 

L'exemple suivant montre une réponse d'erreur typique.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 5,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type" : "StartCallRecording",
        "Parameters": {
            "CallId": "call-id-1",
            "Track": "BOTH",
            "Destination": {
                "Type": "S3",
                "Location": "valid-bucket-name"
            }
        }
        "Error": "NoAccessToDestination: Error while accessing destination"
    }
    "CallDetails": {
        ...
    }
}
```

Voir un exemple pratique sur GitHub : [https://github.com/aws-samples/amazon-chime-sma-on-demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# StopCallRecording
<a name="stop-call-recording"></a>

L'`StopCallRecording`action arrête l'enregistrement d'un segment d'appel. L'enregistrement s'arrête automatiquement à la fin d'un appel, et votre application n'a pas besoin de renvoyer explicitement l'`StopCallRecording`action. Une fois que l'enregistrement d'un segment d'appel s'arrête, il ne peut pas recommencer et l'enregistrement est livré à la destination spécifiée dans l'`StartCallRecording`action. 

L'exemple suivant arrête l'enregistrement pour le segment `call-id-1` d'appel. 

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "StopCallRecording",
            "Parameters": {
                "CallId": "call-id-1"
            }
        }
    ]
}
```

**CallId**  
*Description* — `CallId` du participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

Voir un exemple pratique sur GitHub : [https://github.com/aws-samples/amazon-chime-sma-on-demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# PauseCallRecording
<a name="pause-call-recording"></a>

L'`PauseCallRecording`action interrompt l'enregistrement d'un segment d'appel. Chaque fois que vous interrompez un enregistrement, celui-ci capte une tonalité indiquant la pause. Lorsque vous faites une pause, l'enregistrement continue, mais il ne capture que le silence. La suspension de l'enregistrement n'a aucune incidence sur la durée totale de l'enregistrement. Vous pouvez suspendre et reprendre l'enregistrement aussi souvent que nécessaire.

L'exemple suivant met en pause l'enregistrement. 

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "PauseCallRecording",
            "Parameters": {
                "CallId": "call-id-1"
            }
        }
    ]
}
```

**CallId**  
*Description* — `CallId` du participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

Voir un exemple pratique sur GitHub : [https://github.com/aws-samples/amazon-chime-sma-on-demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# ResumeCallRecording
<a name="resume-call-recording"></a>

L'`ResumeCallRecording`action reprend l'enregistrement d'un segment d'appel. Avant le redémarrage de l'enregistrement, une courte tonalité est jouée. Vous pouvez suspendre et reprendre un enregistrement plusieurs fois pendant toute la durée de la phase d'appel. 

L'exemple suivant reprend l'enregistrement. 

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "ResumeCallRecording",
            "Parameters": {
                "CallId": "call-id-1"
            }
        }
    ]
}
```

**CallId**  
*Description* — `CallId` du participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

Voir un exemple pratique sur GitHub : [https://github.com/aws-samples/amazon-chime-sma-on-demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# CallAndBridge
<a name="call-and-bridge"></a>

Crée un appel sortant vers un numéro de téléphone PSTN ou vers une liaison SIP configurée comme connecteur vocal Amazon Chime SDK ou groupe de connecteurs vocaux Amazon Chime SDK, puis le relie à un appel existant. Vous l'utilisez `PSTN` lorsque vous appelez un numéro de téléphone et `AWS` lorsque vous appelez une ligne principale SIP. 

Un appel existant peut être un appel sortant créé à l'aide de l'[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html)API ou un appel entrant créé par une règle SIP qui invoque la AWS Lambda fonction avec un événement. `NewInboundCall` Lorsque vous implémentez une `CallAndBridge` action sur un point de terminaison d'un connecteur vocal ou d'un groupe de connecteurs vocaux, vous devez spécifier le numéro de ressource Amazon (ARN) du connecteur vocal ou du groupe de connecteurs vocaux.

Vous pouvez également ajouter des en-têtes SIP personnalisés aux appels sortants et AWS Lambda aux fonctions. Les en-têtes personnalisés vous permettent de transmettre des valeurs telles que les numéros d'étage et les codes postaux. Pour plus d'informations sur les en-têtes personnalisés, reportez-vous à[Utilisation des en-têtes SIP dans le service audio PTSN du SDK Amazon Chime](sip-headers.md).

Lorsque vous utilisez la fonction d'appel et de pont, il est important de noter que chaque appel est pris en compte dans le compte du nombre d'appels simultanés actifs utilisé pour calculer les limites d'appels actifs du SMA. Dans cette optique, lorsque vous gérez vos limites d'appels actives SMA pour les appels et le pont, vous devez compter 2 appels pour chaque appel et chaque action de pont. Pour plus d'informations, consultez la section [Trunking SIP et quotas vocaux](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html#chm-sdk-pstn-quotas) dans le *Références générales AWS*.

L'exemple de code suivant montre une action typique qui relie un point de terminaison PSTN.

```
{
    "SchemaVersion": "1.0",
    "Actions": [{
            "Type": "CallAndBridge",
            "Parameters": {
                "CallTimeoutSeconds": 30,
                "CallerIdNumber": "e164PhoneNumber", // required            
                "Endpoints": [{
                    "BridgeEndpointType": "PSTN", // required
                    "Uri": "e164PhoneNumber", // required                       
                }],
            }
        }
    ]
}
```

L'exemple suivant montre une action typique qui utilise un connecteur vocal ou un groupe de connecteurs vocaux, ainsi qu'un en-tête SIP personnalisé.

```
{
   "SchemaVersion":"1.0",
   "Actions":[
      {
         "Type":"CallAndBridge",
         "Parameters":{
            "CallTimeoutSeconds":30,
            "CallerIdNumber": "e164PhoneNumber", // required
            "RingbackTone": { // optional
                    "Type": "S3",
                    "BucketName": "s3_bucket_name",
                    "Key": "audio_file_name"
                },
            "Endpoints":[
               {
                  "BridgeEndpointType":"AWS", // enum type, required                                  
                  "Arn":"arn:aws:chime:us-east-1:0123456789101:vc/abcdefg1hijklm2nopq3rs" //VC or VCG ARN, required for AWS endpoints
                  "Uri":"ValidString", // required, see description below  
               }
            ],
            "SipHeaders": { 
                "x-String":"String"
            }
         }
      }
   ]
}
```

**CallTimeoutSeconds**  
*Description* — Intervalle avant l'expiration d'un appel. Le minuteur démarre lors de la configuration de l'appel.  
*Valeurs autorisées* : entre 1 et 120 inclus  
*Obligatoire* — Non  
*Valeur par défaut* : 30

**CallerIdNumber**  
*Description* — Un numéro appartenant au client, ou le numéro From du A Leg  
*Valeurs autorisées* : numéro de téléphone valide au format E.164  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**Endpoints**  
*Description* — Les points de terminaison d'un appel  
*Valeurs autorisées* :   
+ `BridgeEndpointType`— `AWS` pour les connecteurs vocaux et les groupes de connecteurs vocaux, sinon`PSTN`.
+ `Arn`— L'ARN d'un connecteur vocal ou d'un groupe de connecteurs vocaux. Nécessaire uniquement lorsque vous l'utilisez `AWS` en tant que`BridgeEndpointType`. 
+ `Uri`— La valeur de l'URI dépend du type de point de terminaison.

  Pour les `PSTN` points de terminaison, l'URI doit être un numéro de téléphone E.164 valide.

  Pour les `AWS` points de terminaison, la valeur de l'URI définit la `user` partie du`Request-URI`. Vous devez utiliser le format [Augmented Backus-Naur](https://datatracker.ietf.org/doc/html/rfc2234). Longueur requise : entre 1 et 36, inclus. Utilisez les valeurs suivantes : `a-z, A-Z, 0-9, &, =, +, $, /, %, -, _, !, ~, *, ` (`,`), (`.`)

  La valeur d'hôte de `Request-URI` est dérivée des routes entrantes du connecteur vocal cible. L'exemple suivant montre une `CallAndBridge` action avec un `AWS` point de terminaison.

  ```
  {
     "SchemaVersion":"1.0",
     "Actions":[
        {
           "Type":"CallAndBridge",
           "Parameters":{
              "CallTimeoutSeconds":30,
              "CallerIdNumber": "+18005550122",
              "Endpoints":[
                 {
                    "BridgeEndpointType":"AWS",                                   
                    "Arn":"arn:aws:chime:us-east-1:0123456789101:vc/abcdefg1hijklm2nopq3rs", 
                    "Uri":"5550"   
                 }
              ],
              "SipHeaders": { 
                  "x-String":"String"
              }
           }
        }
     ]
  }
  ```

  Pour plus d'informations sur les routes entrantes et les connecteurs vocaux, consultez la section [Modification des paramètres du connecteur vocal du SDK Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/ag/edit-voicecon.html).
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**SipHeaders**  
*Description* — Vous permet de transmettre des valeurs supplémentaires. À utiliser uniquement avec le type de `AWS` point de terminaison.  
*Valeurs autorisées* — En-tête SIP valide  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

L'exemple suivant montre une `CallAndBridge` action réussie qui utilise un point de terminaison PSTN :

```
{
   "SchemaVersion": "1.0",
   "Sequence": 3,
   "InvocationEventType": "ACTION_SUCCESSFUL",
   "ActionData": {
      "Type": "CallAndBridge",
      "Parameters": {
         "CallTimeoutSeconds": 30,
         "CallerIdNumber": "e164PhoneNumber",
         "Endpoints":[
            {
               "BridgeEndpointType": "PSTN",
               "Uri": "e164PhoneNumber"               
            }
         ],
         "CallId": "call-id-1"
      }
   },
   "CallDetails":{
      .....
      .....
      "Participants":[
         {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A",
            .....   
            "Status": "Connected"
         },
         {
            "CallId": "call-id-2",
            "ParticipantTag": "LEG-B",
            .....
            "Status": "Connected"
         }
      ]
   }
}
```

L'exemple suivant montre une `CallAndBridge` action qui a échoué.

```
{
   "SchemaVersion": "1.0",
   "Sequence":2,
   "InvocationEventType": "ACTION_FAILED",
      "ActionData":{
      "Type": "CallAndBridge",
      "Parameters":{
         "CallTimeoutSeconds": 30,
         "CallerIdNumber": "e164PhoneNumber",
         "Endpoints": [
            {
               "BridgeEndpointType": "PSTN",
               "Uri": "e164PhoneNumber"           
            }
         ],
         "CallId": "call-id-1"
      },
      "ErrorType": "CallNotAnswered",
      "ErrorMessage": "Call not answered"
   },
   "CallDetails":{
      .....
      .....
      "Participants":[
         {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A",
            .....   
         }
      ]
   }
}
```

## Flux d'appels
<a name="call-bridge-flows"></a>

L'`CallAndBridge`action fournit une signalisation d'appel et une expérience audio différentes pour un segment d'appel existant, en fonction des paramètres et du fait que le segment est connecté ou non.

Le schéma suivant montre les flux d'appels avec différents paramètres lorsqu'un segment d'appel entrant A est déjà connecté.

![\[Le flux d'une réponse à un appel tout au long de l'CallAndBridgeaction.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/call-bridge-ans-2.png)


Le schéma suivant montre le flux d'appels pour un appel sans réponse.

![\[Le flux d'un appel sans réponse tout au long de l'CallAndBridgeaction.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/SMA_Bridging_NotAns.png)


**Informations supplémentaires**  
Souvenez-vous de ces faits concernant l'`CallAndBridge`action.
+ `CallTimeoutSeconds`— Ce temporisateur démarre lorsque l'invitation SIP est envoyée sur le B-Leg. Vous pouvez définir la valeur cible souhaitée, mais cette valeur peut être ignorée par les transporteurs en amont.
+ `CallerIdNumber`— Ce numéro de téléphone doit appartenir au client ou être le numéro de téléphone d'un A-Leg.
+ **Comportement de raccrochage et cas** extrêmes : si un segment d'appel raccroche, l'autre branche d'appel ne raccroche pas automatiquement. Lorsqu'un `Hangup` événement est envoyé à la AWS Lambda fonction, le segment restant doit être déconnecté indépendamment. Si un segment d'appel est laissé en suspens, l'appel est facturé jusqu'à ce qu'il soit raccroché. Par exemple, le scénario suivant peut entraîner des frais imprévus :
  + Vous essayez de vous connecter à un numéro de téléphone de destination. La destination est occupée et envoie l'appel directement vers la messagerie vocale. Du point de vue du service audio, accéder à la messagerie vocale est une réponse à un appel. Le A-Leg raccroche, mais le B-Leg continue d'écouter le message vocal. Pendant que le B-Leg écoute, vous êtes facturé.
  + Il est recommandé d'utiliser la AWS Lambda fonction, ou le correspondant à l'autre bout de l'appel, pour raccrocher chaque segment d'appel indépendamment.
+ **Facturation** — Les frais suivants vous sont facturés lorsque vous utilisez `CallAndBridge` :
  + Minutes d'appel actives pour chaque segment d'appel créé (A-Leg, B-Leg, etc.) vers le PSTN.
  + Minutes d'utilisation du service audio.

Consultez des exemples pratiques sur GitHub :
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging)
+ [https://github.com/aws-samples/amazon-chime-sma-call-transfert](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-on-enregistrement de la demande](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# Hangup
<a name="hangup"></a>

Envoie une `Hangup` valeur avec un `SipStatusCode` à n'importe quel segment d'un appel.

Lorsque le service audio exécute une `Hangup` action sur un segment d'appel :
+ Pour un appel comportant un seul segment d'appel, l'application multimédia SIP invoque la AWS Lambda fonction avec un `HANGUP` événement et ignore la réponse. L'appel est ensuite déconnecté.
+ Pour un segment d'appel (étape A) relié à un autre segment d'appel (étape B), si l'`Hangup`action est associée au segment d'appel ponté (étape B), le service audio PSTN déconnecte le segment d'appel ponté, puis invoque la fonction Lambda avec un `HANGUP` événement pour l'étape B. Le service audio PSTN exécute ensuite toutes les actions renvoyées par cet appel Lambda.
+ Pour un segment d'appel (étape A) relié à un autre segment d'appel (étape B), si l'`Hangup`action est associée au segment d'appel d'origine (étape A), le service audio PSTN déconnecte le segment d'appel d'origine, puis invoque la fonction Lambda avec un `HANGUP` événement pour le segment A. Le service audio PSTN exécute ensuite toutes les actions renvoyées par cet appel Lambda.
+ Pour un segment d'appel qui a rejoint une réunion à l'aide de l'`JoinMeeting`action, si l'`Hangup`action est associée à l'étape de réunion (généralement l'étape B), l'appelant se déconnecte de la réunion et reçoit un `ACTION_SUCCESSFUL` événement pour l'`Hangup`action.

L'exemple suivant montre une `Hangup` action typique.

```
{
    "Type": "Hangup",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "SipResponseCode": "0"
    }
}
```

**CallId**  
*Description* — `CallId` du participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**ParticipantTag**  
*Description* — `ParticipantTag` de l'un des participants connectés au `CallDetails`  
*Valeurs autorisées* — `LEG-A` ou `LEG-B`  
*Obligatoire* — Non  
*Valeur par défaut* — `ParticipantTag` de la valeur `callLeg` ignorée invoquée si vous spécifiez `CallId`

**SipResponseCode**  
*Description* — Tous les codes de réponse SIP pris en charge  
*Valeurs autorisées* : 480 : non disponible ; 486 : occupé ; 0 : résiliation normale  
*Obligatoire* — Non  
*Valeur par défaut* — 0

Une fois qu'un utilisateur a terminé un appel, l'application multimédia SIP invoque une AWS Lambda fonction dont le code est répertorié dans[Fin d'un appel à l'aide du service audio PSTN du SDK Amazon Chime](case-5.md).

Consultez des exemples pratiques sur GitHub :
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging)
+ [https://github.com/aws-samples/amazon-chime-sma-call-transfert](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notifications d'appels](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-enregistrement de la demande](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# JoinChimeMeeting
<a name="join-chime-meeting"></a>

Participez à une réunion du SDK Amazon Chime en fournissant le jeton de connexion au participant. Pour ce faire, vous devez appeler le AWS SDK au [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html) et [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateAttendee.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateAttendee.html) APIs pour obtenir le jeton et le transmettre dans l'action. Consultez l'exemple suivant. 

**Note**  
Vous ne pouvez pas exécuter cette action sur un appel ponté.

```
{
    "Type": "JoinChimeMeeting",
    "Parameters": {
        "JoinToken": "meeting-attendee-join-token",
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "MeetingId": "meeting-id"
    }
}
```

**JoinToken**  
*Description* — Un jeton de participation valide du participant à la réunion du SDK Amazon Chime  
*Valeurs autorisées* : jeton de jointure valide  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**CallId**  
*Description* — `CallId` du participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**ParticipantTag**  
*Description* — `ParticipantTag` de l'un des participants connectés au `CallDetails`  
*Valeurs autorisées* — `LEG-A`  
*Obligatoire* — Non  
*Valeur par défaut* — `ParticipantTag` de la valeur `callLeg` ignorée invoquée si vous spécifiez `CallId`

**MeetingId**  
*Description* — Un identifiant de réunion du SDK Amazon Chime valide associé au. `JoinToken` Si la réunion a été créée à l'aide d'une API dans l'espace de noms [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html), l'identifiant de réunion n'est pas requis. Si la réunion a été créée à l'aide d'une API dans l'espace de noms [Amazon Chime SDK Meetings](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Meetings.html), l'identifiant de réunion est requis. La réunion est jointe à l'aide du point de terminaison API utilisé pour créer la réunion.  
*Valeurs autorisées* : identifiant de réunion valide.  
*Obligatoire* — Non  
*Valeur par défaut* : aucune.

L'application multimédia SIP invoque toujours une AWS Lambda fonction après avoir exécuté cette action. Il renvoie soit le type d'événement, `ACTION_SUCCESSFUL` soit le type d'événement d'`ACTION_FAILED`invocation. L'exemple suivant montre une structure d'événement d'invocation réussie.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEvent": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "JoinChimeMeeting",
        "Parameters": {
            "JoinToken": "meeting-attendee-join-token",
            "CallId": "call-id-1"
            "ParticipantTag": "LEG-A"
        }
    }
    "CallDetails": {
        ...
    }
}
```

**Gestion des erreurs**  
Lorsqu'une erreur de validation se produit lors de la transition d'une réunion, l'application SIP appelle sa AWS Lambda fonction avec l'un des messages d'erreur présentés dans le tableau suivant.


|  Erreur  |  Message  |  Raison  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  `JoinToken`la valeur du paramètre n'est pas valide.  |  L'un des autres paramètres de l'action n'est pas valide ou est absent.  | 
|  `SystemException`  |  Erreur système lors de l'exécution de l'action.  |  Un autre type d'erreur système s'est produit lors de l'exécution de l'action.  | 

L'exemple suivant illustre un événement de défaillance typique.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEvent": "ACTION_FAILED",
    "ActionData": {
        "Type": "JoinChimeMeeting",
        "Parameters": {
            "JoinToken": "meeting-attendee-join-token",
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A"
        },
        "Error": "ErrorJoiningMeeting: Error while joining meeting."
    }
    "CallDetails": {
        ...
    }
}
```

Voir un exemple pratique sur GitHub : [https://github.com/aws-samples/amazon-chime-sma-update-call](https://github.com/aws-samples/amazon-chime-sma-update-call)

# ModifyChimeMeetingAttendee(sourdine et désactivation du son)
<a name="mute-unmute"></a>

Permet à l'application multimédia SIP de modifier le statut d'un participant à la téléphonie en fournissant l'identifiant de réunion du SDK Amazon Chime et la liste des participants.

**Note**  
Cette action prend actuellement en charge les opérations de désactivation et de désactivation du son sur les participants au téléphone. En outre, l'utilisateur doit être joint à une réunion à l'aide de l'`JoinChimeMeeting`action. Cette action peut être effectuée sur un `participantTag=“LEG-B”` ou un correspondant`CallId`. 

Cette action s'applique uniquement au CallLeg qui rejoint la réunion depuis l'application multimédia SIP vers `"+` *13605550122* `"` LEG-B, ou au segment joint depuis l'application multimédia SIP à la réunion.

```
{
"SchemaVersion": "1.0",
  "Actions": [
    {
      "Type" : "ModifyChimeMeetingAttendees",
      "Parameters" : {
        "Operation": "Mute",
        "MeetingId": "meeting-id",
        "CallId": "call-id",
        "ParticipantTag": LEG-B",
        "AttendeeList": ["attendee-id-1", "attendee-id-2"]
      }
    }
  ]
}
```

**Operation**  
*Description* — L'opération à effectuer sur la liste des participants  
*Valeurs autorisées* : muet, non muet  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**MeetingId**  
*Description* — L'identifiant de la réunion à laquelle appartiennent les participants  
*Valeurs autorisées* : identifiant de réunion valide. La personne qui active ou désactive le son doit également participer à la réunion.  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**CallId**  
*Description* — L'identifiant de la réunion à laquelle appartiennent les participants  
*Valeurs autorisées* : un identifiant d'appel valide.  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**ParticipantTag**  
*Description* — Le tag attribué au participant.  
*Valeurs autorisées* : balise valide.  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**AttendeeList**  
*Description* — Liste des participants IDs à désactiver ou rétablir le son  
*Valeurs autorisées* : liste des participants valides IDs  
*Obligatoire* — Oui  
*Valeur par défaut* — Aucune, maximum de 100

Après avoir exécuté cette action, Audio Service invoque toujours une AWS Lambda fonction du type d'événement `ACTION_SUCCESSFUL` ou `ACTION_FAILED` d'invocation. L'exemple de code suivant illustre un événement d'`ACTION_SUCCESSFUL`invocation typique.

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type" : "ModifyChimeMeetingAttendees",
        "Parameters" : {
            "Operation": "Mute",
            "MeetingId": "meeting-id",
            "CallId": "call-id",
            "ParticipantTag": "LEG-B",
            "AttendeeList": ["attendee-id-1", "attendee-id-2"]
        }
    }
    "CallDetails": {
        ...
    }
}
```

**Gestion des erreurs**  
En cas de paramètres d'instruction non valides ou d'échec de l'API, les applications multimédia SIP appellent une AWS Lambda fonction avec le message d'erreur spécifique à l'instruction ou à l'API défaillante.


|  Erreur  |  Message  |  Raison  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  La valeur du `ModifyChimeMeetingAttendees Operation` paramètre n'est pas valide  |  La `Operation` valeur doit être Mute ou Unmute.  | 
|     |  La valeur du paramètre Meeting ID n'est pas valide.  |  L'identifiant de réunion est vide.  | 
|     |  La valeur du paramètre de la liste des participants n'est pas valide.  |  La liste des identifiants des participants est vide ou dépasse le maximum de 100.  | 
|     |  Action non valide lors de l'appel.  |  L'appel n'est pas interrompu.  | 
|     |  L'appel n'est pas connecté à Chime Meeting.  |  Le participant n'est pas connecté à une réunion Chime.  | 
|     |  Un ou plusieurs participants ne participent pas à cette réunion. Tous les participants doivent participer à cette réunion.  |  Le participant n'est pas autorisé à modifier les participants à la réunion.  | 
|  `SystemException`  |  Erreur système lors de l'exécution de l'action.  |  Une erreur système s'est produite lors de l'exécution d'une action.  | 

L'exemple de code suivant illustre un événement de défaillance typique :

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type" : "ModifyChimeMeetingAttendees",
        "Parameters" : {
            "Operation": "Mute",
            "MeetingId": "meeting-id",
            "CallId": "call-id",
            "ParticipantTag": "LEG-B",
            "AttendeeList": ["attendee-id-1", "attendee-id-2"]
        },
        "ErrorType": "",
        "ErrorMessage": "",
        "ErrorList": []
    }
    "CallDetails": {
        ...
    }
}
```

Consultez des exemples pratiques sur GitHub :
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging).
+ [https://github.com/aws-samples/amazon-chime-sma-update-appeler](https://github.com/aws-samples/amazon-chime-sma-update-call)

# Pause
<a name="pause"></a>

Suspend un appel pendant une durée spécifiée.

```
{
    "Type": "Pause",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "DurationInMilliseconds": "3000"
    }
}
```

**CallId**  
*Description* — `CallId` du participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**ParticipantTag**  
*Description* — `ParticipantTag` de l'un des participants connectés au `CallDetails`  
*Valeurs autorisées* — `LEG-A` ou `LEG-B`  
*Obligatoire* — Non  
*Valeur par défaut* — `ParticipantTag` de la valeur `callLeg` ignorée invoquée si vous spécifiez `CallId`

**DurationInMilliseconds**  
*Description* — Durée de la pause, en millisecondes  
*Valeurs autorisées* : un entier supérieur à 0  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

Consultez des exemples pratiques sur GitHub :
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notifications d'appels](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-enregistrement de la demande](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# PlayAudio
<a name="play-audio"></a>

Écoutez un fichier audio à n'importe quel moment d'un appel. Le son peut être répété autant de fois que vous le souhaitez. Le son en cours peut être interrompu à l'aide des chiffres DTMF définis dans le. `PlaybackTerminators`

Actuellement, le SDK Amazon Chime prend uniquement en charge la lecture de fichiers audio à partir du bucket Amazon Simple Storage Service (Amazon S3). Le compartiment S3 doit appartenir au même AWS compte que l'application multimédia SIP. En outre, vous devez donner l'`s3:GetObject`autorisation au responsable du service Amazon Chime SDK Voice Connector. Vous pouvez le faire à l'aide de la console S3 ou de l'interface de ligne de commande (CLI).

L'exemple de code suivant illustre une politique de bucket typique.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
                "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

Le service audio lit et écrit dans votre compartiment S3 pour le compte de votre application Sip Media. Pour éviter le [problème de confusion lié aux adjoints](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), vous pouvez restreindre l'accès au compartiment S3 à une seule application multimédia SIP.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
                "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:chime:us-east-1:111122223333:sma/sip-media-application-id"
                }
            }
        }
    ]
}
```

------

L'exemple de code suivant illustre une action typique.

```
{
    "Type": "PlayAudio",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "PlaybackTerminators": ["1", "8", "#"],
        "Repeat": "5",
        "AudioSource": {
            "Type": "S3",
            "BucketName": "valid-S3-bucket-name",
            "Key": "wave-file.wav"
        }
    }
}
```

**CallID**  
*Description* — `CallId` du participant au`CallDetails`.  
*Valeurs autorisées* : un identifiant d'appel valide.  
*Obligatoire* — Non, s'`ParticipantTag`il est présent.  
*Valeur par défaut* : aucune.

**ParticipantTag**  
*Description* — `ParticipantTag` de l'un des participants connectés au`CallDetails`.  
*Valeurs autorisées* — `LEG-A` ou`LEG-B`.  
*Obligatoire* — Non, s'`CallId`il est présent.  
*Valeur par défaut* — `ParticipantTag` de l'invoqué`callLeg`. Ignoré si vous le spécifiez`CallId`.

**PlaybackTerminator**  
*Description* — Termine le son en cours en utilisant l'entrée DTMF de l'utilisateur  
*Valeurs autorisées* : tableau des valeurs suivantes : « 0 », « 1 », » 2 », « 3 », « 4 », « 5 », « 6 », » 7 », « 8 », « 9 », » \$1 », « \$1 »  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**Repeat**  
*Description* — Répète le son le nombre de fois spécifié  
*Valeurs autorisées* : nombre entier supérieur à zéro  
*Obligatoire* — Non  
*Valeur par défaut* — 1

**AudioSource.Type**  
*Description* — Type de source pour le fichier audio.  
*Valeurs autorisées* : S3.  
*Obligatoire* — Oui.  
*Valeur par défaut* : aucune.

**AudioSource.BucketName**  
*Description* — Pour les types de source S3, le compartiment S3 doit appartenir au même AWS compte que l'application SIP. Le bucket doit avoir accès au principal service Amazon Chime SDK Voice Connector, à savoir voiceconnector.chime.amazonaws.com.  
*Valeurs autorisées* : compartiment S3 valide pour lequel le SDK Amazon Chime a accès à l'action. `s3:GetObject`  
*Obligatoire* — Oui.  
*Valeur par défaut* : aucune.

**AudioSource.key**  
*Description* — Pour les types de source S3, nom de fichier du compartiment S3 spécifié dans l'`AudioSource.BucketName`attribut.  
*Valeurs autorisées* : fichier audio valide.  
*Obligatoire* — Oui.  
*Valeur par défaut* : aucune.

L'application multimédia SIP essaie de lire le son à partir de l'URL source. Vous pouvez utiliser des fichiers .wav PCM bruts et non compressés d'une taille maximale de 50 Mo. Le SDK Amazon Chime recommande 8 monochromes. KHz 

Lorsque la dernière instruction d'un plan de dialogue est terminée `PlayAudio` et que la lecture du fichier est terminée, ou si un utilisateur arrête la lecture en appuyant sur une touche, l'application invoque la AWS Lambda fonction avec l'événement illustré dans l'exemple suivant.

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudio",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "valid-S3-bucket-name",
                "Key": "wave-file.wav",
         }           
     }
}
```

Une fois qu'un dernier chiffre arrête le son, celui-ci ne sera pas répété.

**Gestion des erreurs**  
Lorsque le fichier de validation contient des erreurs ou qu'une erreur se produit lors de l'exécution d'une action, l'application multimédia SIP appelle une AWS Lambda fonction avec le code d'erreur approprié.


|  Erreur  |  Message  |  Raison  | 
| --- | --- | --- | 
|  `InvalidAudioSource`  |  Le paramètre de source audio n'est pas valide.  |  Cette erreur peut se produire pour plusieurs raisons. Par exemple, l'application multimédia SIP ne peut pas accéder au fichier en raison de problèmes d'autorisation ou d'URL. Il se peut également que la validation du fichier audio échoue en raison du format, de la durée, de la taille, etc.  | 
|  `SystemException`  |  Erreur système lors de l'exécution de l'action.  |  Une autre erreur système s'est produite lors de l'exécution de l'action.   | 
|  `InvalidActionParameter`  |  CallId ou ParticipantTag le paramètre d'action n'est pas valide.  |  L'action contient un paramètre non valide.  | 

L'exemple de code suivant illustre un échec d'invocation typique.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 2,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type": "PlayAudio",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file.wav"
            },
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    }
    "CallDetails": {
        ...
    }
}
```

Consultez des exemples pratiques sur GitHub :
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging).
+ [https://github.com/aws-samples/amazon-chime-sma-call-transfert](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notifications d'appels](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-enregistrement de la demande](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)
+ [https://github.com/aws-samples/amazon-chime-sma-update-appeler](https://github.com/aws-samples/amazon-chime-sma-update-call)

# PlayAudioAndGetDigits
<a name="play-audio-get-digits"></a>

Lit le son et collecte des chiffres DTMF. En cas d'échec, par exemple si l'utilisateur ne saisit pas le nombre correct de chiffres DTMF, l'action joue le signal audio « défaillant », puis rejoue le son principal jusqu'à ce que l'application multimédia SIP ait épuisé le nombre de tentatives défini dans le paramètre. `Repeat`

Vous devez lire les fichiers audio depuis le compartiment S3. Le compartiment S3 doit appartenir au même AWS compte que l'application multimédia SIP. En outre, vous devez donner l'`s3:GetObject`autorisation au responsable du [service Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html),. `voiceconnector.chime.amazonaws.com` Pour ce faire, vous pouvez utiliser la console S3 ou la CLI. 

L'exemple de code suivant illustre une politique de compartiment S3 typique.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
                "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

Le service audio lit et écrit dans votre compartiment S3 pour le compte de votre application Sip Media. Pour éviter le [problème de confusion lié aux adjoints](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), vous pouvez restreindre l'accès au compartiment S3 à une seule application multimédia SIP.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
                "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:chime:us-east-1:111122223333:sma/sip-media-application-id"
                }
            }
        }
    ]
}
```

------

L'exemple suivant montre une `PlayAudioAndGetDigits` action typique. 

```
{
    "Type" : "PlayAudioAndGetDigits",
    "Parameters" : {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A"      
        "InputDigitsRegex": "^\d{2}#$",
        "AudioSource": {
            "Type": "S3",
            "BucketName": "bucket-name",
            "Key": "audio-file-1.wav"
        },
        "FailureAudioSource": {
            "Type": "S3",
            "BucketName": "bucket-name",
            "Key": "audio-file-failure.wav"
        },
        "MinNumberOfDigits": 3,
        "MaxNumberOfDigits": 5,
        "TerminatorDigits": ["#"],        
        "InBetweenDigitsDurationInMilliseconds": 5000,
        "Repeat": 3,
        "RepeatDurationInMilliseconds": 10000
    }
}
```

**CallId**  
*Description* — `CallId` du participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**ParticipantTag**  
*Description* — `ParticipantTag` de l'un des participants connectés au `CallDetails`  
*Valeurs autorisées* — `LEG-A` ou `LEG-B`  
*Obligatoire* — Non  
*Valeur par défaut* — `ParticipantTag` de la valeur `callLeg` ignorée invoquée si vous spécifiez `CallId`

**InputDigitsRegex**  
*Description* — Un modèle d'expression régulière  
*Valeurs autorisées* : modèle d'expression régulière valide  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**AudioSource.Type**  
*Description* — Type de source pour le type de fichier audio  
*Valeurs autorisées* : un compartiment S3  
*Obligatoire* — Oui  
*Valeur par défaut* — `"S3"`

**AudioSource.BucketName**  
*Description* — Pour `AudioSource.Type` les valeurs S3, le compartiment S3 doit appartenir au même AWS compte que l'application multimédia SIP. Le bucket S3 doit avoir accès au principal [service Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html),. `voiceconnector.chime.amazonaws.com`  
*Valeurs autorisées* : compartiment S3 valide pour lequel le SDK Amazon Chime dispose `s3:GetObject` d'un accès aux actions.  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**AudioSource.Key**  
*Description* — Le nom clé de l'objet audio dans le compartiment `AudioSource.BucketName` S3.  
*Valeurs autorisées* : fichiers audio valides  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**FailureAudioSource.Type**  
*Description* — Le nom clé de l'objet audio dans le compartiment `FailureAudioSource.BucketName` S3.  
*Valeurs autorisées* — S3  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**FailureAudioSource.BucketName**  
*Description* — Pour les types de source S3, le compartiment S3 doit appartenir au même AWS compte que l'application multimédia SIP. Le [responsable du service Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) doit avoir accès au compartiment S3. `voiceconnector.chime.amazonaws.com`  
*Valeurs autorisées* : compartiment S3 valide pour lequel le SDK Amazon Chime dispose `s3:GetObject` d'un accès aux actions.  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**FailureAudioSource.Key**  
*Description* — Le nom clé de l'objet audio dans le compartiment `FailureAudioSource.BucketName` S3.  
*Valeurs autorisées* : fichiers audio valides  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**MinNumberOfDigits**  
*Description* — Le nombre minimum de chiffres à capturer avant l'expiration du délai imparti ou avant la lecture du signal audio « échec de l'appel ».  
*Valeurs autorisées* : >=0  
*Obligatoire* — Non  
*Valeur par défaut* — 0

**MaxNumberOfDigits**  
*Description* — Le nombre maximal de chiffres à capturer avant l'arrêt sans un chiffre final.  
*Valeurs autorisées* — > `MinNumberOfDigits`  
*Obligatoire* — Non  
*Valeur par défaut* : 128

**TerminatorDigits**  
*Description* — Chiffres utilisés pour terminer la saisie si l'utilisateur saisit une valeur inférieure à `MaxNumberOfDigits`  
*Valeurs autorisées* — N'importe lequel de ces chiffres : 0123456789\$1\$1  
*Obligatoire* — Non  
*Valeur par défaut* — \$1

**InBetweenDigitsDurationInMilliseconds**  
*Description* — Le temps d'attente en millisecondes entre les entrées de chiffres avant de jouer. `FailureAudio`  
*Valeurs autorisées* : >0  
*Obligatoire* — Non  
*Valeur par défaut* : si elle n'est pas spécifiée, la `RepeatDurationInMilliseconds` valeur par défaut est la même.

**Repeat**  
*Description* — Nombre total de tentatives pour obtenir des chiffres  
*Valeurs autorisées* : >0  
*Obligatoire* — Non  
*Valeur par défaut* — 1

**RepeatDurationInMilliseconds**  
*Description* — Temps d'attente en millisecondes entre les tentatives `Repeat`  
*Valeurs autorisées* : >0  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

L'application multimédia SIP invoque toujours sa AWS Lambda fonction après avoir exécuté l'`PlayAudioAndGetDigits`action, avec un type d'événement d'`ACTION_FAILED`invocation `ACTION_SUCCESSFUL` ou. Lorsque l'application parvient à rassembler des chiffres, elle définit la `ReceivedDigits` valeur dans l'`ActionData`objet. L'exemple suivant montre la structure des événements d'invocation de cette AWS Lambda fonction.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A",
            "InputDigitsRegex": "^\d{2}#$",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-1.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-failure.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    },
        "ReceivedDigits": "1234"
    },
    "CallDetails": {
        ...
    }
}
```

**Gestion des erreurs**  
Lorsqu'une erreur de validation se produit, l'application multimédia SIP appelle la AWS Lambda fonction avec le message d'erreur correspondant. Le tableau suivant répertorie les messages d'erreur possibles.


|  Erreur  |  Message  |  Raison  | 
| --- | --- | --- | 
|  `InvalidAudioSource`  |  La valeur du paramètre de source audio n'est pas valide.  |  Cette erreur peut se produire pour plusieurs raisons. Par exemple, l'application multimédia SIP ne peut pas accéder au fichier en raison de problèmes d'autorisation ou de problèmes liés au compartiment S3. Il se peut également que la validation du fichier audio échoue en raison de sa durée, de sa taille ou de son format non pris en charge.  | 
|  `InvalidActionParameter`  |  `CallId`ou le `ParticipantTag` paramètre de l'action n'est pas valide.  |  Un `CallId``ParticipantTag`, ou un autre paramètre n'est pas valide.  | 
|  `SystemException`  |  Erreur système lors de l'exécution de l'action.  |  Une erreur système s'est produite lors de l'exécution de l'action.  | 

Lorsque l'action ne parvient pas à collecter le nombre de chiffres spécifiés en raison d'un délai d'attente ou d'un trop grand nombre de tentatives, l'application multimédia SIP invoque la AWS Lambda fonction avec le type d'événement d'`ACTION_FAILED`invocation.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A",
            "InputDigitsRegex": "^\d{2}#$",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-1.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-failure.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    }
    "CallDetails": {
        ...
    }
}
```

Consultez des exemples pratiques sur GitHub :
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging).
+ [https://github.com/aws-samples/amazon-chime-sma-update-appeler](https://github.com/aws-samples/amazon-chime-sma-update-call)

# ReceiveDigits
<a name="listen-to-digits"></a>

Lorsqu'un utilisateur saisit des chiffres correspondant au modèle d'expression régulière spécifié dans cette action, l'application multimédia SIP invoque la AWS Lambda fonction.

```
{
    "Type": "ReceiveDigits",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "InputDigitsRegex": "^\d{2}#$",
        "InBetweenDigitsDurationInMilliseconds": 1000, 
        "FlushDigitsDurationInMilliseconds": 10000
    }
}
```

**CallId**  
*Description* — `CallId` du participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**ParticipantTag**  
*Description* — `ParticipantTag` de l'un des participants connectés au `CallDetails`  
*Valeurs autorisées* — `LEG-A` ou `LEG-B`  
*Obligatoire* — Non  
*Valeur par défaut* — `ParticipantTag` de la valeur `callLeg` ignorée invoquée si vous spécifiez `CallId`

**InputDigitsRegex**  
*Description* — Un modèle d'expression régulière  
*Valeurs autorisées* : modèle d'expression régulière valide  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**InBetweenDigitsDurationInMilliseconds**  
*Description* — Intervalle entre les chiffres avant de vérifier si l'entrée correspond au modèle d'expression régulière  
*Valeurs autorisées* : durée en millisecondes  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**FlushDigitsDurationInMilliseconds**  
*Description* — Intervalle après lequel les chiffres DTMF reçus sont vidangés et envoyés à la fonction. AWS Lambda Si l'application multimédia SIP reçoit un nouveau chiffre après la fin de l'intervalle, le temporisateur recommence.  
*Valeurs autorisées* — `InBetweenDigitsDurationInMilliseconds`  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

L'application multimédia SIP supprime les chiffres DTMF pendant la durée d'un appel jusqu'à ce qu'elle reçoive une nouvelle `ReceiveDigits` action. L'`FlushDigitsDurationInMilliseconds`intervalle commence lorsque l'application multimédia SIP reçoit le premier chiffre DTMF. Si l'utilisateur saisit les bons chiffres avant l'expiration de l'intervalle, l'application multimédia SIP invoque la AWS Lambda fonction décrite dans[Réception de l'entrée de l'appelant pour le service audio PSTN du SDK Amazon Chime](case-4.md).

Si l'entrée utilisateur ne correspond pas au modèle d'expression régulière, l'application multimédia SIP répète le message « échec » du fichier audio jusqu'à ce que l'application ait épuisé le nombre de répétitions ou que l'utilisateur saisisse des chiffres valides. 

Consultez des exemples pratiques sur GitHub :
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-notifications d'appels](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-enregistrement de la demande](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)
+ [https://github.com/aws-samples/amazon-chime-sma-update-appeler](https://github.com/aws-samples/amazon-chime-sma-update-call)

# RecordAudio
<a name="record-audio"></a>

Permet à l'application multimédia SIP d'enregistrer du contenu multimédia à partir d'un identifiant d'appel donné. Par exemple, une application de messagerie vocale et des annonces destinées aux participants à une réunion. L'application enregistre jusqu'à ce que la durée que vous avez définie soit atteinte, soit lorsqu'un utilisateur appuie sur l'un des `RecordingTerminators` boutons, soit lorsque l'application détecte un silence. Dans ces cas, l'action indique à votre application de placer le fichier multimédia obtenu dans le compartiment S3 spécifié. Le compartiment S3 doit appartenir au même AWS compte que l'application multimédia SIP. En outre, l'action doit donner une `s3:PutObject` `s3:PutObjectAcl` autorisation au responsable du service Amazon Chime SDK Voice Connector, au principal du service [Amazon Chime SDK](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) Voice Connector,. `voiceconnector.chime.amazonaws.com` 

**Note**  
Les enregistrements réalisés à l'aide de cette fonctionnalité peuvent être soumis aux lois ou réglementations relatives à l'enregistrement des communications électroniques. Il est de votre responsabilité et de celle de vos utilisateurs finaux de respecter toutes les lois applicables concernant l'enregistrement, notamment d'informer correctement tous les participants à une session ou à une communication enregistrée que la session ou la communication est enregistrée, et d'obtenir leur consentement.

L'exemple suivant donne l'`s3:PutObjectAcl`autorisation `s3:PutObject` et au principal du service Amazon Chime SDK Voice Connector.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [                
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*"
        }
    ]
}
```

------

L'exemple suivant arrête l'enregistrement lorsque l'appelant appuie sur la touche dièse (\$1), lorsque 10 secondes s'écoulent sans aucune activité, ou lorsque l'appelant reste silencieux pendant 3 secondes, et qu'il écrit le fichier multimédia obtenu à l'emplacement défini par le paramètre. `RecordingDestination`

**Note**  
Cet exemple utilise le `CallId` paramètre. Vous pouvez utiliser le `ParticipantTag` paramètre à la place, mais vous ne pouvez pas utiliser les deux.

```
{
    "Type": "RecordAudio",
    "Parameters": {
        "CallId": "call-id-1",
        "DurationInSeconds": "10",
        "SilenceDurationInSeconds": 3,
        "SilenceThreshold": 100,
        "RecordingTerminators": [
            "#"
        ],
        "RecordingDestination": {
            "Type": "S3",
            "BucketName": "valid-bucket-name",
            "Prefix": "valid-prefix-name"
        }
    }
}
```

**CallId**  
*Description* — `CallId` du participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**ParticipantTag**  
*Description* — `ParticipantTag` de l'un des participants connectés au `CallDetails`  
*Valeurs autorisées* — `LEG-A` ou `LEG-B`  
*Obligatoire* — Non  
*Valeur par défaut* — `ParticipantTag` de la valeur `callLeg` ignorée invoquée si vous spécifiez `CallId`

**RecordingDestination.Type**  
*Description* — Type de destination. S3 uniquement.  
*Valeurs autorisées* — S3  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**RecordingDestination.BucketName**  
*Description* — Nom de compartiment S3 valide. Le bucket doit avoir accès au principal [service Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html),. `voiceconnector.chime.amazonaws.com`  
*Valeurs autorisées* : compartiment S3 valide pour lequel le SDK Amazon Chime a accès aux `s3:PutObject` actions et. `s3:PutObjectAcl`  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

****RecordingDestination.Prefix****  
*Description* — Préfixe S3 du fichier d'enregistrement  
*Valeurs autorisées* : nom de préfixe valide contenant jusqu'à 979 caractères sûrs. Pour plus d'informations sur les caractères sûrs, reportez-vous à la section [Caractères sécurisés](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines-safe-characters) du guide de l'utilisateur d'Amazon Simple Storage Service.  
*Obligatoire* — Non  
*Par défaut* : aucun. Si ce n'est pas spécifié, les enregistrements sont enregistrés à la racine du compartiment S3.

**DurationInSeconds**  
*Description* — Durée de l'enregistrement, en secondes  
*Valeurs autorisées* : >0  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

****SilenceDurationInSeconds****  
*Description* — Durée du silence en secondes, après laquelle l'enregistrement s'arrête. Si elle n'est pas spécifiée, la détection du silence est désactivée.  
*Valeurs autorisées* — [1 ; 1000]  
*Obligatoire* — Non  
*Valeur par défaut* : 200

****SilenceThreshold****  
*Description* — Niveau de bruit considéré comme « silencieux ». Si vous ne le spécifiez pas`SilenceDurationInSeconds`, ce paramètre est ignoré.  

**Valeurs de référence (niveaux de bruit et seuils permettant de traiter le bruit comme du silence) :**
+ 1 à 30 dB ou moins, par exemple dans une pièce calme
+ 100—40 à 50 dB, par exemple dans un bureau silencieux ou silencieux
+ 200 à 60 dB, par exemple dans un bureau bondé
+ 1000—75 dB, par exemple une personne bruyante ou de la musique
*Valeurs autorisées* — [1 ; 1000]  
*Obligatoire* — Non  
*Valeur par défaut* : 200

**RecordingTerminators**  
*Description* — Répertorie tous les terminateurs d'enregistrement disponibles.  
*Valeurs autorisées* : tableau de chiffres et de symboles uniques provenant de [123456789\$10\$1]  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

## Gestion des événements ACTION\$1SUCCESSFUL
<a name="handle-action-successful"></a>

À la fin de l'enregistrement, l'application multimédia SIP du SDK Amazon Chime appelle la AWS Lambda fonction et lui transmet l'événement ACTION\$1SUCCESSFUL, ainsi que les résultats de l'appel.

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type" : "RecordAudio",
        "Parameters": {
           ...           
        },
        "RecordingDestination": {
            "Type": "S3",
            "BucketName": "valid-bucket-name",
            "Key": "valid-S3-key"              
        },
        "RecordingTerminatorUsed":"#"
    },
    "CallDetails": {
        ...
    }
}
```

L'`ACTION_SUCCESSFUL`événement contient`ActionData`, qui contient les champs suivants :

**Type**  
*Description* — Type de l'action,`RecordAudio`.

**Parameters**  
*Description* — Les paramètres de l'action.

**RecordingDestination.Type**  
*Description* — Type de destination. S3 uniquement. 

**RecordingDestination.BucketName**  
*Description* — Le compartiment S3 qui contient le fichier d'enregistrement. 

**RecordingDestination.Key**  
*Description* — La clé S3 du fichier d'enregistrement.

**RecordingTerminatorUsed**  
*Description* — Le terminateur utilisé pour arrêter l'enregistrement : l'un des terminateurs transmis dans le paramètre. `RecordingTerminators` Si l'enregistrement s'arrête après avoir atteint la durée maximale (`DurationInSeconds`) ou à cause du silence (`SilenceDurationInSeconds`), cette paire clé-valeur n'est pas incluse dans la sortie.

**Gestion des erreurs**  
En cas d'erreur de validation, l'application multimédia SIP appelle la AWS Lambda fonction avec le message d'erreur approprié. Le tableau suivant répertorie les messages d'erreur possibles.


|  Erreur  |  Message  |  Raison  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  `CallId`ou `ParticipantTag` le paramètre d'action n'est pas valide. `DurationInSeconds`la valeur du paramètre n'est pas valide. `SilenceDurationInSeconds`la valeur du paramètre n'est pas valide. `SilenceThreshold`la valeur du paramètre n'est pas valide. `RecordingDestination`la valeur du paramètre n'est pas valide. Une erreur s'est produite lors du téléchargement de l'enregistrement dans le compartiment S3.  |  Tout paramètre n'est pas valide.  | 
|  `SystemException`  |  Erreur système lors de l'exécution d'une action.  |  Un autre type d'erreur système s'est produit lors de l'exécution d'une action.  | 

## Gestion des ACTION\$1FAILED événements
<a name="handle-action-failed"></a>

Lorsque l'action ne parvient pas à enregistrer le contenu multimédia lors d'un segment d'appel, l'application multimédia SIP invoque une AWS Lambda fonction du type d'`ACTION_FAILED`événement. Consultez l'exemple suivant.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 5,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type" : "RecordAudio",
        "Parameters": {
           ...           
        },
        "ErrorType": "InvalidActionParameter",
        "ErrorMessage": "RecordingDestination parameter value is invalid."
    },
    "CallDetails": {
        ...
    }
}
```

Consultez un exemple pratique sur GitHub : [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging)

# SendDigits
<a name="send-digits"></a>

Envoyez jusqu'à 50 chiffres à double tonalité et multifréquence (DTMF) sur n'importe quel segment d'un appel. Les signaux peuvent inclure les éléments suivants :
+ Chiffres 0 à 9
+ Caractères spéciaux étoile (\$1) et livre (\$1)
+ Signaux de commande réseau A, B, C, D
+ La virgule (,). Ce signal ajoute un délai de 0,5 seconde entre le signal précédent et le signal suivant.

**Topics**
+ [Utilisation de SendDigits action](#send-digits-action)
+ [Manipulation ACTION\$1SUCCESSFUL événements](#send-digit-success)
+ [Manipulation ACTION\$1FAILED événements](#send-digit-fail)
+ [Flux d'appels](#send-digits-call-flow)

## Utilisation de SendDigits action
<a name="send-digits-action"></a>

L'exemple suivant illustre une `SendDigits` action typique :

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "SendDigits",
            "Parameters": {
                "CallId": "call-id-1", // required
                "Digits": ",,*1234,56,7890ABCD#", // required
                "ToneDurationInMilliseconds": 100 // optional
            }
        }
    ]
}
```

**CallId**  
*Description* — Le nom `CallId` d'un participant à l'`CallDetails`invocation de la AWS Lambda fonction  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**Digits**  
*Description* — Les chiffres à envoyer sur le segment d'appel qui correspondent au `CallId`  
*Valeurs autorisées* : 0-9, \$1, \$1, A, B, C, D, virgule (,)  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**ToneDurationInMilliseconds**  
*Description* — Durée autorisée, en millisecondes, pour transmettre chaque chiffre.  
*Valeurs autorisées* : tout entier compris entre 50 et 24 000  
*Obligatoire* — Non  
*Valeur par défaut* : 250

## Manipulation ACTION\$1SUCCESSFUL événements
<a name="send-digit-success"></a>

L'exemple suivant montre un `ACTION_SUCCESSFUL` événement typique de l'`SendDigits`action.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "SendDigits",
        "Parameters": {
            "Digits": "1,2A#",
            "ToneDurationInMilliseconds": 100,
            "CallId": "call-id-1"
        },  
    "CallDetails": { 
        ...
        }
    }
}
```

## Manipulation ACTION\$1FAILED événements
<a name="send-digit-fail"></a>

L'exemple suivant montre un `ACTION_FAILED` événement typique de l'`SendDigits`action.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type": "SendDigits",
        "Parameters": {
            "Digits": "1,2A#",
            "ToneDurationInMilliseconds": 20000000,
            "CallId": "call-id-1"
        },
    "ErrorType": "InvalidActionParameter",
    "ErrorMessage": "ToneDuration parameter value is invalid."
    },
    "CallDetails": {
        ...
        }
    }
}
```

## Flux d'appels
<a name="send-digits-call-flow"></a>

Le schéma suivant montre le déroulement du programme pour l'envoi de chiffres d'un appelant à un appelé.

![\[Schéma illustrant le déroulement du programme de l'SendDigitsaction.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/send-digits-1.png)


# Speak
<a name="speak"></a>

Vous pouvez lire la parole sur n'importe quel segment d'appel en fournissant du texte. Vous pouvez utiliser du texte brut ou le langage de balisage de synthèse vocale (SSML). SSML permet de mieux contrôler la manière dont le SDK Amazon Chime génère la parole en ajoutant des pauses, en soulignant certains mots ou en modifiant le style de parole.

Le SDK Amazon Chime utilise le service Amazon Polly pour convertir. text-to-speech Amazon Polly vous permet de choisir entre le moteur standard ou le moteur neuronal pour une meilleure qualité vocale. Amazon Polly prend en charge plus de 20 langues et 60 voix pour personnaliser l'expérience utilisateur de votre application. Le SDK Amazon Chime fournit des fonctionnalités vocales gratuitement, mais l'utilisation d'Amazon Polly est payante. Consultez la [page de tarification](https://aws.amazon.com/polly/pricing/) d'Amazon Polly ou votre tableau de bord de facturation pour obtenir des informations sur les prix.

**Important**  
L'utilisation d'Amazon Polly est soumise aux [conditions de service AWS](https://aws.amazon.com/service-terms/), y compris les conditions spécifiques aux services AWS Machine Learning et d'intelligence artificielle.

**Topics**
+ [Utilisation de Speak action](#speak-action)
+ [Manipulation ACTION\$1SUCCESSFUL événements](#speak-action-success)
+ [Manipulation ACTION\$1FAILED événements](#speak-action-fail)
+ [Flux de programmes](#speak-flow)

## Utilisation de Speak action
<a name="speak-action"></a>

L'exemple suivant montre une utilisation typique de l'`Speak`action.

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "Speak",
            "Parameters": {
                "Text": "Hello, World!",        // required
                "CallId": "call-id-1",          // required
                "Engine": "neural",             // optional. Defaults to standard
                "LanguageCode": "en-US",        // optional
                "TextType": "text",             // optional
                "VoiceId": "Joanna"             // optional. Defaults to Joanna
            }
        }
    ]
}
```

**CallId**  
*Description* — Le `CallId` participant à l'invocation `CallDetails` de la fonction Lambda  
*Valeurs autorisées* : un identifiant d'appel valide  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**Text**  
*Description* — Spécifie le texte d'entrée à synthétiser sous forme vocale. Si vous `ssml` le spécifiez`TextType`, suivez le format SSML pour le texte d'entrée.  
*Valeurs autorisées* — Chaîne  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**Engine**  
*Description* — Spécifie le moteur (standard ou neuronal) à utiliser lors du traitement de texte pour la synthèse vocale.  
*Valeurs autorisées* — standard \$1 neuronal  
*Obligatoire* — Non  
*Valeur par défaut* — standard

**LanguageCode**  
*Description* — Spécifie le code de langue. Nécessaire uniquement si vous utilisez une voix bilingue. Si vous utilisez une voix bilingue sans code de langue, la langue par défaut de la voix bilingue est utilisée.  
*Valeurs autorisées* — Codes de [langue Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**TextType**  
*Description* — Spécifie le type de texte d'entrée, texte brut ou SSML. Si aucun type de saisie n'est spécifié, le texte brut est utilisé par défaut. Pour plus d'informations sur le protocole SSML, consultez la section [Génération de discours à partir de documents SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) dans le manuel *Amazon Polly Developer Guide*.  
*Valeurs autorisées* — ssml \$1 texte  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**VoiceId**  
*Description* — Spécifie l'ID de voix que vous souhaitez utiliser.  
*Valeurs autorisées* — [Amazon Polly voice IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Obligatoire* — Non  
*Valeur par défaut* — Joanna

## Manipulation ACTION\$1SUCCESSFUL événements
<a name="speak-action-success"></a>

L'exemple suivant montre un `ACTION_SUCCESSFUL` événement typique d'une action qui synthétise le texte « Hello World » en discours, en anglais, en utilisant la voix d'Amazon Polly. `Joanna`

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
       "Type": "Speak",
       "Parameters": {
          "CallId": "call-id-1",          
          "Engine":  "neural",             
          "LanguageCode":  "en-US",        
          "Text": "Hello World",          
          "TextType":  "text",             
          "VoiceId":  "Joanna"        
       }
    },
    "CallDetails":{       
       ...
    }
}
```

## Manipulation ACTION\$1FAILED événements
<a name="speak-action-fail"></a>

L'exemple suivant montre un `ACTION_FAILED` événement typique pour le même événement que celui utilisé dans l'exemple précédent.

```
{
    "SchemaVersion": "1.0",
    "Sequence":2,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData":{
       "Type": "Speak",
       "Parameters": {
          "CallId": "call-id-1",          
          "Engine":  "neural",             
          "LanguageCode":  "en-US",        
          "Text": "Hello  World",          
          "TextType":  "text",             
          "VoiceId":  "Joanna"        
       },
       "ErrorType": "SystemException",
       "ErrorMessage": "System error while running  action"
    },
    "CallDetails":{       
       ...
    }
}
```

**Gestion des erreurs**  
Ce tableau répertorie et décrit les messages d'erreur générés par l'`Speak`action.


| Erreur | Message | Raison | 
| --- | --- | --- | 
| `AccessDenied` | Le rôle `AWSServiceRoleForAmazonChimeVoiceConnector` lié au service n'est pas configuré correctement. | Le rôle lié au service utilisé pour envoyer des demandes à Amazon Polly n'existe pas ou ne dispose pas d'autorisations. Pour résoudre le problème, consultez les étapes décrites dans la [Utilisation du rôle lié au service Amazon Chime SDK Voice Connector](speak-and-get-digits.md#speak-digits-policy) section | 
| `InvalidActionParameter` |   | Une erreur s'est produite lors de la validation des paramètres de l'action. Consultez l'[SynthesizeSpeech API](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech) dans le *guide du développeur Amazon Polly* pour plus d'informations sur les paramètres. | 
| ActionExecutionThrottled | Amazon Polly limite la demande de synthèse vocale. | La demande adressée à Amazon Polly renvoie une exception de limitation. [Pour plus d'informations sur les limites de limitation d'Amazon Polly, consultez https://docs.aws.amazon.com/polly/ latest/dg/limits .html \$1limits -throttle.](https://docs.aws.amazon.com/polly/latest/dg/limits.html#limits-throttle) | 
| `MissingRequiredActionParameter` | `Text`est un paramètre obligatoire. | Les paramètres d'action doivent avoir une `Text` valeur | 
| `MissingRequiredActionParameter` | `Text`est limité à 1 000 caractères | Le texte a dépassé la limite de caractères. | 
| `SystemException` | Erreur système lors de l'exécution de l'action. | Une erreur système s'est produite lors de l'exécution de l'action. | 

## Flux de programmes
<a name="speak-flow"></a>

Le schéma suivant montre le flux du programme qui active l'`Speak`action pour un appelant. Dans cet exemple, l'appelant entend un texte qui 

![\[Schéma illustrant le déroulement du programme permettant d'activer l'Speakaction pour un appelant.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/Speak1.png)


**Dans le schéma**  
À l'aide d'un téléphone logiciel, l'appelant saisit un numéro enregistré dans une application multimédia SIP. L'application utilise la `INVITE` méthode SIP et envoie une `Trying (100)` réponse à l'appelant. Cela indique que le serveur du saut suivant a reçu la demande d'appel. L'application SIP contacte `INVITE` ensuite le point de terminaison. Une fois la connexion établie, les applications envoient `Ringing (180)` une réponse à l'appelant et l'alerte commence. 

L'application multimédia SIP envoie ensuite un `NEW_INBOUND_CALL` événement à la fonction Lambda, qui répond par une `Speak` action incluant l'identifiant de l'appelant et le texte que vous souhaitez convertir en voix. L'application SIP envoie ensuite une `200 (OK)` réponse indiquant que l'appel a été répondu. Le protocole active également les médias. 

Si l'`Speak`action réussit et convertit le texte en parole, elle renvoie un `ACTION_SUCCESSFUL` événement à l'application multimédia SIP, qui renvoie la série d'actions suivante. Si l'action échoue, l'application multimédia SIP envoie un `ACTION_FAILED` événement à la fonction Lambda, qui répond par un ensemble d'`Hangup`actions. L'application raccroche l'appelant et renvoie un `HANGUP` événement à la fonction Lambda, qui n'entreprend aucune autre action. 



Le schéma suivant montre le déroulement du programme qui active l'`Speak`action pour un appelé.

![\[Schéma illustrant le déroulement du programme permettant d'activer l'Speakaction pour un appelé. Vous pouvez le faire pour n'importe quel appel ponté.\]](http://docs.aws.amazon.com/fr_fr/chime-sdk/latest/dg/images/Speak2.png)


**Dans le schéma**  
Un appelant saisit un numéro enregistré dans une application multimédia SIP, et l'application répond comme décrit dans le schéma précédent. Lorsque la fonction Lambda reçoit l'`NEW_INBOUND_CALL`événement, elle renvoie l'[CallAndBridge](call-and-bridge.md)action à l'application SIP. L'application utilise ensuite la `INVITE` méthode SIP pour envoyer les `Ringing (180)` réponses `Trying (100)` et à l'appelé. 

Si l'appelé répond, l'application multimédia SIP reçoit une `200 (OK)` réponse et envoie la même réponse à l'appelant. Cela établit le média, et l'application SIP envoie un `ACTION_SUCCESSFUL` événement pour l'[CallAndBridge](call-and-bridge.md)action à la fonction Lambda. La fonction renvoie ensuite l'action Speak et les données à l'application SIP, qui convertit 

# SpeakAndGetDigits
<a name="speak-and-get-digits"></a>

Écoutez la parole en fournissant du texte et collectez les chiffres à double tonalité et multifréquence (DTMF) de l'utilisateur. Le texte peut être du texte brut ou du texte amélioré en langage SSML (Speech Synthesis Markup Language) afin de mieux contrôler la manière dont le SDK Amazon Chime génère la parole en ajoutant des pauses, en soulignant certains mots ou en modifiant le style de parole, entre autres fonctionnalités SSML prises en charge. En cas d'échec, par exemple si l'utilisateur ne saisit pas le nombre correct de chiffres DTMF, l'action joue le discours d'échec, puis rejoue le discours principal jusqu'à ce que l'application multimédia SIP ait épuisé le nombre de tentatives défini dans le paramètre. `Repeat`

Le SDK Amazon Chime utilise Amazon Polly, un service cloud qui convertit le texte en discours réaliste. Amazon Polly fournit à la fois un moteur standard et un moteur neuronal pour une meilleure qualité vocale, plus de 20 langues prises en charge et 60 voix. Amazon Polly fournit des fonctionnalités vocales gratuitement, mais vous payez pour utiliser Amazon Polly. Consultez la [page de tarification](https://aws.amazon.com/polly/pricing/) d'Amazon Polly ou votre tableau de bord de facturation pour obtenir des informations sur les prix.

**Important**  
L'utilisation d'Amazon Polly est soumise aux [conditions de AWS service](https://aws.amazon.com/service-terms/), y compris les conditions spécifiques aux services de AWS Machine Learning et d'intelligence artificielle.

**Topics**
+ [Utilisation de SpeakAndGetDigits action](#speak-digits-action)
+ [Manipulation ACTION\$1SUCCESSFUL événements](#speak-digits-success)
+ [Manipulation ACTION\$1FAILED événements](#speak-digits-fail)
+ [Utilisation du rôle lié au service Amazon Chime SDK Voice Connector](#speak-digits-policy)

## Utilisation de SpeakAndGetDigits action
<a name="speak-digits-action"></a>

L'exemple suivant illustre une utilisation typique de l'`SpeakAndGetDigits`action :

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "SpeakAndGetDigits",
            "Parameters": {
                "CallId": "call-id-1",          // required
                "InputDigitsRegex": "^\d{2}#$", // optional
                "SpeechParameters": {
                    "Text": "Hello World",      // required
                    "Engine": "neural",         // optional. Defaults to standard
                    "LanguageCode": "en-US",    // optional
                    "TextType": "text",         // optional
                    "VoiceId": "Joanna"         // optional. Defaults to Joanna
                },
                "FailureSpeechParameters": {
                    "Text": "Hello World",      // required
                    "Engine": "neural",         // optional. Defaults to the Engine value in SpeechParameters
                    "LanguageCode": "en-US",    // optional. Defaults to the LanguageCode value in SpeechParameters
                    "TextType": "text",         // optional. Defaults to the TextType value in SpeechParameters
                    "VoiceId": "Joanna"         // optional. Defaults to the VoiceId value in SpeechParameters
                },
                "MinNumberOfDigits": 3,         // optional
                "MaxNumberOfDigits": 5,         // optional
                "TerminatorDigits": ["#"],      // optional
                "InBetweenDigitsDurationInMilliseconds": 5000,  // optional
                "Repeat": 3,                    // optional
                "RepeatDurationInMilliseconds": 10000           // required
            }
        }
    ]
}
```

**CallId**  
*Description* — Le nom `CallId` du participant à l' CallDetails invocation de la fonction Lambda.  
*Valeurs autorisées* : A valide `callID`  
*Obligatoire* — Oui  
*Valeur par défaut* — Non

**InputDigitsRegex**  
*Description* : modèle d'expression régulière permettant de garantir que les utilisateurs saisissent les bons chiffres et lettres.  
*Valeurs autorisées* : modèle d'expression régulière valide  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**SpeechParameters.Engine**  
*Description* — Spécifie le moteur (standard ou neuronal) à utiliser lors du traitement de texte pour la synthèse vocale.  
*Valeurs autorisées* — `standard` \$1 `neural`  
*Obligatoire* — Non  
*Valeur par défaut* — Standard

**SpeechParameters.LanguageCode**  
*Description* — Spécifie le code de langue. Cela n'est nécessaire que si vous utilisez une voix bilingue. Si une voix bilingue est utilisée et qu'aucun code de langue n'est spécifié, la langue par défaut de la voix bilingue est utilisée.  
*Valeurs autorisées* — Codes de [langue Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Obligatoire* — Non  
*Valeur par défaut* – Aucune

**SpeechParameters.Text**  
*Description* — Spécifie le texte d'entrée. Si vous le spécifiez `ssml` comme`SpeechParameters.TextType`, vous devez suivre le format SSML pour le texte d'entrée. Pour plus d'informations sur le protocole SSML, consultez la section [Génération de discours à partir de documents SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) dans le manuel *Amazon Polly Developer Guide*.  
*Valeurs autorisées* — Chaîne  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**SpeechParameters.TextType**  
*Description* — Spécifie le format de texte pour`SpeechParameters.Text`. S'il n'est pas spécifié, `text` il est utilisé par défaut. Pour plus d'informations sur le protocole SSML, consultez la section [Génération de discours à partir de documents SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) dans le manuel *Amazon Polly Developer Guide*.  
*Valeurs autorisées* — `ssml` \$1 `text`  
*Obligatoire* — Non  
*Valeur par défaut* — `text`

**SpeechParameters.VoiceId**  
*Description* — L'identifiant de la voix Amazon Polly utilisée pour prononcer le texte. `SpeechParameters.Text`  
*Valeurs autorisées* — [Amazon Polly voice IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Obligatoire* — Non  
*Valeur par défaut* — Joanna

**FailureSpeechParameters.Engine**  
*Description* — Spécifie le moteur (standard ou neuronal) à utiliser lors du traitement du message d'échec utilisé lorsque le client saisit une réponse non valide pour la synthèse vocale.  
*Valeurs autorisées* — `standard` \$1 `neural`  
*Obligatoire* — Non  
*Valeur par défaut* — La `SpeechParameters.Engine` valeur

**FailureSpeechParameters.LanguageCode**  
*Description* — Spécifie le code de langue utilisé lorsque le client saisit une réponse non valide. Nécessaire uniquement en cas d'utilisation d'une voix bilingue. Si vous utilisez une voix bilingue sans spécifier de code de langue, la langue par défaut de la voix bilingue est utilisée.  
*Valeurs autorisées* — Codes de [langue Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Obligatoire* — Non  
*Valeur par défaut* : `SpeechParameters.LanguageCode` valeur.

**FailureSpeechParameters.Text**  
*Description* — Spécifie le texte d'entrée prononcé lorsque le client saisit une réponse non valide. Si vous le spécifiez `ssml` comme`FailureSpeechParameters.TextType`, vous devez suivre le format SSML pour le texte d'entrée.  
*Valeurs autorisées* — Chaîne  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

**FailureSpeechParameters.TextType**  
*Description* — Spécifie si le texte d'entrée spécifié dans `FailureSpeechParameters.Text` est du texte brut ou du SSML. La valeur par défaut est le texte brut. Pour plus d'informations, consultez la section [Génération de discours à partir de documents SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) dans le manuel *Amazon Polly* Developer Guide.  
*Valeurs autorisées* — `ssml` \$1 `text`  
*Obligatoire* — Non  
*Valeur par défaut* — La `SpeechParameters.Text` valeur

**FailureSpeechParameters.VoiceId**  
*Description* — Identifiant de la voix utilisée pour prononcer la chaîne`FailureSpeechParameters.Text`.  
*Valeurs autorisées* — [Amazon Polly voice IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Obligatoire* — Oui  
*Valeur par défaut* — La `SpeechParameters.VoiceId` valeur

**MinNumberOfDigits**  
*Description* — Le nombre minimum de chiffres à saisir avant l'expiration du délai imparti ou avant la lecture du message « échec de l'appel ».  
*Valeurs autorisées* : supérieures ou égales à zéro  
*Obligatoire* — Non  
*Valeur par défaut* — 0

**MaxNumberOfDigits**  
*Description* — Le nombre maximal de chiffres à capturer avant l'arrêt sans un chiffre final.  
*Valeurs autorisées* : supérieures à `MinNumberOfDigits`  
*Obligatoire* — Non  
*Valeur par défaut* : 128

**TerminatorDigits**  
*Description* — Chiffre utilisé pour terminer la saisie si l'utilisateur saisit moins que MaxNumberOfDigits  
*Valeurs autorisées* — N'importe laquelle des valeurs suivantes : 0 1 2 3 4 5 6 7 8 9 \$1 ou \$1  
*Obligatoire* — Non  
*Valeur par défaut* — \$1

**InBetweenDigitsDurationInMilliseconds**  
*Description* — Le temps d'attente en millisecondes entre les entrées numériques avant de lire le discours d'échec.  
*Valeurs autorisées* : supérieures à zéro  
*Obligatoire* — Non  
*Valeur par défaut* — Si elle n'est pas spécifiée, la `RepeatDurationInMilliseconds` valeur par défaut est

**Repeat**  
*Description* — Nombre total de tentatives pour obtenir des chiffres. Si vous omettez ce paramètre, la valeur par défaut est une tentative de collecte de chiffres.  
*Valeurs autorisées* : supérieures à zéro  
*Obligatoire* — Non  
*Valeur par défaut* — 1

**RepeatDurationInMilliseconds**  
*Description* — Délai d'expiration en millisecondes pour chaque tentative d'obtention de chiffres.  
*Valeurs autorisées* : supérieures à zéro  
*Obligatoire* — Oui  
*Valeur par défaut* – Aucune

## Manipulation ACTION\$1SUCCESSFUL événements
<a name="speak-digits-success"></a>

L'exemple suivant illustre un `ACTION_SUCCESSFUL` événement typique.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
            "Type":  "SpeakAndGetDigits",
            "Parameters": {
                "CallId": "call-id-1",          
                "InputDigitsRegex":  "^\d{2}#$", 
                "SpeechParameters": {
                    "Engine":  "neural",         
                    "LanguageCode": "en-US",    
                    "Text":  "Hello World",           
                    "TextType":  "text",         
                    "VoiceId": "Joanna"         
                },
                "FailureSpeechParameters": {
                    "Engine":  "neural",         
                    "LanguageCode":  "en-US",    
                    "Text":  "Hello World",           
                    "TextType": "text",         
                    "VoiceId": "Joanna"         
                },
                "MinNumberOfDigits": 3,         
                "MaxNumberOfDigits": 5,         
                "TerminatorDigits": ["#"],      
                "InBetweenDigitsDurationInMilliseconds": 5000,  
                "Repeat": 3,                    
                "RepeatDurationInMilliseconds": 10000           
            },
            "ReceivedDigits": "1234"
    },
    "CallDetails":{       
       ...
    }
}
```

## Manipulation ACTION\$1FAILED événements
<a name="speak-digits-fail"></a>

L'exemple suivant illustre un `ACTION_FAILED` événement typique.

```
{
    "SchemaVersion": "1.0",
    "Sequence":2,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData":{
            "Type":  "SpeakAndGetDigits",
            "Parameters": {
                "CallId": "call-id-1",          
                "InputDigitsRegex":  "^\d{2}#$", 
                "SpeechParameters": {
                    "Engine":  "neural",         
                    "LanguageCode": "en-US",    
                    "Text":  "Hello World",           
                    "TextType":  "text",         
                    "VoiceId": "Joanna"         
                },
                "FailureSpeechParameters": {
                    "Engine":  "neural",         
                    "LanguageCode":  "en-US",    
                    "Text":  "Hello World",          
                    "TextType": "text",        
                    "VoiceId": "Joanna"        
                },
                "MinNumberOfDigits": 3,      
                "MaxNumberOfDigits": 5,        
                "TerminatorDigits": ["#"],      
                "InBetweenDigitsDurationInMilliseconds": 5000,  
                "Repeat": 3,                    
                "RepeatDurationInMilliseconds": 10000         
            },
            "ErrorType":  "SystemException",
            "ErrorMessage":  "System error while running action"
    },
    "CallDetails":{       
       ...
    }
}
```

**Gestion des erreurs**  
Ce tableau répertorie et décrit les messages d'erreur générés par l'`Speak`action.


| Erreur | Message | Raison | 
| --- | --- | --- | 
| `AccessDenied` | Le `AWSServiceRoleForAmazonChimeVoiceConnector` rôle n'est pas configuré correctement. | Le rôle utilisé pour envoyer des demandes à Amazon Polly n'existe pas ou ne dispose pas d'autorisations. Pour résoudre le problème, consultez les étapes décrites dans la [Utilisation du rôle lié au service Amazon Chime SDK Voice Connector](#speak-digits-policy) section | 
| `InvalidActionParameter` |   | Une erreur s'est produite lors de la validation des paramètres de l'action. Pour consulter les paramètres disponibles pour cette action et leurs options, consultez [SynthesizeSpeech](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html)le manuel Amazon Polly Developer Guide. | 
| `MissingRequiredActionParameter` | `Text`est un paramètre obligatoire. | Les paramètres de l'action doivent avoir une `Text` valeur | 
| `MissingRequiredActionParameter` | `Text`est limité à 1 000 caractères | Le texte a dépassé la limite de caractères. | 
| `SystemException` | Erreur système lors de l'exécution de l'action. | Une erreur système s'est produite lors de l'exécution de l'action. | 

## Utilisation du rôle lié au service Amazon Chime SDK Voice Connector
<a name="speak-digits-policy"></a>

Il n'est pas nécessaire de créer manuellement un rôle lié à un service pour les actions `Speak` or`SpeakAndGetDigits`. Lorsque vous créez ou mettez à jour une application multimédia SIP dans la console Amazon Chime SDK, ou dans l' AWS API AWS Command Line Interface, le SDK Amazon Chime crée le rôle lié au service pour vous.

*Pour plus d'informations, consultez la section [Utilisation du rôle lié au service Amazon Chime](https://docs.aws.amazon.com/chime/latest/ag/using-service-linked-roles-stream.html) dans le guide de l'administrateur du SDK Amazon Chime.*

# StartBotConversation
<a name="start-bot-conversation"></a>

L'`StartBotConversation`action établit une conversation vocale entre un utilisateur final et votre bot Amazon Lex v2. L'utilisateur fournit les informations requises au bot. Le bot renvoie ensuite les informations à la fonction Lambda audio du réseau téléphonique public commuté (PSTN), qui exécute les tâches demandées.

Par exemple, le bot peut diffuser un message de bienvenue facultatif au début d'une conversation pour décrire brièvement la tâche que la fonction Lambda audio PSTN peut effectuer. La conversation va et vient entre l'utilisateur et le bot jusqu'à ce que le bot recueille les informations requises. Une fois la conversation terminée, le SDK Amazon Chime appelle votre fonction Lambda audio PSTN avec un événement de réussite de l'action, qui contient les informations recueillies par le bot. Votre fonction Lambda audio PSTN traite les informations et exécute la tâche demandée.

Le service audio permet une interaction conversationnelle réaliste avec vos utilisateurs. Par exemple, les utilisateurs peuvent interrompre le bot et répondre à une question avant la fin de l'invite audio. De plus, les utilisateurs peuvent utiliser n'importe quelle combinaison de chiffres vocaux et DTMF pour fournir des informations. Le bot attend que l'utilisateur fournisse des informations avant de répondre. Vous pouvez configurer la durée pendant laquelle le bot attend que l'utilisateur ait fini de parler avant d'interpréter une entrée vocale. L'utilisateur peut également demander au bot d'attendre s'il a besoin de temps pour récupérer des informations supplémentaires lors d'un appel, telles que les numéros de carte de crédit.

L'`StartBotConversation`action utilise Amazon Lex et Amazon Polly pendant la durée de la conversation avec le bot. Les frais Amazon Lex et Amazon Polly standard s'appliquent. Pour plus d'informations sur les tarifs, consultez les pages de [tarification des conversations en streaming Amazon Lex](https://aws.amazon.com/lex/pricing/) et de [tarification d'Amazon Polly](https://aws.amazon.com/polly/pricing/).

**Note**  
Vous ne pouvez pas exécuter cette action sur un appel ponté ou sur un appel qui a rejoint une réunion du SDK Amazon Chime.

**Important**  
L'utilisation d'Amazon Lex et d'Amazon Polly est soumise aux [conditions de AWS service](https://aws.amazon.com/service-terms/), y compris les conditions spécifiques aux services de AWS Machine Learning et d'intelligence artificielle.

**Topics**
+ [Syntaxe de StartBotConversation](#startbot-syntax)
+ [Utilisation de l'StartBotConversationaction](#using-startbot)
+ [Gestion des ACTION\$1SUCCESSFUL événements](#bot-action-success)
+ [Gestion des ACTION\$1FAILED événements](#bot-action-fail)
+ [Octroi d'autorisations pour utiliser un bot](#bot-permissions)
+ [Configuration des délais d'attente vocaux et DTMF](#bot-timeouts)
+ [Utilisation des entrées DTMF pendant une conversation](#bot-dtmf)
+ [Quotas de facturation et de service](#bot-billing)

## Syntaxe de StartBotConversation
<a name="startbot-syntax"></a>

L'exemple suivant montre une `StartBotConversation` syntaxe typique.

```
{
  "SchemaVersion": "1.0",
  "Actions":[
    {
      "Type": "StartBotConversation",
      "Parameters": {
        "CallId": "string",
        "ParticipantTag": "string",
        "BotAliasArn": "string",
        "LocaleId": "string",
        "Configuration": {
          "SessionState": {
             "SessionAttributes": {
                "string": "string" 
             },
             "DialogAction" : {
               "Type": "string"
             }
          },
          "WelcomeMessages": [
            {
              "Content": "string",
              "ContentType": "string" 
            }
          ]
        }
      }
    }
  ]
}
```

**CallId**  
*Description* — Le nom `CallID` d'un participant à l'invocation `CallDetails` de la AWS Lambda fonction. L'`StartBotConversation`action utilise cet identifiant comme celui du bot`SessionId`. Toutes les conversations de bot qui ont lieu lors d'un appel partagent la même session de conversation. Vous pouvez modifier l'état de session entre votre utilisateur et votre bot à l'aide de l'PutSessionAPI [Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html). Pour plus d'informations, consultez [la section Gestion des sessions avec l'API Amazon Lex v2](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html) dans le manuel *Amazon Lex Developer Guide*.  
*Valeurs autorisées* : un identifiant d'appel valide.  
*Obligatoire* — Non, s'`ParticipantTag`il est présent.  
*Valeur par défaut* : aucune.

**ParticipantTag**  
*Description* — Celui `ParticipantTag` de l'un des participants connectés au`CallDetails`.  
*Valeurs autorisées* —`LEG-A`.  
*Obligatoire* — Non, s'`CallId`il est présent.  
*Valeur par défaut* — `ParticipantTag` de l'invoqué`callLeg`. Ignoré si vous le spécifiez`CallDetails`.

**BotAliasArn**  
*Description* — L'alias ARN de votre robot Lex. Vous devez créer le bot dans la même région AWS que votre application audio PSTN. Un alias de bot Amazon Lex valide a le format suivant :`arn:aws:lex:region:awsAccountId:bot-alias/botId/botAliasId`, où se *`region`* trouve la région AWS dans laquelle réside votre bot. `awsAccountId`Il s'agit de l'ID de compte AWS dans lequel votre bot Amazon Lex a été créé. La `botId` valeur est l'identifiant attribué au bot lorsque vous l'avez créé. Vous pouvez trouver l'ID du bot dans la console Amazon Lex sur la page de **détails du bot**. `botAliasId`Il s'agit de l'identifiant attribué à l'alias du bot lorsque vous l'avez créé. Vous pouvez trouver l'ID d'alias du bot sur la console Amazon Lex sur la page **Alias**.   
*Valeurs autorisées* : un ARN de bot valide.  
*Obligatoire* —Oui.  
*Valeur par défaut* : aucune.

**LocaleId**  
*Description* — L'identifiant de la localisation que vous avez utilisée pour votre bot. Pour obtenir la liste des paramètres régionaux et des codes de langue, consultez la section [Langues et paramètres régionaux pris en charge par Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html).  
*Valeurs autorisées* : [langues et paramètres régionaux pris en charge par Amazon Lex.](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html)  
*Obligatoire* — Non  
*Valeur par défaut* —`en_US`.

**Configuration**  
*Description* — Configuration de la conversation, y compris l'état de la session et les messages de bienvenue. La taille totale de la représentation sous forme de chaîne JSON de l'`Configuration`objet est limitée à 10 Ko.  
*Valeurs autorisées* : `Configuration` objet.  
*Obligatoire* — Non  
*Valeur par défaut* : aucune.

**Configuration.SessionState**  
*Description* — État de la session de l'utilisateur avec Amazon Lex v2.  
*Valeurs autorisées* : `SessionState` objet.  
*Obligatoire* — Non  
*Valeur par défaut* : aucune.

**Configuration.SessionState.SessionAttributes**  
*Description* — Carte des key/value paires représentant les informations contextuelles spécifiques à la session. Cette carte contient les informations d'application transmises entre Amazon Lex v2 et une application cliente.  
*Valeurs autorisées* : mappage de chaîne à chaîne.  
*Obligatoire* — Non  
*Valeur par défaut* : aucune.

**Configuration.SessionState.DialogAction.Type**  
*Description* — L'action suivante que le bot entreprend lors de ses interactions avec l'utilisateur. Valeurs possibles :  
+ *Le délégué* Amazon Lex v2 détermine l'action suivante.
+ *ElicitIntent*L'action suivante suscite une intention de la part de l'utilisateur.
*Valeurs autorisées* — `Delegate` \$1`ElicitIntent`.  
*Obligatoire* — Non  
*Valeur par défaut* : aucune.

**Configuration.WelcomeMessages**  
*Description* — Liste des messages à envoyer à l'utilisateur au début de la conversation. Si vous définissez le `welcomeMessage` champ, vous devez définir la `DialogAction.Type` valeur sur`ElicitIntent`.  
*Valeurs autorisées* — Objet du message  
*Obligatoire* — Non  
*Valeur par défaut* : aucune.

**Configuration.WelcomeMessages.Content**  
*Description* — Le texte du message de bienvenue.  
*Valeurs autorisées* : chaîne.  
*Obligatoire* — Non  
*Valeur par défaut* : aucune.

**Configuration.WelcomeMessages.ContentType**  
*Description* — Indique le type de message de bienvenue.  
*Valeurs autorisées* — ` PlainText` \$1 `SSML`  
+ *PlainText*— Le message contient du texte UTF-8 brut. 
+ *SSML* — Le message contient du texte formaté pour la sortie vocale.
*Obligatoire* — Oui.  
*Valeur par défaut* : aucune.

## Utilisation de l'StartBotConversationaction
<a name="using-startbot"></a>

L'exemple suivant montre une `StartBotConversation` action typique.

```
{
  "SchemaVersion": "1.0",
  "Actions":[
    {
      "Type": "StartBotConversation",
      "Parameters": {
        "CallId": "call-id-1",
        "BotAliasArn": "arn:aws:lex:us-east-1:123456789012:bot-alias/ABCDEFGHIH/MNOPQRSTUV",
        "LocaleId": "en_US",
        "Configuration": {
          "SessionState": {
             "SessionAttributes": {
                "mykey1": "myvalue1" 
             },
             "DialogAction" : {
               "Type": "ElicitIntent"
             }
          },
          "WelcomeMessages": [
            {
              "Content": "Welcome. How can I help you?",
              "ContentType": "PlainText" 
            }
          ]
        }
      }
    }
  ]
}
```

## Gestion des ACTION\$1SUCCESSFUL événements
<a name="bot-action-success"></a>

L'exemple suivant montre un `ACTION_SUCCESSFUL` événement typique de l'`StartBotConversation`action.

```
{
    "SchemaVersion": "1.0",
    "Sequence": number,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData":
    {
        "CallId": "string",
        "Type": "StartBotConversation",
        "Parameters": {
            // parameters provided in the StartBotConversation action.
        },
        "CallDetails": {
            // Information about the call associated with the AWS Lambda invocation.
        },
        "IntentResult": {
            "SessionId": "string",
            "SessionState": {
                "SessionAttributes": {
                    "string": "string"
                },
                "Intent": {
                    "Name": "string",
                    "Slots":  {
                        "string": {
                            "Value": {
                                "OriginalValue": "string",
                                "InterpretedValue": "string",
                                "ResolvedValues": ["string"]
                            },
                            "Values": []
                        }
                    },
                    "State": "string",
                    "ConfirmationState": "string"
                }
            },
            "Interpretations": [
                {
                    "NluConfidence": {
                        "Score": number
                    },
                    "Intent": {
                        "Name": "string",
                        "Slots": {
                            "string": {
                                "Value": {
                                    "OriginalValue": "string",
                                    "InterpretedValue": "string",
                                    "ResolvedValues": ["string"]
                                },
                                "Values": []
                            }
                        },
                        "State": "string",
                        "ConfirmationState": "string"
                    }
                }
            ]
        }
    }
}
```

**IntentResult**  
Le résultat de la conversation entre l'utilisateur et le bot.

**SessionId**  
Identifiant de la session de conversation du bot. Lorsqu'un utilisateur entame une conversation avec votre bot, Amazon Lex crée une session. Une session encapsule les informations échangées entre votre utilisateur et le bot. L'`StartBotConversation`action utilise l'identifiant d'appel comme celui du bot`SessionId`. Vous pouvez modifier l'état de session entre votre utilisateur et votre bot à l'aide de l'[https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_PutSession.html](https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_PutSession.html)API Lex. Pour plus d'informations, consultez [la section Gestion des sessions avec l'API Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html) dans le *manuel du développeur Amazon Lex*.

**SessionState**  
État de la session Amazon Lex v2 de l'utilisateur. 

**SessionState.SessionAttributes**  
Carte des key/value paires représentant les informations contextuelles spécifiques à la session. La carte contient les informations de conversation transmises entre la fonction Lambda attachée à votre robot et la fonction Lambda audio PSTN.

**Interprétations**  
Une liste d'intentions dérivée par Amazon Lex qui peuvent satisfaire l'énoncé du client. L'intention ayant obtenu le `NluConfidence` score le plus élevé devient l'intention du`SessionState`. 

**Interprétations. NluConfidence.Note**  
Un score qui indique dans quelle mesure Amazon Lex v2 est certain qu'une intention répond à celle de l'utilisateur. Varie entre 0,00 et 1,00. Des scores plus élevés indiquent une plus grande confiance. 

**Intent**  
L'action que l'utilisateur souhaite effectuer.

**Intent.Name**  
Nom de l'intention.

**Intent.Slots**  
Une carte de tous les emplacements correspondant à l'intention. Le nom de l'emplacement correspond à la valeur de l'emplacement. Si un emplacement n'est pas rempli, la valeur est nulle.

**Intent.Slots.Value**  
La valeur de l'emplacement.

**Intent.Slots.Values**  
Liste d'une ou de plusieurs valeurs fournies par l'utilisateur pour le slot.

**Intent.Slots.Value.OriginalValue**  
Le texte de la réponse de l'utilisateur, saisi pour le créneau.

**Intent.Slots.Value.InterpretedValue**  
*Description* — La valeur qu'Amazon Lex v2 détermine pour l'emplacement. La valeur réelle dépend du paramétrage de la stratégie de sélection de valeur du bot. Vous pouvez choisir d'utiliser la valeur saisie par l'utilisateur ou demander à Amazon Lex v2 de choisir la première valeur de la `resolvedValues` liste.

**Intent.Slots.Value.ResolvedValues**  
Liste des valeurs supplémentaires reconnues par Amazon Lex v2 pour le slot.

**Intent.State**  
*Description* — Informations d'exécution correspondant à l'intention. Valeurs possibles :  
+ `Failed`— La fonction Lambda n'a pas répondu à l'intention.
+ `Fulfilled`— La fonction Lambda a répondu à l'objectif.
+ `ReadyForFulfillment`— Les informations relatives à l'intention sont présentes et votre fonction Lambda peut répondre à l'intention. 

**Intent.ConfirmationState**  
*Description* — Indique la confirmation de l'intention. Valeurs possibles :  
+ *Confirmé* — L'intention est remplie.
+ *Refusé* — L'utilisateur a répondu « non » à l'invite de confirmation.
+ *Aucune* : l'utilisateur n'a pas été invité à confirmer, ou l'utilisateur a été invité mais n'a pas confirmé ou refusé l'invite.

## Gestion des ACTION\$1FAILED événements
<a name="bot-action-fail"></a>

L'exemple suivant montre un `ACTION_FAILED` événement typique de l'`StartBotConversation`action.

```
{
    "SchemaVersion": "1.0",
    "Sequence": number,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData":{
        "CallId": "string",
        "Type": "StartBotConversation",
        "Parameters": {
            // parameters provided in the StartBotConversation action
        },
        "ErrorType": "string",
        "ErrorMessage": "string"
    },
    "CallDetails":{
    }
}
```

**ErrorType**  
Chaîne qui identifie de manière unique une condition d'erreur.

**ErrorMessage**  
Description générique de la condition d'erreur.

### Codes d’erreur
<a name="action-errors"></a>

Le tableau suivant répertorie les messages d'erreur qu'une fonction Lambda peut renvoyer lors d'un `ACTION_FAILED` événement.


| Erreur | Description | 
| --- | --- | 
|  `InvalidActionParameter` | Un ou plusieurs paramètres d'action ne sont pas valides. Le message d'erreur décrit le paramètre non valide. | 
| `SystemException` | Une erreur système s'est produite lors de l'exécution d'une action. | 
| `ResourceNotFound` | Le bot spécifié est introuvable. | 
| `ResourceAccessDenied` | L'accès au bot est refusé. | 
| `ActionExecutionThrottled` | La limite du service de conversation avec les robots est dépassée. Le message d'erreur décrit la limite de service spécifique dépassée. | 

## Octroi d'autorisations pour utiliser un bot
<a name="bot-permissions"></a>

L'exemple suivant autorise le SDK Amazon Chime à appeler Amazon Lex. [https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_StartConversation.html](https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_StartConversation.html) APIs Vous devez explicitement autoriser le service audio à utiliser votre bot. Le bloc de condition est obligatoire pour les principaux de service. Le bloc de conditions doit utiliser les clés de contexte globales `AWS:SourceAccount` et`AWS:SourceArn`. `AWS:SourceAccount`Il s'agit de votre identifiant de compte AWS. `AWS:SourceArn`Il s'agit de l'ARN de la ressource de l'application audio PSTN qui invoque le bot Lex.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowChimePstnAudioUseBot",
      "Effect": "Allow",
      "Principal": {
        "Service": "voiceconnector.chime.amazonaws.com"
      },
      "Action": "lex:StartConversation",
  "Resource": "arn:aws:lex:us-east-1:123456789012:bot-alias/botId/aliasId",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "123456789012"
        },
        "ArnEquals": {
        "AWS:SourceArn": "arn:aws:chime:us-east-1:123456789012:sma/smaId"
        }
      }
    }
  ]
}
```

------

## Configuration des délais d'attente vocaux et DTMF
<a name="bot-timeouts"></a>

Vous pouvez configurer les délais d'expiration de la voix et du DTMF lors de la capture des entrées utilisateur. Vous pouvez configurer les délais d'expiration via les attributs de session lorsque vous démarrez une conversation avec un bot, et les remplacer dans la fonction Lambda de votre robot Lex si nécessaire. Amazon Lex vous permet de définir plusieurs emplacements pour une intention ou des robots. Étant donné que vous pouvez spécifier que les attributs de session s'appliquent au niveau de l'intention et de l'emplacement, vous pouvez spécifier que l'attribut est défini uniquement lorsque vous collectez un certain type d'entrée. Par exemple, vous pouvez spécifier un délai d'expiration plus long lorsque vous collectez un numéro de compte que lorsque vous collectez une date. Vous pouvez utiliser des caractères génériques dans la clé d'attribut de session. 

Par exemple, pour définir un délai d'attente vocal pour tous les créneaux à 4 000 millisecondes à toutes fins utiles, vous pouvez fournir un attribut de session en utilisant : `x-amz-lex:start-timeout-ms:*:*` comme nom d'attribut de session et `4000` comme valeur d'attribut de session. Pour plus d'informations, consultez la [section Configuration des délais d'expiration pour la capture des données saisies par les utilisateurs](https://docs.aws.amazon.com/lexv2/latest/dg/session-attribs-speech.htm) dans le manuel *Amazon Lex Developer Guide*. 

## Utilisation des entrées DTMF pendant une conversation
<a name="bot-dtmf"></a>

Les robots Amazon Lex prennent en charge la saisie vocale et au clavier au cours d'une conversation. Les robots interprètent les entrées du clavier comme des chiffres DTMF. Vous pouvez demander à vos contacts de terminer leur saisie par une virgule (\$1) et d'annuler une conversation à l'aide de la touche étoile (\$1). Si vous n'invitez pas les clients à terminer leur saisie par la touche dièse, Lex arrête d'attendre que d'autres touches soient appuyées au bout de 5 secondes.

## Quotas de facturation et de service
<a name="bot-billing"></a>

AWS vous facture les frais suivants :
+ Utilisation du SDK Amazon Chime pour l'appel. Pour plus d'informations, consultez la tarification du [SDK Amazon Chime](https://aws.amazon.com/chime/chime-sdk/pricing/).
+ Utilisation d'Amazon Lex pour interpréter le discours des utilisateurs. Pour plus d'informations, consultez la [tarification des conversations en streaming Amazon Lex](https://aws.amazon.com/lex/pricing/).
+ Utilisation d'Amazon Polly pour synthétiser les réponses textuelles de votre bot. Pour plus d'informations, consultez les [tarifs d'Amazon Polly.](https://aws.amazon.com/polly/pricing/)

Vous devez également connaître les quotas de service suivants :
+ Le SDK Amazon Chime dispose d'un quota de service correspondant au nombre maximum de robots Amazon Lex que vous pouvez utiliser avec l'action audio PSTN. [StartBotConversation](#start-bot-conversation) Pour plus d'informations, reportez-vous à la section [Trunking SIP et quotas vocaux](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html#chm-sdk-pstn-quotas) dans le manuel de *référence AWS général*.
+ Amazon Lex dispose d'un quota de service pour le nombre maximum de conversations vocales simultanées par bot Lex. Vous pouvez contacter l'équipe du service Amazon Lex pour obtenir des augmentations de quotas. Pour plus d'informations, consultez les [directives Amazon Lex et les quotas](https://docs.aws.amazon.com/lexv2/latest/dg/quotas.html) dans le *guide du développeur Amazon Lex*.
+ Amazon Polly dispose d'un quota de service pour la synthèse des réponses textuelles. Vous pouvez contacter l'équipe du service Amazon Polly pour obtenir des augmentations de quotas. Pour plus d'informations sur les quotas de service Amazon Polly, consultez la section [Quotas dans Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/limits.html), dans le manuel du développeur Amazon *Polly.*