

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

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

Spielt Audio ab und sammelt DTMF-Ziffern. Tritt ein Fehler auf, z. B. wenn ein Benutzer nicht die richtige Anzahl von DTMF-Ziffern eingibt, spielt die Aktion das „Fehler“ -Audio ab und gibt dann das Haupt-Audio wieder, bis die SIP-Medienanwendung die im Parameter definierte Anzahl von Versuchen ausgeschöpft hat. `Repeat`

Sie müssen Audiodateien aus dem S3-Bucket abspielen. Der S3-Bucket muss zu demselben AWS Konto gehören wie die SIP-Medienanwendung. Darüber hinaus müssen Sie dem [Amazon Chime SDK Voice Connector-Service Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) die `s3:GetObject` Genehmigung erteilen. `voiceconnector.chime.amazonaws.com` Sie können dazu die S3-Konsole oder die CLI verwenden. 

Das folgende Codebeispiel zeigt eine typische S3-Bucket-Richtlinie.

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

------

Der Audiodienst liest und schreibt im Namen Ihrer Sip-Medienanwendung in Ihren S3-Bucket. Um das [Problem mit dem verwirrten Deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) zu vermeiden, können Sie den Zugriff auf den S3-Bucket auf eine einzelne SIP-Medienanwendung beschränken.

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

------

Das folgende Beispiel zeigt eine typische `PlayAudioAndGetDigits` Aktion. 

