

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

Memutar audio dan mengumpulkan digit DTMF. Jika terjadi kegagalan, seperti pengguna yang tidak memasukkan jumlah digit DTMF yang benar, tindakan memutar audio “kegagalan” dan kemudian memutar ulang audio utama hingga aplikasi media SIP menghabiskan jumlah upaya yang ditentukan dalam parameter. `Repeat`

Anda harus memutar file audio dari bucket S3. Bucket S3 harus memiliki AWS akun yang sama dengan aplikasi media SIP. Selain itu, Anda harus memberikan `s3:GetObject` izin kepada kepala [layanan Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html),. `voiceconnector.chime.amazonaws.com` Anda dapat menggunakan konsol S3 atau CLI untuk melakukan itu. 

Contoh kode berikut menunjukkan kebijakan bucket S3 yang khas.

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

------

Layanan Audio membaca dan menulis ke bucket S3 Anda atas nama Aplikasi Sip Media Anda. Untuk menghindari [masalah deputi yang membingungkan](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), Anda dapat membatasi akses bucket S3 ke satu aplikasi media 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"
                }
            }
        }
    ]
}
```

------

Contoh berikut menunjukkan `PlayAudioAndGetDigits` tindakan yang khas. 

```
{
    "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**  
*Deskripsi* — `CallId` peserta dalam `CallDetails` pemanggilan AWS Lambda fungsi  
*Nilai yang diizinkan* - ID panggilan yang valid  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

**ParticipantTag**  
*Deskripsi* — `ParticipantTag` salah satu peserta yang terhubung di `CallDetails`  
*Nilai yang diizinkan* - `LEG-A` atau `LEG-B`  
*Diperlukan* - Tidak  
*Nilai default* - `ParticipantTag` dari yang dipanggil `callLeg` Diabaikan jika Anda menentukan `CallId`

**InputDigitsRegex**  
*Deskripsi* - Pola ekspresi reguler  
*Nilai yang diizinkan* - Pola ekspresi reguler yang valid  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

**AudioSource.Type**  
*Deskripsi* - Jenis sumber untuk jenis file audio  
*Nilai yang diizinkan* - Bucket S3  
*Diperlukan* - Ya  
*Nilai default* - `"S3"`

**AudioSource.BucketName**  
*Deskripsi* — Untuk `AudioSource.Type` nilai S3, bucket S3 harus memiliki AWS akun yang sama dengan aplikasi media SIP. Bucket S3 harus memiliki akses ke kepala layanan [Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html),. `voiceconnector.chime.amazonaws.com`  
*Nilai yang diizinkan* — Bucket S3 yang valid yang Amazon Chime SDK `s3:GetObject` memiliki akses tindakan.  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**AudioSource.Key**  
*Deskripsi* — Nama kunci objek audio di bucket `AudioSource.BucketName` S3.  
*Nilai yang diizinkan* - File audio yang valid  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**FailureAudioSource.Type**  
*Deskripsi* — Nama kunci objek audio di bucket `FailureAudioSource.BucketName` S3.  
*Nilai yang diizinkan* - S3  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**FailureAudioSource.BucketName**  
*Deskripsi* — Untuk tipe sumber S3, bucket S3 harus memiliki AWS akun yang sama dengan aplikasi media SIP. [Kepala layanan Amazon Chime SDK Voice Connector](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html),`voiceconnector.chime.amazonaws.com`, harus memiliki akses ke bucket S3.  
*Nilai yang diizinkan* — Bucket S3 yang valid yang Amazon Chime SDK `s3:GetObject` memiliki akses tindakan.  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**FailureAudioSource.Key**  
*Deskripsi* — Nama kunci objek audio di bucket `FailureAudioSource.BucketName` S3.  
*Nilai yang diizinkan* - File audio yang valid  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**MinNumberOfDigits**  
*Deskripsi* — Jumlah minimum digit yang harus diambil sebelum waktu habis atau memutar audio “panggilan gagal”.  
*Nilai yang diizinkan* -> = 0  
*Diperlukan* - Tidak  
*Nilai default* - 0

**MaxNumberOfDigits**  
*Deskripsi* — Jumlah maksimum digit yang akan diambil sebelum berhenti tanpa digit penghentian.  
*Nilai yang diizinkan* -> `MinNumberOfDigits`  
*Diperlukan* - Tidak  
*Nilai default* - 128

**TerminatorDigits**  
*Deskripsi* — Digit yang digunakan untuk mengakhiri input jika pengguna memasukkan kurang dari `MaxNumberOfDigits`  
*Nilai yang diizinkan* - Salah satu dari digit ini: 0123456789\$1\$1  
*Diperlukan* - Tidak  
*Nilai default* - \$1

**InBetweenDigitsDurationInMilliseconds**  
*Deskripsi* — Waktu tunggu dalam milidetik antara input digit sebelum bermain. `FailureAudio`  
*Nilai yang diizinkan* -> 0  
*Diperlukan* - Tidak  
*Nilai default* - Jika tidak ditentukan, default ke nilai. `RepeatDurationInMilliseconds`

**Repeat**  
*Deskripsi* - Jumlah total upaya untuk mendapatkan digit  
*Nilai yang diizinkan* -> 0  
*Diperlukan* - Tidak  
*Nilai default* - 1

**RepeatDurationInMilliseconds**  
*Deskripsi* - Waktu dalam milidetik untuk menunggu di antara upaya `Repeat`  
*Nilai yang diizinkan* -> 0  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

Aplikasi media SIP selalu memanggil AWS Lambda fungsinya setelah menjalankan `PlayAudioAndGetDigits` tindakan, dengan jenis acara `ACTION_SUCCESSFUL` atau `ACTION_FAILED` pemanggilan. Ketika aplikasi berhasil mengumpulkan digit, ia menetapkan `ReceivedDigits` nilai dalam objek. `ActionData` Contoh berikut menunjukkan struktur acara pemanggilan fungsi itu AWS Lambda .

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

**Penanganan kesalahan**  
Ketika kesalahan validasi terjadi, aplikasi media SIP memanggil AWS Lambda fungsi dengan pesan kesalahan yang sesuai. Tabel berikut mencantumkan kemungkinan pesan kesalahan.


|  Kesalahan  |  Pesan  |  Alasan  | 
| --- | --- | --- | 
|  `InvalidAudioSource`  |  Nilai parameter sumber audio tidak valid.  |  Kesalahan ini dapat terjadi karena berbagai alasan. Misalnya, aplikasi media SIP tidak dapat mengakses file karena masalah izin, atau masalah dengan bucket S3. Atau, file audio mungkin gagal validasi karena durasi, ukuran, atau format yang tidak didukung.  | 
|  `InvalidActionParameter`  |  `CallId`atau `ParticipantTag` parameter untuk tindakan tidak valid.  |  A`CallId`,`ParticipantTag`, atau parameter lainnya tidak valid.  | 
|  `SystemException`  |  Kesalahan sistem saat menjalankan tindakan.  |  Terjadi kesalahan sistem saat menjalankan tindakan.  | 

Ketika tindakan gagal mengumpulkan jumlah digit yang ditentukan karena batas waktu atau terlalu banyak percobaan ulang, aplikasi media SIP memanggil AWS Lambda fungsi dengan jenis acara pemanggilan. `ACTION_FAILED`

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

Lihat contoh kerja di 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-panggilan](https://github.com/aws-samples/amazon-chime-sma-update-call)