```
{
    "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**  
*Beschreibung* — `CallId` des Teilnehmers am `CallDetails` AWS Lambda Funktionsaufruf  
*Zulässige Werte* — Eine gültige Anruf-ID  
*Erforderlich* — Nein  
*Standardwert* – Kein

**ParticipantTag**  
*Beschreibung* — `ParticipantTag` eines der verbundenen Teilnehmer am `CallDetails`  
*Zulässige Werte* — `LEG-A` oder `LEG-B`  
*Erforderlich* — Nein  
*Standardwert* — `ParticipantTag` der aufgerufene Wert wird `callLeg` ignoriert, wenn Sie Folgendes angeben `CallId`

**InputDigitsRegex**  
*Beschreibung* — Ein Muster für reguläre Ausdrücke  
*Zulässige Werte* — Ein gültiges Muster für reguläre Ausdrücke  
*Erforderlich* — Nein  
*Standardwert* – Kein

**AudioSource.Type**  
*Beschreibung* — Art der Quelle für den Audiodateityp  
*Zulässige Werte* — Ein S3-Bucket  
*Erforderlich* — Ja  
*Standardwert* — `"S3"`

**AudioSource.BucketName**  
*Beschreibung* — Für `AudioSource.Type` S3-Werte muss der S3-Bucket zu demselben AWS Konto gehören wie die SIP-Medienanwendung. Der Bucket S3 muss Zugriff auf den [Amazon Chime SDK Voice Connector Service Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) haben,`voiceconnector.chime.amazonaws.com`.  
*Zulässige Werte* — Ein gültiger S3-Bucket, für den Amazon Chime SDK `s3:GetObject` Aktionszugriff hat.  
*Erforderlich* — Ja  
*Standardwert* – Kein

**AudioSource.Key**  
*Beschreibung* — Der Schlüsselname des Audioobjekts im `AudioSource.BucketName` S3-Bucket.  
*Zulässige Werte* — Gültige Audiodateien  
*Erforderlich* — Ja  
*Standardwert* – Kein

**FailureAudioSource.Type**  
*Beschreibung* — Der Schlüsselname des Audioobjekts im `FailureAudioSource.BucketName` S3-Bucket.  
*Zulässige Werte* — S3  
*Erforderlich* — Ja  
*Standardwert* – Kein

**FailureAudioSource.BucketName**  
*Beschreibung* — Für S3-Quelltypen muss der S3-Bucket demselben AWS Konto angehören wie die SIP-Medienanwendung. Der [Amazon Chime SDK Voice Connector-Serviceprinzipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)`voiceconnector.chime.amazonaws.com`, muss Zugriff auf den S3-Bucket haben.  
*Zulässige Werte* — Ein gültiger S3-Bucket, für den Amazon Chime SDK `s3:GetObject` Aktionszugriff hat.  
*Erforderlich* — Ja  
*Standardwert* – Kein

**FailureAudioSource.Key**  
*Beschreibung* — Der Schlüsselname des Audioobjekts im `FailureAudioSource.BucketName` S3-Bucket.  
*Zulässige Werte* — Gültige Audiodateien  
*Erforderlich* — Ja  
*Standardwert* – Kein

**MinNumberOfDigits**  
*Beschreibung* — Die Mindestanzahl an Ziffern, die erfasst werden müssen, bevor eine Zeitüberschreitung eintritt oder die Audiodatei „Anruf fehlgeschlagen“ abgespielt wird.  
*Zulässige Werte* — >=0  
*Erforderlich* — Nein  
*Standardwert* — 0

**MaxNumberOfDigits**  
*Beschreibung* — Die maximale Anzahl von Ziffern, die erfasst werden sollen, bevor ein Stopp ohne eine letzte Ziffer beendet wird.  
*Zulässige Werte* — > `MinNumberOfDigits`  
*Erforderlich* — Nein  
*Standardwert* — 128

**TerminatorDigits**  
*Beschreibung* — Ziffern, die verwendet werden, um die Eingabe zu beenden, wenn der Benutzer weniger als `MaxNumberOfDigits`  
*Zulässige Werte* — Eine der folgenden Ziffern: 0123456789\#\*  
*Erforderlich — Nein*  
*Standardwert* — \#

**InBetweenDigitsDurationInMilliseconds**  
*Beschreibung* — Die Wartezeit in Millisekunden zwischen Zifferneingaben vor der Wiedergabe. `FailureAudio`  
*Zulässige Werte* — >0  
*Erforderlich* — Nein  
*Standardwert* — Wenn nicht angegeben, wird standardmäßig der `RepeatDurationInMilliseconds` Wert verwendet.

**Repeat**  
*Beschreibung* — Gesamtzahl der Versuche, Ziffern abzurufen  
*Zulässige Werte* — >0  
*Erforderlich* — Nein  
*Standardwert* — 1

**RepeatDurationInMilliseconds**  
*Beschreibung* — Wartezeit in Millisekunden zwischen Versuchen `Repeat`  
*Zulässige Werte* — >0  
*Erforderlich* — Ja  
*Standardwert* – Kein

Die SIP-Medienanwendung ruft ihre AWS Lambda Funktion immer auf, nachdem sie die `PlayAudioAndGetDigits` Aktion ausgeführt hat, und zwar mit dem `ACTION_FAILED` Ereignistyp `ACTION_SUCCESSFUL` oder. Wenn die Anwendung erfolgreich Ziffern erfasst hat, legt sie den `ReceivedDigits` Wert im Objekt fest. `ActionData` Das folgende Beispiel zeigt die Aufrufereignisstruktur dieser AWS Lambda Funktion.

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

**Fehlerbehandlung**  
Wenn ein Validierungsfehler auftritt, ruft die SIP-Medienanwendung die AWS Lambda Funktion mit der entsprechenden Fehlermeldung auf. In der folgenden Tabelle sind die möglichen Fehlermeldungen aufgeführt.


|  Fehler  |  Fehlermeldung  |  Grund  | 
| --- | --- | --- | 
| `InvalidAudioSource` | Der Wert des Parameters für die Audioquelle ist ungültig. | Dieser Fehler kann aus mehreren Gründen auftreten. Beispielsweise kann die SIP-Medienanwendung aufgrund von Berechtigungsproblemen oder Problemen mit dem S3-Bucket nicht auf die Datei zugreifen. Oder die Überprüfung der Audiodatei schlägt möglicherweise aufgrund von Dauer, Größe oder nicht unterstütztem Format fehl. | 
| `InvalidActionParameter` | `CallId`oder der `ParticipantTag` Parameter für die Aktion ist ungültig. | Ein `CallId``ParticipantTag`, oder ein anderer Parameter ist nicht gültig. | 
| `SystemException` | Systemfehler beim Ausführen der Aktion. | Beim Ausführen der Aktion ist ein Systemfehler aufgetreten. | 

Wenn die Aktion aufgrund eines Timeouts oder zu vieler Wiederholungen nicht die Anzahl der angegebenen Ziffern erfasst, ruft die SIP-Medienanwendung die AWS Lambda Funktion mit dem `ACTION_FAILED` Aufrufereignistyp auf.

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

Arbeitsbeispiele finden Sie unter: 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-call](https://github.com/aws-samples/amazon-chime-sma-update-call)