

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

# Tindakan yang didukung untuk layanan audio Amazon Chime SDK PSTN
<a name="specify-actions"></a>

Anda dapat menentukan berbagai jenis pensinyalan dan tindakan media dalam respons dari suatu AWS Lambda fungsi. Setiap tindakan memiliki sifat yang berbeda. Topik berikut memberikan contoh kode dan menjelaskan cara menggunakan tindakan.

**Topics**
+ [Penggunaan TransactionAttributes](transaction-attributes.md)
+ [Menggunakan rekaman panggilan](sip-apps-call-record.md)
+ [CallAndBridge](call-and-bridge.md)
+ [Hangup](hangup.md)
+ [JoinChimeMeeting](join-chime-meeting.md)
+ [ModifyChimeMeetingAttendee(mematikan dan mematikan audio)](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)

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

Anda menggunakan struktur `TransactionAttributes` data untuk menyimpan informasi khusus aplikasi, seperti status panggilan atau rapat IDs, lalu meneruskan data tersebut ke pemanggilan Lambda AWS . Struktur ini menghilangkan kebutuhan untuk menyimpan data dalam database eksternal seperti Amazon DynamoDB. 

`TransactionAttributes`adalah [Objek JSON](https://www.w3schools.com/js/js_json_objects.asp) yang berisi key/value pairs. The objects can contain a maximum of 100 key/value pasangan, dan objek memiliki ukuran muatan maksimum 20 KB. Data dalam suatu `TransactionAttributes` struktur bertahan selama masa transaksi.

Ketika suatu AWS Lambda fungsi lolos `TransactionAttributes` ke aplikasi media SIP, aplikasi memperbarui atribut yang disimpan. Jika Anda meneruskan `TransactionAttributes` objek dengan set kunci yang ada, Anda memperbarui nilai yang disimpan. Jika Anda melewati set kunci yang berbeda, Anda mengganti nilai yang ada dengan nilai dari set kunci yang berbeda. Melewati map kosong (`{}`) menghapus semua nilai yang disimpan.

**Topics**
+ [Pengaturan TransactionAttributes](set-trans-attributes.md)
+ [Memperbarui TransactionAttributes](update-trans-attributes.md)
+ [Kliring TransactionAttributes](clear-trans-attributes.md)
+ [Penanganan ACTION\$1SUCCESSFUL peristiwa](attribute-trans-success.md)
+ [Input tidak valid](attribute-trans-invalid.md)

# Pengaturan TransactionAttributes
<a name="set-trans-attributes"></a>

Contoh berikut menunjukkan cara mengatur `TransactionAttributes` bersama [PlayAudio](play-audio.md) tindakan dan meneruskan atribut dari AWS Lambda fungsi ke aplikasi media 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"
    }
}
```

# Memperbarui TransactionAttributes
<a name="update-trans-attributes"></a>

Untuk memodifikasi tersimpan`TransactionAttributes`, perbarui isi objek JSON dengan nilai baru. Dalam contoh berikut, kunci `NewKey1` dan `NewKey2` ditambahkan ke`TransactionAttributes`. Kunci-kunci ini dipasangkan dengan nilai `NewValue1` dan`NewValue2`, masing-masing.

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

Jika, dalam contoh sebelumnya, Anda meneruskan `NewValue1` ke`key1`, nilai yang ada dari `key1` akan diganti dengan`NewValue1`. Namun, meneruskan nilai untuk `NewKey1` membuat pasangan kunci/nilai baru.

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

Untuk menghapus isi `TransactionAttributes` objek, lewati `TransactionAttributes` bidang dengan Objek JSON kosong:

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

**catatan**  
Anda tidak dapat menghapus data dari `TransactionAttributes` struktur dengan menetapkan nilainya`null`. Juga, menghilangkan `TransactionAttribute` struktur tidak menghapus datanya. Selalu berikan objek JSON kosong `TransactionAttributes` untuk menghapus data dari objek.

# Penanganan ACTION\$1SUCCESSFUL peristiwa
<a name="attribute-trans-success"></a>

Contoh berikut menunjukkan bagaimana sukses [PlayAudio](play-audio.md) mengirim disimpan `TransactionAttributes` sebagai bagian dari`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" 
            } 
        ] 
    } 
}
```

# Input tidak valid
<a name="attribute-trans-invalid"></a>

Contoh berikut menunjukkan input yang tidak valid. Dalam hal ini, objek JSON meneruskan terlalu banyak item ke aplikasi media 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" 
    } 
}
```

Contoh berikut menunjukkan respons terhadap input yang diberikan sebelumnya. Output ini diteruskan dari aplikasi media SIP kembali ke fungsi AWS Lambda yang memanggil aplikasi.

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

# Menggunakan rekaman panggilan
<a name="sip-apps-call-record"></a>

Tindakan perekaman panggilan untuk aplikasi media SIP memungkinkan Anda membuat perekaman panggilan dan solusi transkripsi pasca-panggilan untuk berbagai kegunaan. Misalnya, Anda dapat merekam panggilan layanan pelanggan dan menggunakannya untuk pelatihan.

Anda menggunakan tindakan perekaman panggilan bersama dengan aplikasi media SIP Anda. Anda juga dapat menggunakan tindakan sesuai permintaan atau sebagai respons terhadap acara SIP. 
+ Untuk memulai perekaman panggilan sesuai permintaan di aplikasi media SIP Anda, Anda menggunakan [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 untuk memanggil aplikasi Anda dan mengembalikan tindakan. [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) 
+ Untuk memulai perekaman panggilan sebagai respons terhadap peristiwa SIP, Anda mengembalikan `StartCallRecording` tindakan dalam aplikasi Anda. 

Anda dapat menjeda dan melanjutkan rekaman yang sedang berlangsung. Untuk menjeda, gunakan [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)tindakan. Untuk melanjutkan, gunakan `ResumeCallRecording` tindakan. Setiap kali Anda menjeda atau melanjutkan rekaman, tindakan menangkap nada yang menunjukkan jeda atau dimulainya kembali. Saat Anda menjeda, tindakan merekam keheningan, yang digunakan Amazon Chime SDK untuk melacak panjang jeda dan menyertakan jeda dalam tagihan Anda. Anda dapat menjeda dan melanjutkan perekaman sesering yang diperlukan.

Untuk menghentikan perekaman panggilan, Anda mengembalikan [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)tindakan. Namun, rekaman panggilan otomatis berhenti ketika panggilan berhenti, dan dalam hal ini Anda tidak perlu secara eksplisit mengembalikan tindakan. `StopCallRecording` Anda hanya dapat memulai dan berhenti merekam sekali untuk leg panggilan individu.

Amazon Chime SDK mengirimkan rekaman panggilan ke bucket Amazon S3 yang Anda pilih. Bucket harus milik AWS akun Anda. Setelah panggilan berhenti, aplikasi media SIP mengirimkan rekaman ke folder yang ditentukan dalam `Destination` parameter [StartCallRecording](start-call-recording.md) tindakan. Amazon Chime SDK merekam panggilan dalam format WAV terbuka. Panggilan yang merekam trek masuk dan keluar menggunakan mode stereo, dengan trek masuk di saluran kiri dan trek keluar di saluran kanan. Jika Anda hanya merekam trek masuk atau keluar, sistem menggunakan mode mono.

**catatan**  
Rekaman yang dibuat menggunakan fitur ini dapat tunduk pada undang-undang atau peraturan mengenai pencatatan komunikasi elektronik. Adalah tanggung jawab Anda dan pengguna akhir Anda untuk mematuhi semua hukum yang berlaku mengenai rekaman, termasuk memberi tahu semua peserta dengan benar dalam sesi rekaman atau komunikasi bahwa sesi atau komunikasi sedang direkam, dan mendapatkan persetujuan mereka.

## Penagihan untuk perekaman panggilan
<a name="call-billing"></a>

Amazon Chime SDK menagih Anda per menit untuk waktu perekaman panggilan diaktifkan untuk leg panggilan, dan waktu itu mencakup semua jeda. Anda ditagih untuk penggunaan perekaman panggilan setelah rekaman panggilan dikirimkan ke bucket Amazon S3 Anda.

# Merekam trek audio
<a name="record-legs"></a>

Anda dapat merekam hanya trek panggilan masuk atau keluar, atau kedua trek panggilan.

Gambar ini menunjukkan panggilan masuk berkaki satu, atau tidak dijembatani, yang khas. 

![\[Panggilan masuk yang hanya berkomunikasi dengan aplikasi media SIP.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/call-record-sma-one-leg.png)


Panggilan hanya memiliki satu kaki dengan **panggilan `callID` id-1**. Trek `INCOMING` audio adalah audio dari penelepon ke aplikasi media SIP. Trek `OUTGOING` audio adalah audio dari aplikasi media SIP ke penelepon. Aplikasi media SIP Anda menentukan panggilan `CallId` yang ingin Anda rekam. Untuk merekam peserta yang melakukan panggilan, Anda tentukan`INCOMING`. Untuk merekam peserta yang menanggapi panggilan, Anda tentukan`OUTGOING`. Untuk merekam kedua peserta, tentukan`BOTH`.

Gambar ini menunjukkan panggilan jembatan yang khas dengan dua peserta.

![\[Panggilan masuk yang berkomunikasi dengan aplikasi media SIP dan peserta kedua.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/call-record-sma-bridged.png)


****Dalam contoh ini, panggilan memiliki dua kaki panggilan, panggilan-id-1 dan **panggilan-id-2, dan panggilan-id-1** dijembatani ke **panggilan-id-2**.**** Ini menciptakan empat trek audio, aliran audio masuk dan keluar untuk kedua panggilan. IDs Anda dapat menentukan trek panggilan IDs dan audio mana yang akan direkam. Misalnya, jika Anda ingin merekam trek audio dari peserta yang dipanggil, Anda merekam trek `INCOMING` audio dengan menentukan **call-id-2** sebagai `CallId` dan `INCOMING` sebagai trek.

Jika Anda ingin merekam semua yang didengar penelepon, Anda merekam trek `OUTGOING` audio dengan menentukan **panggilan-id-1** sebagai dan sebagai trek. `CallId` `OUTGOING` Jika Anda ingin merekam semua audio yang `Caller` dikatakan dan didengar, Anda merekam trek `BOTH` audio dengan menentukan `call-id-1` sebagai `CallId` dan `BOTH` sebagai trek.

# Contoh kasus penggunaan
<a name="recording-use-cases"></a>

Aplikasi media SIP menyediakan tindakan perekaman panggilan sebagai blok bangunan. Mereka memberi Anda fleksibilitas untuk membangun solusi perekaman panggilan untuk kasus penggunaan bisnis Anda. Kasus-kasus berikut menggambarkan beberapa skenario penggunaan umum.

**Topics**
+ [Kasus 1: Merekam panggilan satu kaki yang melibatkan tindakan SIP](#recording-case-1)
+ [Kasus 2: Merekam audio secara selektif dalam panggilan yang dijembatani](#recording-case-2)
+ [Kasus 3: Merekam beberapa kaki panggilan](#recording-case-3)
+ [Kasus 4: Perekaman sesuai permintaan dengan jeda dan lanjutkan](#on-demand-pause-resume)

## Kasus 1: Merekam panggilan satu kaki yang melibatkan tindakan SIP
<a name="recording-case-1"></a>

Anda dapat merekam penelepon dan audio apa pun yang dihasilkan oleh tindakan aplikasi media SIP, seperti [PlayAudio](play-audio.md) dan [PlayAudioAndGetDigits](play-audio-get-digits.md) tindakan. Selama perekaman, jika penelepon menekan digit, rekaman menangkap nada digit itu. Contoh ini menggunakan `PlayAudioAndGetDigits` tindakan, tetapi respon suara interaktif (IVR) dapat menjadi serangkaian tindakan aplikasi media SIP yang kompleks.

Dalam contoh ini, aplikasi media SIP merekam trek audio antara penelepon dan aplikasi media SIP itu sendiri. Rekaman dimulai saat panggilan dibuat, dan berhenti saat pemanggil menutup telepon. Penagihan dimulai saat panggilan dibuat, dan berhenti saat pemanggil menutup telepon.

![\[Diagram aplikasi media SIP merekam dua trek audio, dalam hal ini, antara penelepon dan aplikasi itu sendiri.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/sma-recording-case-1.png)


## Kasus 2: Merekam audio secara selektif dalam panggilan yang dijembatani
<a name="recording-case-2"></a>

Anda dapat merekam trek audio dari satu peserta panggilan secara selektif. Anda dapat menggunakan fitur ini untuk mengaktifkan perekaman panggilan secara selektif hanya untuk peserta tertentu.

Dalam contoh ini, aplikasi media SIP merekam trek audio yang masuk antara pihak yang disebut dan aplikasi media SIP itu sendiri dengan menentukan **call-id-2** sebagai dan sebagai trek. `CallId` `INCOMING` Rekaman panggilan dimulai ketika penelepon dijembatani ke pihak yang dipanggil, dan itu juga saat penagihan dimulai. Rekaman berhenti ketika pesta yang dipanggil menutup telepon, dan itu juga saat penagihan berakhir. Rekaman ini hanya memiliki trek audio partai yang disebut. 

![\[Diagram aplikasi media SIP secara selektif merekam satu trek.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/sma-recording-case-2.png)


## Kasus 3: Merekam beberapa kaki panggilan
<a name="recording-case-3"></a>

Anda dapat merekam beberapa kaki panggilan. Misalnya, Anda menjembatani panggilan ke peserta. Ketika peserta itu menutup telepon, panggilan telepon dijembatani ke peserta lain. Anda dapat mengaktifkan perekaman panggilan untuk ketiga kaki panggilan. 

Contoh ini menunjukkan tiga file rekaman terpisah. Rekaman untuk leg panggilan pertama menangkap percakapan antara penelepon, aplikasi Anda, dan dua peserta yang dijembatani ke dalam panggilan. Rekaman untuk leg panggilan kedua menangkap percakapan antara penelepon dan peserta pertama. Rekaman untuk leg panggilan ketiga menangkap percakapan antara penelepon dan peserta kedua. 

Kasus ini menciptakan tiga kaki panggilan, dan penagihan berlaku untuk awal dan akhir setiap kaki panggilan. Dengan kata lain, sistem mengirimkan tiga rekaman ke bucket S3 Anda, dan Anda ditagih untuk masing-masing. 

![\[Diagram aplikasi media SIP yang merekam beberapa kaki panggilan.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/sma-recording-case-3.png)


## Kasus 4: Perekaman sesuai permintaan dengan jeda dan lanjutkan
<a name="on-demand-pause-resume"></a>

Anda dapat memulai, menghentikan, menjeda, dan melanjutkan perekaman panggilan sesuai permintaan menggunakan API. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html) Anda dapat membangun aplikasi klien yang memanggil `UpdateSipMediaApplicationCall` API dan memanggil aplikasi media SIP Anda untuk mengembalikan tindakan perekaman panggilan.

Pengguna akhir Anda menggunakan aplikasi klien untuk mengontrol perekaman panggilan. Misalnya, di call center, agen akan menggunakan aplikasi klien desktop untuk memicu tindakan perekaman panggilan sesuai permintaan. Dalam contoh call center, agen mungkin meminta izin penelepon untuk merekam panggilan telepon, dan mereka dapat mengklik aplikasi klien untuk mulai merekam setelah pemanggil setuju. Dalam contoh lain, penelepon mungkin perlu memberikan informasi seperti nomor jaminan sosial (SSN). Namun, kebijakan call center mensyaratkan bahwa agen tidak boleh mencatat informasi seperti SSN pelanggan. Agen dapat mengklik aplikasi untuk menjeda rekaman saat pelanggan memberikan informasi, lalu klik lagi untuk melanjutkan perekaman. Setelah agen menangani permintaan penelepon, agen mengklik aplikasi untuk berhenti merekam dan menutup panggilan.

Dalam kasus penggunaan ini, aplikasi media SIP merekam trek audio antara penelepon dan aplikasi media SIP. Karena `call-id-1` kaki dijembatani ke `call-id-2` kaki, sistem merekam audio pada kedua kaki, penelepon dan dipanggil. Perekaman dan penagihan dimulai saat `UpdateSipMediaApplicationCall` API memanggil tindakan. `StartCallRecording` Perekaman dan penagihan berhenti saat `UpdateSipMediaApplicationCall` API memanggil tindakan. `StopCallRecording` Sebagai pengingat, menjeda rekaman tidak mengubah durasinya, dan Anda ditagih untuk semua jeda. 

![\[Diagram perekaman aplikasi media SIP sesuai permintaan dengan perekaman dijeda dan dilanjutkan.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/sma-recording-on-demand.png)


# Tindakan perekaman panggilan untuk aplikasi media SIP
<a name="use-recording-apis"></a>

Anda dapat menentukan tindakan perekaman panggilan yang berbeda dalam respons dari AWS Lambda fungsi aplikasi media SIP Anda. Topik berikut memberikan contoh kode dan menjelaskan cara menggunakan tindakan.

**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>

`StartCallRecording`Tindakan memulai perekaman kaki panggilan. Anda mulai merekam panggilan di aplikasi media SIP Anda, baik sesuai permintaan atau sebagai respons terhadap acara SIP.
+ Untuk memulai perekaman panggilan sesuai permintaan, Anda menggunakan `UpdateSipMediaApplication` API untuk memanggil aplikasi Anda dan mengembalikan tindakan. `StartCallRecording`
+ Untuk memulai perekaman panggilan sebagai respons terhadap peristiwa SIP, Anda mengembalikan `StartCallRecording` tindakan dalam aplikasi Anda. 

Anda menentukan apakah Anda ingin merekam trek audio untuk kaki masuk, kaki keluar, atau keduanya. Bagian berikut menjelaskan cara menggunakan `StartCallRecording` tindakan.

**catatan**  
Rekaman yang dibuat menggunakan fitur ini dapat tunduk pada undang-undang atau peraturan mengenai pencatatan komunikasi elektronik. Adalah tanggung jawab Anda dan pengguna akhir Anda untuk mematuhi semua hukum yang berlaku mengenai rekaman, termasuk memberi tahu semua peserta dengan benar dalam sesi rekaman atau komunikasi bahwa sesi atau komunikasi sedang direkam, dan mendapatkan persetujuan mereka.

**Topics**
+ [Meminta tindakan StartCallRecording](#request-start)
+ [Menentukan tujuan perekaman](#recording-destination)
+ [Memberikan izin bucket Amazon S3](#grant-s3-perms)
+ [Tindakan respon sukses](#action-successful)
+ [Respons kesalahan tindakan](#action-error)

## Meminta tindakan StartCallRecording
<a name="request-start"></a>

Contoh berikut menunjukkan cara meminta `StartCallRecording` tindakan untuk `BOTH` trek.

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

**CallId**  
*Deskripsi* — `CallId` peserta dalam `CallDetails` pemanggilan AWS Lambda fungsi  
*Nilai yang diizinkan* - ID panggilan yang valid  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**Lacak**  
*Deskripsi* - Audio `Track` rekaman panggilan.  
*Nilai yang diizinkan* —`BOTH`,`INCOMING`, atau `OUTGOING`  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**Destinasi.Type**  
*Deskripsi* — Jenis tujuan. Hanya Amazon S3 yang diizinkan.  
*Nilai yang diizinkan* - Amazon S3  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**Destinasi.Lokasi**  
*Deskripsi* - Bucket Amazon S3 yang valid dan awalan kunci Amazon S3 opsional. Bucket harus memiliki izin ke kepala layanan Amazon Chime SDK Voice Connector, voiceconnector.chime.amazonaws.com.  
*Nilai yang diizinkan* — Jalur Amazon S3 yang valid di mana Amazon Chime SDK memiliki izin untuk tindakan dan tindakan. `s3:PutObject` `s3:PutObjectAcl`  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

## Menentukan tujuan perekaman
<a name="recording-destination"></a>

Amazon Chime SDK mengirimkan rekaman panggilan ke bucket Amazon S3 Anda. Bucket harus milik AWS akun Anda. Anda menentukan lokasi bucket dalam `Destination` parameter `StartCallRecording` tindakan. `Type`Bidang dalam `Destination` parameter harus`S3`. `Location`Bidang ini terdiri dari bucket Amazon S3 Anda, ditambah awalan kunci objek opsional tempat rekaman panggilan dikirimkan. 

Aplikasi media SIP menggunakan tanggal dan waktu panggilan yang ditentukan`Location`, ID transaksi, dan ID panggilan untuk memformat kunci objek Amazon S3. Respons `StartCallRecording` tindakan mengembalikan kunci objek Amazon S3 lengkap.

Jika Anda hanya menyediakan bucket Amazon S3 di `Location` lapangan, aplikasi media SIP menambahkan awalan default`Amazon-Chime-SMA-Call-Recordings`, ke jalur Amazon S3. Aplikasi media SIP juga menambahkan tahun, bulan, dan hari waktu mulai panggilan untuk membantu mengatur rekaman. Contoh berikut menunjukkan format umum jalur Amazon S3 dengan awalan default. Contoh ini digunakan `myRecordingBucket` sebagai `Location` nilai.

```
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
```

Contoh berikut menunjukkan data yang direpresentasikan dalam jalur rekaman panggilan Amazon S3.

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

Saat Anda memberikan bucket Amazon S3 dan key prefix object di `Location` bidang, aplikasi media SIP menggunakan awalan kunci objek Anda di jalur Amazon S3 tujuan, bukan awalan default. Contoh berikut menunjukkan format umum panggilan yang merekam jalur Amazon S3 dengan awalan Anda. Misalnya, Anda dapat menentukan myRecordingBucket /TechnicalSupport/English sebagai. `Location` 

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

Contoh berikut menunjukkan data di jalur Amazon S3.

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

Rekaman yang dikirim ke bucket Amazon S3 Anda berisi metadata [objek Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) tambahan tentang kaki panggilan. Tabel berikut mencantumkan metadata objek Amazon S3 yang didukung.


| Nama | Deskripsi | 
| --- | --- | 
| transaksi-id | ID Transaksi panggilan telepon | 
| call-id | CallId peserta dalam CallDetails pemanggilan AWS Lambda fungsi | 
| perekaman-durasi | Durasi perekaman panggilan dalam hitungan detik | 
| recording-audio-file-format | Format file audio perekaman panggilan direpresentasikan sebagai jenis media internet | 

## Memberikan izin bucket Amazon S3
<a name="grant-s3-perms"></a>

Bucket Amazon S3 tujuan Anda harus memiliki AWS akun yang sama dengan aplikasi Anda. Selain itu, tindakan harus memberikan `s3:PutObject` dan `s3:PutObjectAcl` izin kepada kepala layanan Amazon Chime SDK Voice Connector,. `voiceconnector.chime.amazonaws.com` Contoh berikut memberikan izin yang sesuai. 

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

------

Layanan audio PSTN 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 izin bucket S3 ke satu aplikasi media 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"
                }
            }
        }
    ]
}
```

------

## Tindakan respon sukses
<a name="action-successful"></a>

Ketika perekaman panggilan berhasil dimulai pada leg panggilan, aplikasi media SIP memanggil AWS Lambda fungsi dengan jenis `ACTION_SUCCESSFUL` acara. Lokasi perekaman panggilan dikembalikan dalam respons. 

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

## Respons kesalahan tindakan
<a name="action-error"></a>

Untuk kesalahan validasi, aplikasi media SIP memanggil AWS Lambda fungsi dengan pesan kesalahan yang sesuai. Tabel berikut mencantumkan pesan kesalahan.




| Kesalahan | Pesan | Alasan | 
| --- | --- | --- | 
| `InvalidActionParameter` | `CallId`parameter untuk tindakan tidak valid | Parameter apa pun tidak valid. | 
| `SystemException` | Kesalahan sistem saat menjalankan tindakan. | Jenis lain dari kesalahan sistem terjadi saat menjalankan tindakan. | 

Ketika tindakan gagal merekam media pada leg panggilan, aplikasi media SIP memanggil AWS Lambda fungsi dengan jenis `ActionFailed` acara. 

Contoh berikut menunjukkan respon kesalahan tipikal.

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

Lihat contoh kerja di 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>

`StopCallRecording`Tindakan menghentikan perekaman kaki panggilan. Perekaman berhenti secara otomatis saat panggilan berakhir, dan aplikasi Anda tidak perlu mengembalikan tindakan secara eksplisit. `StopCallRecording` Setelah perekaman untuk leg panggilan berhenti, itu tidak dapat dimulai lagi, dan rekaman dikirim ke tujuan yang ditentukan dalam `StartCallRecording` tindakan. 

Contoh berikut berhenti merekam untuk leg `call-id-1` panggilan. 

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

**CallId**  
*Deskripsi* — `CallId` peserta dalam `CallDetails` pemanggilan AWS Lambda fungsi  
*Nilai yang diizinkan* - ID panggilan yang valid  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

Lihat contoh kerja di 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>

`PauseCallRecording`Tindakan menghentikan perekaman kaki panggilan. Setiap kali Anda menjeda rekaman, rekaman menangkap nada yang menunjukkan jeda. Saat Anda berhenti, rekaman berlanjut, tetapi hanya menangkap keheningan. Menjeda rekaman tidak mempengaruhi total durasi rekaman. Anda dapat menjeda dan melanjutkan perekaman sesering yang diperlukan.

Contoh berikut menjeda perekaman. 

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

**CallId**  
*Deskripsi* — `CallId` peserta dalam `CallDetails` pemanggilan AWS Lambda fungsi  
*Nilai yang diizinkan* - ID panggilan yang valid  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

Lihat contoh kerja di 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>

`ResumeCallRecording`Aksi tersebut melanjutkan perekaman kaki panggilan. Sebelum rekaman dimulai ulang, nada singkat diputar. Anda dapat menjeda dan melanjutkan rekaman beberapa kali selama durasi leg panggilan. 

Contoh berikut melanjutkan perekaman. 

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

**CallId**  
*Deskripsi* — `CallId` peserta dalam `CallDetails` pemanggilan AWS Lambda fungsi  
*Nilai yang diizinkan* - ID panggilan yang valid  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

Lihat contoh kerja di 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>

Membuat panggilan keluar ke nomor telepon PSTN, atau ke trunk SIP yang dikonfigurasi sebagai Amazon Chime SDK Voice Connector atau Amazon Chime SDK Voice Connector Group, lalu menjembatani dengan panggilan yang ada. Anda gunakan `PSTN` saat memanggil nomor telepon, dan `AWS` saat memanggil trunk SIP. 

Panggilan yang ada dapat berupa panggilan keluar yang dibuat dengan menggunakan [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, atau panggilan masuk yang dibuat oleh aturan SIP yang memanggil AWS Lambda fungsi dengan peristiwa. `NewInboundCall` Saat menerapkan `CallAndBridge` tindakan ke titik akhir Konektor Suara atau Grup Konektor Suara, Anda harus menentukan Nomor Sumber Daya Amazon (ARN) Konektor Suara atau Grup Konektor Suara.

Anda juga dapat menambahkan header SIP khusus ke panggilan dan AWS Lambda fungsi keluar. Header khusus memungkinkan Anda untuk meneruskan nilai seperti nomor lantai dan kode pos. Untuk informasi selengkapnya tentang header khusus, lihat. [Menggunakan header SIP di layanan audio Amazon Chime SDK PTSN](sip-headers.md)

Saat menggunakan fungsi panggilan dan jembatan, penting untuk dicatat bahwa setiap panggilan dihitung terhadap jumlah panggilan bersamaan aktif Anda yang digunakan untuk menghitung Batas Panggilan Aktif SMA. Dengan pemikiran ini, saat mengelola Batas Panggilan Aktif SMA Anda untuk panggilan dan jembatan, Anda harus menghitung 2 panggilan untuk setiap 1 panggilan dan tindakan jembatan. Untuk informasi lebih lanjut, lihat [SIP trunking dan kuota suara](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html#chm-sdk-pstn-quotas) di. *Referensi Umum AWS*

Kode contoh berikut menunjukkan tindakan khas yang menjembatani ke titik akhir PSTN.

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

Contoh berikut menunjukkan tindakan tipikal yang menggunakan Konektor Suara atau Grup Konektor Suara, ditambah header SIP khusus.

```
{
   "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**  
*Deskripsi* — Interval sebelum waktu panggilan habis. Timer dimulai pada pengaturan panggilan.  
*Nilai yang diizinkan* - Antara 1 dan 120, inklusif  
*Diperlukan* - Tidak  
*Nilai default* - 30

**CallerIdNumber**  
*Deskripsi* — Nomor milik pelanggan, atau nomor Dari A Leg  
*Nilai yang diizinkan* - Nomor telepon yang valid dalam format E.164  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**Endpoints**  
*Deskripsi* — Titik akhir panggilan  
*Nilai yang diizinkan*:   
+ `BridgeEndpointType`- `AWS` untuk Konektor Suara dan Grup Konektor Suara, jika tidak`PSTN`.
+ `Arn`— ARN dari Konektor Suara atau Grup Konektor Suara. Hanya diperlukan ketika Anda menggunakan `AWS` sebagai`BridgeEndpointType`. 
+ `Uri`— Nilai URI tergantung pada jenis titik akhir.

  Untuk `PSTN` titik akhir, URI harus berupa nomor telepon E.164 yang valid.

  Untuk `AWS` titik akhir, nilai URI menetapkan `user` bagian dari. `Request-URI` Anda harus menggunakan [Augmented Backus-Naur](https://datatracker.ietf.org/doc/html/rfc2234) Format. Panjang yang dibutuhkan: antara 1 dan 36, inklusif. Gunakan nilai-nilai berikut: `a-z, A-Z, 0-9, &, =, +, $, /, %, -, _, !, ~, *, ` (`,`), (`.`)

  Nilai host berasal dari rute Inbound dari Konektor Suara target. `Request-URI` Contoh berikut menunjukkan `CallAndBridge` tindakan dengan `AWS` titik akhir.

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

  Untuk informasi selengkapnya tentang rute Masuk dan Konektor Suara, lihat [Mengedit setelan Konektor Suara Amazon Chime SDK](https://docs.aws.amazon.com/chime-sdk/latest/ag/edit-voicecon.html).
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**SipHeaders**  
*Deskripsi* - Memungkinkan Anda untuk melewati nilai tambahan. Gunakan hanya dengan tipe `AWS` endpoint.  
*Nilai yang diizinkan* - header SIP Valid  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

Contoh berikut menunjukkan `CallAndBridge` tindakan sukses yang menggunakan endpoint 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"
         }
      ]
   }
}
```

Contoh berikut menunjukkan `CallAndBridge` tindakan yang gagal.

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

## Alur panggilan
<a name="call-bridge-flows"></a>

`CallAndBridge`Tindakan ini memberikan sinyal panggilan dan pengalaman audio yang berbeda untuk leg panggilan yang ada, tergantung pada parameter dan apakah kaki terhubung.

Diagram berikut menunjukkan menunjukkan alur panggilan dengan parameter yang berbeda ketika kaki panggilan masuk A sudah terhubung.

![\[Aliran panggilan yang dijawab melalui CallAndBridge tindakan.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/call-bridge-ans-2.png)


Diagram berikut menunjukkan alur panggilan untuk panggilan yang tidak dijawab.

![\[Aliran panggilan yang tidak terjawab melalui CallAndBridge tindakan.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/SMA_Bridging_NotAns.png)


**Detail Tambahan**  
Ingat fakta-fakta ini tentang `CallAndBridge` tindakan tersebut.
+ `CallTimeoutSeconds`— Timer ini dimulai ketika undangan SIP dikirim pada B-Leg. Anda dapat menetapkan nilai target yang diinginkan, tetapi nilai ini dapat diabaikan oleh operator hulu.
+ `CallerIdNumber`— Nomor telepon ini harus milik pelanggan, atau nomor Dari A-Leg.
+ **Perilaku hang-up dan kasus tepi** - Jika satu kaki panggilan menutup telepon, kaki panggilan lainnya tidak secara otomatis menutup panggilan. Ketika suatu `Hangup` acara dikirim ke AWS Lambda fungsi, kaki yang tersisa harus diputuskan secara independen. Jika kaki panggilan dibiarkan menggantung, panggilan ditagih sampai ditutup. Misalnya, skenario berikut dapat menyebabkan biaya tak terduga:
  + Anda mencoba menjembatani ke nomor telepon tujuan. Tujuannya sibuk dan mengirim panggilan langsung ke voicemail. Dari perspektif Layanan Audio, pergi ke voicemail adalah panggilan yang dijawab. A-Leg menutup telepon, tetapi B-Leg terus mendengarkan pesan suara. Sementara B-Leg mendengarkan, Anda ditagih.
  + Sebagai praktik terbaik, gunakan AWS Lambda fungsi, atau pesta di ujung lain panggilan, untuk menutup setiap kaki panggilan secara independen.
+ **Penagihan** - Anda ditagih untuk hal berikut saat menggunakan: `CallAndBridge`
  + Menit panggilan aktif untuk setiap leg panggilan yang dibuat (A-Leg, B-Leg, dll.) Ke PSTN.
  + Menit penggunaan Layanan Audio.

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-call-penerusan](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-on-perekaman permintaan](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

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

Mengirim `Hangup` nilai dengan a `SipStatusCode` ke setiap kaki panggilan.

Saat Layanan Audio menjalankan `Hangup` tindakan pada kaki panggilan:
+ Untuk panggilan dengan hanya satu leg panggilan, aplikasi media SIP memanggil AWS Lambda fungsi dengan `HANGUP` acara dan mengabaikan respons. Panggilan kemudian terputus.
+ Untuk leg panggilan (Leg A) yang dijembatani ke leg panggilan lain (Leg B), jika `Hangup` tindakan dikaitkan dengan kaki panggilan yang dijembatani (Leg B) maka layanan audio PSTN memutus kaki panggilan yang dijembatani, kemudian memanggil fungsi Lambda dengan `HANGUP` acara untuk kaki B. Layanan audio PSTN kemudian menjalankan tindakan apa pun yang dikembalikan dari pemanggilan Lambda itu.
+ Untuk leg panggilan (Leg A) yang dijembatani ke leg panggilan lain (Leg B), jika `Hangup` tindakan dikaitkan dengan leg panggilan asli (Leg A), maka layanan audio PSTN memutus kaki panggilan asli, kemudian memanggil fungsi Lambda dengan `HANGUP` acara untuk leg A. Layanan audio PSTN kemudian menjalankan tindakan apa pun yang dikembalikan dari pemanggilan Lambda itu.
+ Untuk leg panggilan yang bergabung dengan rapat menggunakan `JoinMeeting` tindakan, jika `Hangup` tindakan dikaitkan dengan kaki rapat (biasanya Kaki B) maka penelepon terputus dari rapat dan menerima `ACTION_SUCCESSFUL` acara untuk tindakan tersebut`Hangup`.

Contoh berikut menunjukkan `Hangup` tindakan yang khas.

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

**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`

**SipResponseCode**  
*Deskripsi* - Salah satu kode respons SIP yang didukung  
*Nilai yang diizinkan* - 480 — Tidak tersedia; 486 — Sibuk; 0 — Pengakhiran Normal  
*Diperlukan* - Tidak  
*Nilai default* - 0

Setelah pengguna mengakhiri panggilan, aplikasi media SIP memanggil AWS Lambda fungsi dengan kode yang tercantum di[Mengakhiri panggilan menggunakan layanan audio Amazon Chime SDK PSTN](case-5.md).

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-call-penerusan](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-panggilan-pemberitahuan](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-perekaman permintaan](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

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

Bergabunglah dengan rapat Amazon Chime SDK dengan memberikan token bergabung kepada peserta. Untuk melakukan ini, Anda membuat panggilan AWS SDK ke [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html) dan [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 untuk mendapatkan token dan meneruskannya dalam aksi. Lihat contoh berikut ini. 

**catatan**  
Anda tidak dapat menjalankan tindakan ini pada panggilan yang dijembatani.

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

**JoinToken**  
*Deskripsi* — Token gabungan yang valid dari peserta rapat Amazon Chime SDK  
*Nilai yang diizinkan* - Token bergabung yang valid  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**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`  
*Diperlukan* - Tidak  
*Nilai default* - `ParticipantTag` dari yang dipanggil `callLeg` Diabaikan jika Anda menentukan `CallId`

**MeetingId**  
*Deskripsi* — ID rapat Amazon Chime SDK valid yang terkait dengan file. `JoinToken` Jika rapat dibuat menggunakan API di namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html), ID rapat tidak diperlukan. Jika rapat dibuat menggunakan API di namespace [Amazon Chime SDK Meetings, ID rapat](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Meetings.html) diperlukan. Rapat digabungkan menggunakan titik akhir API yang digunakan untuk membuat rapat.  
*Nilai yang diizinkan* - ID rapat yang valid.  
*Diperlukan* - Tidak.  
*Nilai default* - Tidak ada.

Aplikasi media SIP selalu memanggil AWS Lambda fungsi setelah menjalankan tindakan ini. Ia mengembalikan baik jenis acara `ACTION_SUCCESSFUL` atau `ACTION_FAILED` pemanggilan. Contoh berikut menunjukkan struktur acara pemanggilan yang sukses.

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

**Penanganan kesalahan**  
Ketika kesalahan validasi terjadi saat menjembatani rapat, aplikasi SIP memanggil AWS Lambda fungsinya dengan salah satu pesan kesalahan yang ditampilkan dalam tabel berikut.


|  Kesalahan  |  Pesan  |  Alasan  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  `JoinToken`nilai parameter tidak valid.  |  Salah satu parameter tindakan lainnya tidak valid atau hilang.  | 
|  `SystemException`  |  Kesalahan sistem saat menjalankan tindakan.  |  Jenis lain dari kesalahan sistem terjadi saat menjalankan tindakan.  | 

Contoh berikut menunjukkan peristiwa kegagalan yang khas.

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

Lihat contoh kerja di GitHub: [https://github.com/aws-samples/amazon-chime-sma-update-call](https://github.com/aws-samples/amazon-chime-sma-update-call)

# ModifyChimeMeetingAttendee(mematikan dan mematikan audio)
<a name="mute-unmute"></a>

Memungkinkan aplikasi media SIP untuk mengubah status peserta telepon dengan memberikan ID rapat Amazon Chime SDK dan daftar peserta.

**catatan**  
Tindakan ini saat ini mendukung operasi bisu dan unmute pada peserta telepon. Selain itu, pengguna harus bergabung ke dalam rapat menggunakan `JoinChimeMeeting` tindakan. Tindakan ini dapat dilakukan pada`participantTag=“LEG-B”`, atau yang sesuai`CallId`. 

Tindakan ini hanya berlaku untuk CallLeg yang bergabung dari aplikasi media SIP ke `"+` *13605550122*`"`, LEG-B, atau leg yang bergabung dari aplikasi media SIP ke rapat.

```
{
"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**  
*Deskripsi* — Operasi untuk melakukan pada daftar peserta  
*Nilai yang diizinkan* - Bisukan, Bunyikan  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**MeetingId**  
*Deskripsi* — ID rapat tempat peserta berada  
*Nilai yang diizinkan* - ID rapat yang valid. Orang yang membungkam atau tidak mematikan juga harus termasuk dalam rapat.  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**CallId**  
*Deskripsi* — ID rapat tempat peserta berada  
*Nilai yang diizinkan* - ID panggilan yang valid.  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

**ParticipantTag**  
*Deskripsi* — Tag yang diberikan kepada peserta.  
*Nilai yang diizinkan* - Tag yang valid.  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

**AttendeeList**  
*Deskripsi* - Daftar peserta untuk membisukan atau IDs membunyikan  
*Nilai yang diizinkan* - Daftar peserta yang valid IDs  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada, maksimum 100

Setelah menjalankan tindakan ini, Layanan Audio selalu memanggil AWS Lambda fungsi dengan jenis acara `ACTION_SUCCESSFUL` atau `ACTION_FAILED` pemanggilan. Kode contoh berikut menunjukkan acara `ACTION_SUCCESSFUL` pemanggilan khas.

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

**Penanganan kesalahan**  
Dalam kasus parameter instruksi yang tidak valid atau kegagalan API, aplikasi media SIP memanggil AWS Lambda fungsi dengan pesan kesalahan khusus untuk instruksi atau API yang gagal.


|  Kesalahan  |  Pesan  |  Alasan  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  Nilai `ModifyChimeMeetingAttendees Operation` parameter tidak valid  |  `Operation`Nilainya harus Bisukan atau Bunyikan.  | 
|     |  Nilai parameter ID rapat tidak valid.  |  ID Rapat kosong.  | 
|     |  Nilai parameter Daftar Peserta tidak valid.  |  Daftar ID Peserta kosong, atau melebihi maksimum 100.  | 
|     |  Tindakan tidak valid pada panggilan.  |  Panggilan tidak dijembatani.  | 
|     |  Panggilan tidak terhubung ke Chime Meeting.  |  Peserta tidak terhubung ke Pertemuan Chime.  | 
|     |  Satu atau lebih peserta bukan bagian dari pertemuan ini. Semua peserta harus menjadi bagian dari pertemuan ini.  |  Peserta tidak berwenang untuk memodifikasi peserta dalam rapat.  | 
|  `SystemException`  |  Kesalahan sistem saat menjalankan tindakan.  |  Terjadi kesalahan sistem saat menjalankan tindakan.  | 

Kode contoh berikut menunjukkan peristiwa kegagalan yang khas:

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

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)

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

Jeda panggilan untuk waktu tertentu.

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

**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`

**DurationInMilliseconds**  
*Deskripsi* — Durasi jeda, dalam milidetik  
*Nilai yang diizinkan* - Sebuah bilangan bulat > 0  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

Lihat contoh kerja di GitHub:
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-panggilan-pemberitahuan](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-perekaman permintaan](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

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

Putar file audio di setiap kaki panggilan. Audio dapat diulang beberapa kali. Audio yang sedang berlangsung dapat dihentikan menggunakan digit DTMF yang diatur dalam file. `PlaybackTerminators`

Saat ini, Amazon Chime SDK hanya mendukung pemutaran file audio dari bucket Amazon Simple Storage Service (Amazon 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. Anda dapat melakukannya dengan menggunakan konsol S3 atau antarmuka baris perintah (CLI).

Contoh kode berikut menunjukkan kebijakan bucket 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 kode berikut menunjukkan tindakan yang khas.

```
{
    "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**  
*Deskripsi* — `CallId` peserta dalam`CallDetails`.  
*Nilai yang diizinkan* - ID panggilan yang valid.  
*Wajib* - Tidak, jika `ParticipantTag` ada.  
*Nilai default* - Tidak ada.

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

**PlaybackTerminator**  
*Deskripsi* - Mengakhiri audio yang sedang berlangsung dengan menggunakan input DTMF dari pengguna  
*Nilai yang diizinkan* - Array dari nilai berikut; “0",” 1", “2", “3",” 4 “,” 5",” 6",” 7",” 8 “,” 9",” “\$1”, “\$1”  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

**Repeat**  
*Deskripsi* - Mengulangi audio berapa kali yang ditentukan  
*Nilai yang diizinkan* - Bilangan bulat lebih besar dari nol  
*Diperlukan* - Tidak  
*Nilai default* - 1

**AudioSource.Type**  
*Deskripsi* - Jenis sumber untuk file audio.  
*Nilai yang diizinkan* - S3.  
*Diperlukan* - Ya.  
*Nilai default* - Tidak ada.

**AudioSource.BucketName**  
*Deskripsi* — Untuk tipe sumber S3, bucket S3 harus memiliki AWS akun yang sama dengan aplikasi SIP. Bucket harus memiliki akses ke kepala layanan Amazon Chime SDK Voice Connector, yaitu voiceconnector.chime.amazonaws.com.  
*Nilai yang diizinkan* — Bucket S3 valid yang dapat diakses oleh Amazon Chime SDK ke tindakan tersebut. `s3:GetObject`  
*Diperlukan* - Ya.  
*Nilai default* - Tidak ada.

**AudioSource.key**  
*Deskripsi* — Untuk tipe sumber S3, nama file dari bucket S3 ditentukan dalam atribut. `AudioSource.BucketName`  
*Nilai yang diizinkan* - File audio yang valid.  
*Diperlukan* - Ya.  
*Nilai default* - Tidak ada.

Aplikasi media SIP mencoba memutar audio dari URL sumber. Anda dapat menggunakan file PCM.wav mentah dan tidak terkompresi dengan ukuran tidak lebih dari 50 MB. Amazon Chime SDK merekomendasikan 8 mono. KHz 

Ketika instruksi terakhir dalam dialplan `PlayAudio` dan file selesai diputar, atau jika pengguna menghentikan pemutaran dengan menekan tombol, aplikasi akan memanggil AWS Lambda fungsi dengan peristiwa yang ditunjukkan dalam contoh berikut.

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

Setelah digit penghentian menghentikan audio, itu tidak akan diulang.

**Penanganan kesalahan**  
Ketika file validasi berisi kesalahan, atau terjadi kesalahan saat menjalankan tindakan, aplikasi media SIP memanggil AWS Lambda fungsi dengan kode kesalahan yang sesuai.


|  Kesalahan  |  Pesan  |  Alasan  | 
| --- | --- | --- | 
|  `InvalidAudioSource`  |  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 URL. Atau, file audio mungkin gagal validasi karena format, durasi, ukuran, dan sebagainya.  | 
|  `SystemException`  |  Kesalahan sistem saat menjalankan tindakan.  |  Kesalahan sistem lain terjadi saat menjalankan tindakan.   | 
|  `InvalidActionParameter`  |  CallId atau ParticipantTag parameter untuk tindakan tidak valid.  |  Tindakan berisi parameter yang tidak valid.  | 

Contoh kode berikut menunjukkan kegagalan pemanggilan khas.

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

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-call-penerusan](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-panggilan-pemberitahuan](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-perekaman permintaan](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)
+ [https://github.com/aws-samples/amazon-chime-sma-update-panggilan](https://github.com/aws-samples/amazon-chime-sma-update-call)

# 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)

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

Ketika pengguna memasukkan digit yang cocok dengan pola ekspresi reguler yang ditentukan dalam tindakan ini, aplikasi media SIP memanggil fungsi tersebut AWS Lambda .

```
{
    "Type": "ReceiveDigits",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "InputDigitsRegex": "^\d{2}#$",
        "InBetweenDigitsDurationInMilliseconds": 1000, 
        "FlushDigitsDurationInMilliseconds": 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* - Ya  
*Nilai default* - Tidak ada

**InBetweenDigitsDurationInMilliseconds**  
*Deskripsi* — Interval antar digit sebelum memeriksa untuk melihat apakah input cocok dengan pola ekspresi reguler  
*Nilai yang diizinkan* - Durasi dalam milidetik  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**FlushDigitsDurationInMilliseconds**  
*Deskripsi* — Interval setelah itu digit DTMF yang diterima dibilas dan dikirim ke fungsi. AWS Lambda Jika aplikasi media SIP menerima digit baru setelah interval berakhir, timer dimulai lagi.  
*Nilai yang diizinkan* - `InBetweenDigitsDurationInMilliseconds`  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

Aplikasi media SIP membuang digit DTMF selama panggilan sampai menerima tindakan baru. `ReceiveDigits` `FlushDigitsDurationInMilliseconds`Interval dimulai ketika aplikasi media SIP menerima digit DTMF pertama. Jika pengguna memasukkan digit yang benar sebelum interval berakhir, aplikasi media SIP memanggil AWS Lambda fungsi yang dijelaskan dalam. [Menerima input pemanggil untuk layanan audio Amazon Chime SDK PSTN](case-4.md)

Jika input pengguna tidak cocok dengan pola ekspresi reguler, aplikasi media SIP mengulangi pesan file audio “kegagalan” hingga aplikasi menghabiskan jumlah pengulangan atau pengguna memasukkan digit yang valid. 

Lihat contoh kerja di GitHub:
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-panggilan-pemberitahuan](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-perekaman permintaan](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)
+ [https://github.com/aws-samples/amazon-chime-sma-update-panggilan](https://github.com/aws-samples/amazon-chime-sma-update-call)

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

Memungkinkan aplikasi media SIP merekam media dari ID panggilan yang diberikan. Misalnya, aplikasi pesan suara dan pengumuman peserta rapat. Aplikasi merekam hingga mencapai durasi yang Anda tetapkan, atau ketika pengguna menekan salah satu`RecordingTerminators`, atau ketika aplikasi mendeteksi keheningan. Dalam kasus tersebut, tindakan memberi tahu aplikasi Anda untuk memasukkan file media yang dihasilkan ke dalam bucket S3 yang ditentukan. Bucket S3 harus memiliki AWS akun yang sama dengan aplikasi media SIP. Selain itu, tindakan harus memberikan `s3:PutObject` dan `s3:PutObjectAcl` mengizinkan kepada kepala layanan Amazon Chime SDK Voice Connector, kepala layanan [Amazon Chime SDK](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) Voice Connector,. `voiceconnector.chime.amazonaws.com` 

**catatan**  
Rekaman yang dibuat menggunakan fitur ini dapat tunduk pada undang-undang atau peraturan mengenai pencatatan komunikasi elektronik. Adalah tanggung jawab Anda dan pengguna akhir Anda untuk mematuhi semua hukum yang berlaku mengenai rekaman, termasuk memberi tahu semua peserta dengan benar dalam sesi rekaman atau komunikasi bahwa sesi atau komunikasi sedang direkam, dan mendapatkan persetujuan mereka.

Contoh berikut memberikan `s3:PutObjectAcl` izin `s3:PutObject` dan kepada prinsipal layanan 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/*"
        }
    ]
}
```

------

Contoh berikut berhenti merekam ketika penelepon menekan tombol pound (\$1), atau 10 detik berlalu tanpa aktivitas, atau penelepon tetap diam selama 3 detik, dan menulis file media yang dihasilkan ke lokasi yang ditentukan oleh parameter. `RecordingDestination`

**catatan**  
Contoh ini menggunakan `CallId` parameter. Anda dapat menggunakan `ParticipantTag` parameter sebagai gantinya, tetapi Anda tidak dapat menggunakan keduanya.

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

**RecordingDestination.Type**  
*Deskripsi* — Jenis tujuan. Hanya S3.  
*Nilai yang diizinkan* - S3  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**RecordingDestination.BucketName**  
*Deskripsi* — Nama bucket S3 yang valid. Bucket 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 valid yang dapat diakses oleh Amazon Chime SDK dan tindakannya. `s3:PutObject` `s3:PutObjectAcl`  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

****RecordingDestination.Prefix****  
*Deskripsi* - Awalan S3 dari file rekaman  
*Nilai yang diizinkan* - Nama awalan yang valid yang berisi hingga 979 karakter aman. Untuk informasi selengkapnya tentang karakter aman, lihat [Karakter aman](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines-safe-characters) di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.  
*Diperlukan* - Tidak  
*Default* - Tidak ada. Jika tidak ditentukan, rekaman disimpan ke root bucket S3.

**DurationInSeconds**  
*Deskripsi* — Durasi perekaman, dalam hitungan detik  
*Nilai yang diizinkan* -> 0  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

****SilenceDurationInSeconds****  
*Deskripsi* — Durasi keheningan dalam hitungan detik, setelah itu perekaman berhenti. Jika tidak ditentukan, deteksi keheningan dinonaktifkan.  
*Nilai yang diizinkan* - [1; 1000]  
*Diperlukan* - Tidak  
*Nilai default* - 200

****SilenceThreshold****  
*Deskripsi* — Tingkat kebisingan yang dianggap “diam.” Jika Anda tidak menentukan`SilenceDurationInSeconds`, parameter ini diabaikan.  

**Nilai referensi (tingkat kebisingan dan ambang batas untuk memperlakukan kebisingan sebagai keheningan):**
+ 1—30dB atau di bawahnya, seperti ruangan yang tenang
+ 100—40-50 dB, seperti bisikan atau kantor yang tenang
+ 200—60dB, seperti kantor yang ramai
+ 1000—75 dB, seperti orang yang keras atau musik
*Nilai yang diizinkan* - [1; 1000]  
*Diperlukan* - Tidak  
*Nilai default* - 200

**RecordingTerminators**  
*Deskripsi* - Daftar semua terminator rekaman yang tersedia.  
*Nilai yang diizinkan* - Array digit tunggal dan simbol dari [123456789\$10 \$1]  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

## Menangani acara ACTION\$1SUCCESSFUSED
<a name="handle-action-successful"></a>

Saat perekaman berakhir, aplikasi media Amazon Chime SDK SIP memanggil AWS Lambda fungsi tersebut dan meneruskannya ke acara ACTION\$1SUCCESSFUCCESS, bersama dengan hasil pemanggilan.

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

`ACTION_SUCCESSFUL`Acara berisi`ActionData`, yang berisi bidang-bidang ini:

**Type**  
*Deskripsi* — Jenis tindakan,`RecordAudio`.

**Parameters**  
*Deskripsi* — Parameter tindakan.

**RecordingDestination.Type**  
*Deskripsi* — Jenis tujuan. Hanya S3. 

**RecordingDestination.BucketName**  
*Deskripsi* - Bucket S3 yang berisi file rekaman. 

**RecordingDestination.Key**  
*Deskripsi* - Tombol S3 dari file rekaman.

**RecordingTerminatorUsed**  
*Deskripsi* — Terminator yang digunakan untuk menghentikan perekaman — salah satu terminator yang diteruskan dalam parameter. `RecordingTerminators` Jika perekaman berhenti setelah mencapai durasi maksimum (`DurationInSeconds`) atau karena silent (`SilenceDurationInSeconds`), pasangan kunci-nilai ini tidak termasuk dalam output.

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


|  Kesalahan  |  Pesan  |  Alasan  | 
| --- | --- | --- | 
|  `InvalidActionParameter`  |  `CallId`atau `ParticipantTag` parameter untuk tindakan tidak valid. `DurationInSeconds`nilai parameter tidak valid. `SilenceDurationInSeconds`nilai parameter tidak valid. `SilenceThreshold`nilai parameter tidak valid. `RecordingDestination`nilai parameter tidak valid. Terjadi kesalahan saat mengunggah rekaman ke bucket S3.  |  Parameter apa pun tidak valid.  | 
|  `SystemException`  |  Kesalahan sistem saat menjalankan tindakan.  |  Jenis lain dari kesalahan sistem terjadi saat menjalankan tindakan.  | 

## Menangani ACTION\$1FAILED acara
<a name="handle-action-failed"></a>

Ketika tindakan gagal merekam media pada leg panggilan, aplikasi media SIP memanggil AWS Lambda fungsi dengan jenis `ACTION_FAILED` acara. Lihat contoh berikut ini.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 5,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type" : "RecordAudio",
        "Parameters": {
           ...           
        },
        "ErrorType": "InvalidActionParameter",
        "ErrorMessage": "RecordingDestination 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)

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

Kirim hingga 50 digit multi-frekuensi nada ganda (DTMF) pada setiap kaki panggilan. Sinyal dapat mencakup yang berikut:
+ Angka 0 hingga 9
+ Karakter khusus bintang (\$1) dan pound (\$1)
+ Sinyal kontrol jaringan A, B, C, D
+ Karakter koma (,). Sinyal ini menambahkan penundaan 0,5 detik antara sinyal sebelumnya dan berikutnya.

**Topics**
+ [Menggunakan SendDigits tindakan](#send-digits-action)
+ [Penanganan ACTION\$1SUCCESSFUL peristiwa](#send-digit-success)
+ [Penanganan ACTION\$1FAILED peristiwa](#send-digit-fail)
+ [Alur panggilan](#send-digits-call-flow)

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

Contoh berikut menunjukkan `SendDigits` tindakan khas:

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

**CallId**  
*Deskripsi* — `CallId` Peserta dalam `CallDetails` pemanggilan AWS Lambda fungsi  
*Nilai yang diizinkan* - ID panggilan yang valid  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**Digits**  
*Deskripsi* — Digit yang akan dikirim pada leg panggilan yang sesuai dengan `CallId`  
*Nilai yang diizinkan* - 0-9, \$1, \$1, A, B, C, D, koma (,)  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**ToneDurationInMilliseconds**  
*Deskripsi* — Jumlah waktu yang diizinkan, dalam milidetik, untuk mengirimkan setiap digit.  
*Nilai yang diizinkan* - Setiap bilangan bulat antara 50 dan 24000  
*Diperlukan* - Tidak  
*Nilai default* - 250

## Penanganan ACTION\$1SUCCESSFUL peristiwa
<a name="send-digit-success"></a>

Contoh berikut menunjukkan `ACTION_SUCCESSFUL` peristiwa khas untuk `SendDigits` tindakan tersebut.

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

## Penanganan ACTION\$1FAILED peristiwa
<a name="send-digit-fail"></a>

Contoh berikut menunjukkan `ACTION_FAILED` peristiwa khas untuk `SendDigits` tindakan tersebut.

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

## Alur panggilan
<a name="send-digits-call-flow"></a>

Diagram berikut menunjukkan aliran program untuk mengirim digit dari penelepon ke callee.

![\[Diagram yang menunjukkan aliran program SendDigits tindakan.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/send-digits-1.png)


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

Anda dapat memainkan pidato di kaki panggilan apa pun dengan memberikan teks. Anda dapat menggunakan teks biasa atau Speech Synthesis Markup Language (SSML). SSML memberikan kontrol lebih besar atas bagaimana Amazon Chime SDK menghasilkan ucapan dengan menambahkan jeda, menekankan kata-kata tertentu, atau mengubah gaya berbicara.

Amazon Chime SDK menggunakan layanan Amazon Polly untuk mengonversi. text-to-speech Amazon Polly memungkinkan Anda memilih antara mesin standar atau saraf untuk meningkatkan kualitas bicara. Amazon Polly mendukung lebih dari 20 bahasa dan 60 suara untuk menyesuaikan pengalaman pengguna aplikasi Anda. Amazon Chime SDK menyediakan fitur ucapan tanpa biaya, tetapi Anda membayar untuk menggunakan Amazon Polly. Lihat [halaman harga](https://aws.amazon.com/polly/pricing/) Amazon Polly atau dasbor penagihan Anda untuk informasi harga.

**penting**  
Penggunaan Amazon Polly tunduk pada [Ketentuan Layanan AWS, termasuk persyaratan](https://aws.amazon.com/service-terms/) khusus untuk AWS Machine Learning dan Layanan Kecerdasan Buatan.

**Topics**
+ [Menggunakan Speak tindakan](#speak-action)
+ [Penanganan ACTION\$1SUCCESSFUL peristiwa](#speak-action-success)
+ [Penanganan ACTION\$1FAILED peristiwa](#speak-action-fail)
+ [Alur program](#speak-flow)

## Menggunakan Speak tindakan
<a name="speak-action"></a>

Contoh berikut menunjukkan penggunaan khas `Speak` tindakan.

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

**Text**  
*Deskripsi* - Menentukan teks masukan untuk disintesis ke dalam ucapan. Jika Anda menentukan `ssml` sebagai`TextType`, ikuti format SSML untuk teks input.  
*Nilai yang diizinkan* - String  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**Engine**  
*Deskripsi* — Menentukan mesin—standar atau neural—yang akan digunakan saat memproses teks untuk sintesis ucapan.  
*Nilai yang diizinkan* - standar \$1 saraf  
*Diperlukan* - Tidak  
*Nilai default* - standar

**LanguageCode**  
*Deskripsi* - Menentukan kode bahasa. Hanya diperlukan jika menggunakan suara bilingual. Jika Anda menggunakan suara bilingual tanpa kode bahasa, bahasa default suara bilingual akan digunakan.  
*Nilai yang diizinkan* - [kode bahasa Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

**TextType**  
*Deskripsi* - Menentukan jenis teks masukan, teks biasa atau SSML. Jika jenis input tidak ditentukan, teks biasa digunakan sebagai default. *Untuk informasi selengkapnya tentang SSML, lihat [Menghasilkan Pidato dari Dokumen SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) di Panduan Pengembang Amazon Polly.*  
*Nilai yang diizinkan* - ssml \$1 teks  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

**VoiceId**  
*Deskripsi* - Menentukan ID suara yang ingin Anda gunakan.  
*Nilai yang diizinkan* - [Suara Amazon Polly IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Diperlukan* - Tidak  
*Nilai default* - Joanna

## Penanganan ACTION\$1SUCCESSFUL peristiwa
<a name="speak-action-success"></a>

Contoh berikut menunjukkan `ACTION_SUCCESSFUL` peristiwa khas untuk tindakan yang mensintesis teks “Hello World” ke dalam pidato, dalam bahasa Inggris, menggunakan suara 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":{       
       ...
    }
}
```

## Penanganan ACTION\$1FAILED peristiwa
<a name="speak-action-fail"></a>

Contoh berikut menunjukkan `ACTION_FAILED` peristiwa khas untuk acara yang sama yang digunakan dalam contoh sebelumnya.

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

**Penanganan kesalahan**  
Tabel ini mencantumkan dan menjelaskan pesan kesalahan yang dilemparkan oleh `Speak` tindakan.


| Kesalahan | Pesan | Alasan | 
| --- | --- | --- | 
| `AccessDenied` | `AWSServiceRoleForAmazonChimeVoiceConnector`Peran terkait layanan tidak dikonfigurasi dengan benar. | Peran terkait layanan yang digunakan untuk membuat permintaan ke Amazon Polly tidak ada atau tidak memiliki izin. Untuk mengatasinya, lihat langkah-langkah di [Menggunakan peran terkait layanan Amazon Chime SDK Voice Connector](speak-and-get-digits.md#speak-digits-policy) bagian | 
| `InvalidActionParameter` |   | Ada kesalahan memvalidasi parameter tindakan. Lihat [SynthesizeSpeech API](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech) di *Panduan Pengembang Amazon Polly* untuk informasi selengkapnya tentang parameter. | 
| ActionExecutionThrottled | Amazon Polly membatasi permintaan untuk mensintesis ucapan. | Permintaan ke Amazon Polly mengembalikan pengecualian pelambatan. [Untuk informasi selengkapnya tentang batas pembatasan Amazon Polly, lihat 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`adalah parameter yang diperlukan. | Di sana parameter tindakan harus memiliki `Text` nilai | 
| `MissingRequiredActionParameter` | `Text`dibatasi hingga 1.000 karakter | Teks melebihi batas karakter. | 
| `SystemException` | Kesalahan sistem saat menjalankan tindakan. | Terjadi kesalahan sistem saat menjalankan tindakan. | 

## Alur program
<a name="speak-flow"></a>

Diagram berikut menunjukkan aliran program yang memungkinkan `Speak` tindakan untuk penelepon. Dalam contoh ini, penelepon mendengar teks yang 

![\[Diagram yang menunjukkan alur program untuk mengaktifkan Speak tindakan untuk penelepon.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/Speak1.png)


**Dalam diagram**  
Menggunakan ponsel lunak, penelepon memasukkan nomor yang terdaftar ke aplikasi media SIP. Aplikasi ini menggunakan `INVITE` metode SIP dan mengirimkan `Trying (100)` respons kepada penelepon. Itu menunjukkan bahwa server next-hop menerima permintaan panggilan. Aplikasi SIP kemudian menggunakan `INVITE` untuk menghubungi titik akhir. Setelah koneksi dibuat, aplikasi mengirimkan `Ringing (180)` respons ke penelepon, dan peringatan dimulai. 

Aplikasi media SIP kemudian mengirimkan `NEW_INBOUND_CALL` acara ke fungsi Lambda, yang merespons dengan `Speak` tindakan yang menyertakan ID pemanggil dan teks yang ingin Anda ubah menjadi ucapan. Aplikasi SIP kemudian mengirimkan `200 (OK)` respons untuk menunjukkan bahwa panggilan telah dijawab. Protokol juga memungkinkan media. 

Jika `Speak` tindakan berhasil dan mengubah teks menjadi ucapan, ia mengembalikan `ACTION_SUCCESSFUL` acara ke aplikasi media SIP, yang mengembalikan serangkaian tindakan berikutnya. Jika tindakan gagal, aplikasi media SIP mengirimkan `ACTION_FAILED` acara ke fungsi Lambda, yang merespons dengan serangkaian tindakan. `Hangup` Aplikasi menutup pemanggil dan mengembalikan `HANGUP` acara ke fungsi Lambda, yang tidak mengambil tindakan lebih lanjut. 



Diagram berikut menunjukkan aliran program daripada memungkinkan `Speak` tindakan untuk callee.

![\[Diagram yang menunjukkan alur program untuk mengaktifkan Speak aksi untuk callee. Anda dapat melakukan ini pada panggilan yang dijembatani.\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/images/Speak2.png)


**Dalam diagram**  
Penelepon memasukkan nomor yang terdaftar ke aplikasi media SIP, dan aplikasi merespons seperti yang dijelaskan untuk diagram sebelumnya. Ketika fungsi Lambda menerima `NEW_INBOUND_CALL` acara, ia mengembalikan [CallAndBridge](call-and-bridge.md) tindakan ke aplikasi SIP. Aplikasi kemudian menggunakan `INVITE` metode SIP untuk mengirim `Trying (100)` dan `Ringing (180)` tanggapan ke callee. 

Jika panggilan menjawab, aplikasi media SIP menerima `200 (OK)` respons, dan mengirimkan respons yang sama ke penelepon. Itu menetapkan media, dan aplikasi SIP mengirimkan `ACTION_SUCCESSFUL` acara untuk [CallAndBridge](call-and-bridge.md) tindakan ke fungsi Lambda. Fungsi kemudian mengembalikan tindakan Speak dan data ke aplikasi SIP, yang mengkonversi 

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

Putar ucapan dengan menyediakan teks dan kumpulkan digit multi-frekuensi nada ganda (DTMF) dari pengguna. Teks dapat berupa teks biasa atau teks yang disempurnakan Speech Synthesis Markup Language (SSML) untuk memberikan kontrol lebih besar atas bagaimana Amazon Chime SDK menghasilkan ucapan dengan menambahkan jeda, menekankan kata-kata tertentu, atau mengubah gaya berbicara, di antara fitur SSML lain yang didukung. Jika terjadi kegagalan, seperti pengguna yang tidak memasukkan jumlah digit DTMF yang benar, tindakan memainkan pidato “kegagalan” dan kemudian memutar ulang pidato utama sampai aplikasi media SIP menghabiskan jumlah upaya yang ditentukan dalam parameter. `Repeat`

Amazon Chime SDK menggunakan Amazon Polly, layanan cloud yang mengubah teks menjadi ucapan yang hidup, Amazon Polly menyediakan mesin standar dan saraf untuk meningkatkan kualitas bicara, lebih dari 20 bahasa yang didukung, dan 60 suara. Amazon Polly menyediakan fitur ucapan tanpa biaya, tetapi Anda membayar untuk menggunakan Amazon Polly. Lihat [halaman harga](https://aws.amazon.com/polly/pricing/) Amazon Polly atau dasbor penagihan Anda untuk informasi harga.

**penting**  
Penggunaan Amazon Polly tunduk pada [Ketentuan AWS Layanan, termasuk persyaratan](https://aws.amazon.com/service-terms/) khusus untuk AWS Machine Learning dan Layanan Kecerdasan Buatan.

**Topics**
+ [Menggunakan SpeakAndGetDigits tindakan](#speak-digits-action)
+ [Penanganan ACTION\$1SUCCESSFUL peristiwa](#speak-digits-success)
+ [Penanganan ACTION\$1FAILED peristiwa](#speak-digits-fail)
+ [Menggunakan peran terkait layanan Amazon Chime SDK Voice Connector](#speak-digits-policy)

## Menggunakan SpeakAndGetDigits tindakan
<a name="speak-digits-action"></a>

Contoh berikut menunjukkan penggunaan khas `SpeakAndGetDigits` tindakan:

```
{
    "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**  
*Deskripsi* — `CallId` Peserta dalam CallDetails pemanggilan fungsi Lambda.  
*Nilai yang diizinkan* - Valid `callID`  
*Diperlukan* - Ya  
*Nilai default* - Tidak

**InputDigitsRegex**  
*Deskripsi* — Pola ekspresi reguler untuk membantu memastikan bahwa pengguna memasukkan angka dan huruf yang benar.  
*Nilai yang diizinkan* - Pola ekspresi reguler yang valid  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

**SpeechParameters.Engine**  
*Deskripsi* — Menentukan mesin — standar atau saraf — untuk digunakan saat memproses teks untuk sintesis ucapan.  
*Nilai yang diizinkan* - `standard` \$1 `neural`  
*Diperlukan* - Tidak  
*Nilai default* - Standar

**SpeechParameters.LanguageCode**  
*Deskripsi* - Menentukan kode bahasa. Ini hanya diperlukan jika menggunakan suara bilingual. Jika suara bilingual digunakan dan tidak ada kode bahasa yang ditentukan, bahasa default suara bilingual akan digunakan.  
*Nilai yang diizinkan* - [kode bahasa Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Diperlukan* - Tidak  
*Nilai default* - Tidak ada

**SpeechParameters.Text**  
*Deskripsi* - Menentukan teks masukan. Jika Anda menentukan `ssml` sebagai`SpeechParameters.TextType`, Anda harus mengikuti format SSML untuk teks input. *Untuk informasi selengkapnya tentang SSML, lihat [Menghasilkan Pidato dari Dokumen SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) di Panduan Pengembang Amazon Polly.*  
*Nilai yang diizinkan* - String  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**SpeechParameters.TextType**  
*Deskripsi* - Menentukan format teks untuk`SpeechParameters.Text`. Jika tidak ditentukan, `text` digunakan secara default. *Untuk informasi selengkapnya tentang SSML, lihat [Menghasilkan Pidato dari Dokumen SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) di Panduan Pengembang Amazon Polly.*  
*Nilai yang diizinkan* - `ssml` \$1 `text`  
*Diperlukan* - Tidak  
*Nilai default* - `text`

**SpeechParameters.VoiceId**  
*Deskripsi* — ID suara Amazon Polly yang digunakan untuk mengucapkan teks. `SpeechParameters.Text`  
*Nilai yang diizinkan* - [Suara Amazon Polly IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Diperlukan* - Tidak  
*Nilai default* - Joanna

**FailureSpeechParameters.Engine**  
*Deskripsi* — Menentukan mesin — standar atau saraf — untuk digunakan saat memproses pesan kegagalan yang digunakan saat pelanggan memasukkan respons yang tidak valid untuk sintesis ucapan.  
*Nilai yang diizinkan* - `standard` \$1 `neural`  
*Diperlukan* - Tidak  
*Nilai default* - `SpeechParameters.Engine` Nilai

**FailureSpeechParameters.LanguageCode**  
*Deskripsi* - Menentukan kode bahasa yang digunakan saat pelanggan memasukkan respons yang tidak valid. Hanya diperlukan saat menggunakan suara bilingual. Jika Anda menggunakan suara bilingual tanpa menentukan kode bahasa, bahasa default suara bilingual akan digunakan.  
*Nilai yang diizinkan* - [kode bahasa Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-LanguageCode)  
*Diperlukan* - Tidak  
*Nilai default* - `SpeechParameters.LanguageCode` Nilai.

**FailureSpeechParameters.Text**  
*Deskripsi* - Menentukan teks masukan yang diucapkan saat pelanggan memasukkan respons yang tidak valid. Jika Anda menentukan `ssml` sebagai`FailureSpeechParameters.TextType`, Anda harus mengikuti format SSML untuk teks input.  
*Nilai yang diizinkan* - String  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

**FailureSpeechParameters.TextType**  
*Deskripsi* - Menentukan apakah teks masukan yang ditentukan dalam `FailureSpeechParameters.Text` adalah teks biasa atau SSML. Nilai default adalah teks biasa. Untuk informasi selengkapnya, lihat [Menghasilkan Pidato dari Dokumen SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) di Panduan Pengembang *Amazon Polly*.  
*Nilai yang diizinkan* - `ssml` \$1 `text`  
*Diperlukan* - Tidak  
*Nilai default* - `SpeechParameters.Text` Nilai

**FailureSpeechParameters.VoiceId**  
*Deskripsi* — ID untuk suara yang digunakan untuk mengucapkan string`FailureSpeechParameters.Text`.  
*Nilai yang diizinkan* - [Suara Amazon Polly IDs](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html#polly-SynthesizeSpeech-request-VoiceId)  
*Diperlukan* - Ya  
*Nilai default* - `SpeechParameters.VoiceId` Nilai

**MinNumberOfDigits**  
*Deskripsi* — Jumlah minimum digit yang harus diambil sebelum waktu habis atau memutar pesan “panggilan gagal”.  
*Nilai yang diizinkan* - Lebih besar dari atau sama dengan nol  
*Diperlukan* - Tidak  
*Nilai default* - 0

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

**TerminatorDigits**  
*Deskripsi* — Digit digunakan untuk mengakhiri input jika pengguna memasukkan kurang dari MaxNumberOfDigits  
*Nilai yang diizinkan* - Salah satu dari: 0 1 2 3 4 5 6 7 8 9 \$1 atau\$1  
*Diperlukan* - Tidak  
*Nilai default* - \$1

**InBetweenDigitsDurationInMilliseconds**  
*Deskripsi* — Waktu tunggu dalam milidetik antara input digit sebelum memainkan pidato kegagalan.  
*Nilai yang diizinkan* - Lebih besar dari nol  
*Diperlukan* - Tidak  
*Nilai default* - Jika tidak ditentukan, default ke nilai `RepeatDurationInMilliseconds`

**Repeat**  
*Deskripsi* — Jumlah total upaya untuk mendapatkan digit. Jika Anda menghilangkan parameter ini, defaultnya adalah salah satu upaya untuk mengumpulkan digit.  
*Nilai yang diizinkan* - Lebih besar dari nol  
*Diperlukan* - Tidak  
*Nilai default* - 1

**RepeatDurationInMilliseconds**  
*Deskripsi* — Batas waktu dalam milidetik untuk setiap upaya mendapatkan digit.  
*Nilai yang diizinkan* - Lebih besar dari nol  
*Diperlukan* - Ya  
*Nilai default* - Tidak ada

## Penanganan ACTION\$1SUCCESSFUL peristiwa
<a name="speak-digits-success"></a>

Contoh berikut menunjukkan `ACTION_SUCCESSFUL` peristiwa yang khas.

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

## Penanganan ACTION\$1FAILED peristiwa
<a name="speak-digits-fail"></a>

Contoh berikut menunjukkan `ACTION_FAILED` peristiwa yang khas.

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

**Penanganan kesalahan**  
Tabel ini mencantumkan dan menjelaskan pesan kesalahan yang dilemparkan oleh `Speak` tindakan.


| Kesalahan | Pesan | Alasan | 
| --- | --- | --- | 
| `AccessDenied` | `AWSServiceRoleForAmazonChimeVoiceConnector`Peran tidak dikonfigurasi dengan benar. | Peran yang digunakan untuk membuat permintaan ke Amazon Polly tidak ada atau tidak memiliki izin. Untuk mengatasinya, lihat langkah-langkah di [Menggunakan peran terkait layanan Amazon Chime SDK Voice Connector](#speak-digits-policy) bagian | 
| `InvalidActionParameter` |   | Ada kesalahan memvalidasi parameter tindakan. Untuk meninjau parameter yang tersedia untuk tindakan ini, dan opsinya, lihat [SynthesizeSpeech](https://docs.aws.amazon.com/polly/latest/dg/API_SynthesizeSpeech.html)di Panduan Pengembang Amazon Polly. | 
| `MissingRequiredActionParameter` | `Text`adalah parameter yang diperlukan. | Parameter tindakan harus memiliki `Text` nilai | 
| `MissingRequiredActionParameter` | `Text`dibatasi hingga 1.000 karakter | Teks melebihi batas karakter. | 
| `SystemException` | Kesalahan sistem saat menjalankan tindakan. | Terjadi kesalahan sistem saat menjalankan tindakan. | 

## Menggunakan peran terkait layanan Amazon Chime SDK Voice Connector
<a name="speak-digits-policy"></a>

Anda tidak perlu membuat peran terkait layanan untuk tindakan `Speak` atau `SpeakAndGetDigits` secara manual. Saat Anda membuat atau memperbarui aplikasi media SIP di konsol Amazon Chime SDK, atau AWS API, Amazon Chime SDK akan membuat peran terkait layanan untuk Anda. AWS Command Line Interface

Untuk informasi selengkapnya, lihat [Menggunakan peran terkait layanan Amazon Chime](https://docs.aws.amazon.com/chime/latest/ag/using-service-linked-roles-stream.html) di Panduan Administrator SDK *Amazon* Chime.

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

`StartBotConversation`Tindakan ini membuat percakapan suara antara pengguna akhir dan bot Amazon Lex v2 Anda. Pengguna memberikan informasi yang diperlukan ke bot. Bot kemudian mengembalikan informasi ke fungsi Lambda Audio jaringan telepon beralih publik (PSTN), dan fungsi tersebut melakukan tugas yang diminta.

Misalnya, bot dapat memutar pesan selamat datang opsional di awal percakapan untuk menjelaskan secara singkat tugas yang dapat dilakukan oleh fungsi Lambda audio PSTN. Percakapan bolak-balik antara pengguna dan bot sampai bot mengumpulkan informasi yang diperlukan. Setelah percakapan berakhir, Amazon Chime SDK memanggil fungsi Lambda audio PSTN Anda dengan acara sukses tindakan, yang berisi informasi yang dikumpulkan oleh bot. Fungsi Lambda audio PSTN Anda memproses informasi dan melakukan tugas yang diminta.

Layanan Audio menyediakan interaksi percakapan yang hidup dengan pengguna Anda. Misalnya, pengguna dapat mengganggu bot dan menjawab pertanyaan sebelum prompt audio selesai. Terlebih lagi, pengguna dapat menggunakan kombinasi suara dan digit DTMF apa pun untuk memberikan informasi. Bot menunggu pengguna untuk memberikan masukan sebelum merespons. Anda dapat mengonfigurasi berapa lama bot menunggu pengguna selesai berbicara sebelum menafsirkan input ucapan apa pun. Pengguna juga dapat menginstruksikan bot untuk menunggu jika mereka membutuhkan waktu untuk mengambil informasi tambahan selama panggilan, seperti nomor kartu kredit.

`StartBotConversation`Tindakan ini menggunakan Amazon Lex dan Amazon Polly selama percakapan bot. Biaya standar Amazon Lex dan Amazon Polly berlaku. Untuk informasi harga selengkapnya, lihat halaman [harga percakapan streaming Amazon Lex](https://aws.amazon.com/lex/pricing/), dan [Harga Amazon Polly](https://aws.amazon.com/polly/pricing/).

**catatan**  
Anda tidak dapat menjalankan tindakan ini pada panggilan yang dijembatani, atau pada panggilan yang telah bergabung dengan rapat Amazon Chime SDK.

**penting**  
Penggunaan Amazon Lex dan Amazon Polly tunduk pada [Ketentuan AWS Layanan, termasuk persyaratan](https://aws.amazon.com/service-terms/) khusus untuk AWS Machine Learning dan Layanan Kecerdasan Buatan.

**Topics**
+ [StartBotConversationsintaks](#startbot-syntax)
+ [Menggunakan StartBotConversation tindakan](#using-startbot)
+ [Menangani ACTION\$1SUCCESSFUL acara](#bot-action-success)
+ [Menangani ACTION\$1FAILED acara](#bot-action-fail)
+ [Memberikan izin untuk menggunakan bot](#bot-permissions)
+ [Mengkonfigurasi batas waktu suara dan DTMF](#bot-timeouts)
+ [Menggunakan input DTMF selama percakapan](#bot-dtmf)
+ [Kuota penagihan dan layanan](#bot-billing)

## StartBotConversationsintaks
<a name="startbot-syntax"></a>

Contoh berikut menunjukkan `StartBotConversation` sintaks khas.

```
{
  "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**  
*Deskripsi* — `CallID` Peserta dalam `CallDetails` pemanggilan AWS Lambda fungsi. `StartBotConversation`Tindakan menggunakan ID ini sebagai bot`SessionId`. Semua percakapan bot yang terjadi pada panggilan berbagi sesi percakapan yang sama. Anda dapat mengubah status sesi antara pengguna dan bot Anda dengan menggunakan [Amazon Lex PutSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html) API. Untuk informasi selengkapnya, lihat [Mengelola sesi dengan Amazon Lex v2 API](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html) di *Panduan Pengembang Amazon Lex*.  
*Nilai yang diizinkan* - ID panggilan yang valid.  
*Wajib* - Tidak, jika `ParticipantTag` ada.  
*Nilai default* - Tidak ada.

**ParticipantTag**  
*Deskripsi* — `ParticipantTag` Salah satu peserta yang terhubung di`CallDetails`.  
*Nilai yang diizinkan* —`LEG-A`.  
*Wajib* - Tidak, jika `CallId` ada.  
*Nilai default* - `ParticipantTag` dari yang dipanggil`callLeg`. Diabaikan jika Anda menentukan`CallDetails`.

**BotAliasArn**  
*Deskripsi* — Bot alias ARN dari bot Lex Anda. Anda harus membuat bot di Wilayah AWS yang sama dengan aplikasi audio PSTN Anda. Alias bot Amazon Lex yang valid memiliki format ini:`arn:aws:lex:region:awsAccountId:bot-alias/botId/botAliasId`, di *`region`* mana Wilayah AWS tempat bot Anda berada. `awsAccountId`Ini adalah ID akun AWS tempat bot Amazon Lex Anda dibuat. `botId`Nilainya adalah pengidentifikasi yang ditetapkan ke bot saat Anda membuatnya. Anda dapat menemukan ID bot di konsol Amazon Lex di halaman **detail Bot**. `botAliasId`Ini adalah pengenal yang ditetapkan ke alias bot saat Anda membuatnya. Anda dapat menemukan ID alias bot di konsol Amazon Lex di halaman **Alias**.   
*Nilai yang diizinkan* - ARN bot yang valid.  
*Diperlukan* —Ya.  
*Nilai default* —Tidak ada.

**LocaleId**  
*Deskripsi* — Pengenal lokal yang Anda gunakan untuk bot Anda. Untuk daftar lokal dan kode bahasa, lihat [Bahasa dan lokal yang didukung oleh Amazon](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html) Lex.  
*Nilai yang diizinkan* - [Bahasa dan lokal yang didukung oleh Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html).  
*Diperlukan* - Tidak.  
*Nilai default* —`en_US`.

**Configuration**  
*Deskripsi* — Konfigurasi percakapan, termasuk status sesi dan pesan selamat datang. Ukuran total representasi string JSON `Configuration` objek dibatasi hingga 10 KB.  
*Nilai yang diizinkan* - `Configuration` objek.  
*Diperlukan* - Tidak.  
*Nilai default* - Tidak ada.

**Configuration.SessionState**  
*Deskripsi* - Keadaan sesi pengguna dengan Amazon Lex v2.  
*Nilai yang diizinkan* - `SessionState` objek.  
*Diperlukan* - Tidak.  
*Nilai default* - Tidak ada.

**Configuration.SessionState.SessionAttributes**  
*Deskripsi* — Peta key/value pasangan yang mewakili informasi konteks khusus sesi. Peta ini berisi informasi aplikasi yang diteruskan antara Amazon Lex v2 dan aplikasi klien.  
*Nilai yang diizinkan* - String ke peta string.  
*Diperlukan* - Tidak.  
*Nilai default* - Tidak ada.

**Configuration.SessionState.DialogAction.Type**  
*Deskripsi* — Tindakan selanjutnya yang dilakukan bot dalam interaksinya dengan pengguna. Kemungkinan nilai:  
+ *Delegasikan* Amazon Lex v2 menentukan tindakan selanjutnya.
+ *ElicitIntent*Tindakan selanjutnya memunculkan maksud dari pengguna.
*Nilai yang diizinkan* — `Delegate` \$1`ElicitIntent`.  
*Diperlukan* - Tidak.  
*Nilai default* - Tidak ada.

**Configuration.WelcomeMessages**  
*Deskripsi* — Daftar pesan untuk dikirim ke pengguna di awal percakapan. Jika Anda mengatur `welcomeMessage` bidang, Anda harus menetapkan `DialogAction.Type` nilainya`ElicitIntent`.  
*Nilai yang diizinkan* - Objek pesan  
*Diperlukan* - Tidak.  
*Nilai default* - Tidak ada.

**Configuration.WelcomeMessages.Content**  
*Deskripsi* — Teks pesan selamat datang.  
*Nilai yang diizinkan* - String.  
*Diperlukan* - Tidak.  
*Nilai default* - Tidak ada.

**Configuration.WelcomeMessages.ContentType**  
*Deskripsi* - Menunjukkan jenis pesan selamat datang.  
*Nilai yang diizinkan* - ` PlainText` \$1 `SSML`  
+ *PlainText*— Pesan berisi teks UTF-8 biasa. 
+ *SSML* — Pesan berisi teks yang diformat untuk output suara.
*Diperlukan* - Ya.  
*Nilai default* - Tidak ada.

## Menggunakan StartBotConversation tindakan
<a name="using-startbot"></a>

Contoh berikut menunjukkan `StartBotConversation` tindakan yang khas.

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

## Menangani ACTION\$1SUCCESSFUL acara
<a name="bot-action-success"></a>

Contoh berikut menunjukkan `ACTION_SUCCESSFUL` peristiwa khas untuk `StartBotConversation` tindakan tersebut.

```
{
    "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**  
Hasil percakapan antara pengguna dan bot.

**SessionId**  
Pengidentifikasi sesi percakapan bot. Saat pengguna memulai percakapan dengan bot Anda, Amazon Lex membuat sesi. Sesi merangkum informasi yang dipertukarkan antara pengguna Anda dan bot. `StartBotConversation`Tindakan menggunakan ID panggilan sebagai bot`SessionId`. Anda dapat memodifikasi status sesi antara pengguna dan bot Anda dengan menggunakan Lex [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. Untuk informasi selengkapnya, lihat [Mengelola sesi dengan Amazon Lex V2 API](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html) di *Panduan Pengembang Amazon Lex*.

**SessionState**  
Keadaan sesi Amazon Lex v2 pengguna. 

**SessionState.SessionAttributes**  
Peta key/value pasangan yang mewakili informasi konteks khusus sesi. Peta berisi informasi percakapan bot yang diteruskan antara fungsi Lambda yang dilampirkan ke bot Anda dan fungsi Lambda audio PSTN.

**Interpretasi**  
Daftar maksud yang diturunkan oleh Amazon Lex yang dapat memuaskan ucapan pelanggan. Maksud dengan `NluConfidence` skor tertinggi menjadi Intent for the. `SessionState` 

**Interpretasi. NluConfidence.Skor**  
Skor yang menunjukkan seberapa yakin Amazon Lex v2 bahwa niat memenuhi maksud pengguna. Rentang antara 0,00 dan 1,00. Skor yang lebih tinggi menunjukkan kepercayaan diri yang lebih tinggi. 

**Intent**  
Tindakan yang ingin dilakukan pengguna.

**Intent.Name**  
Nama niat.

**Intent.Slots**  
Sebuah peta dari semua slot untuk maksud. Nama peta slot ke nilai slot. Jika slot belum diisi, nilainya nol.

**Intent.Slots.Value**  
Nilai slot.

**Intent.Slots.Values**  
Daftar satu atau lebih nilai yang disediakan pengguna untuk slot.

**Intent.Slots.Value.OriginalValue**  
Teks balasan pengguna, dimasukkan untuk slot.

**Intent.Slots.Value.InterpretedValue**  
*Deskripsi* — Nilai yang ditentukan Amazon Lex v2 untuk slot. Nilai sebenarnya tergantung pada pengaturan strategi pemilihan nilai bot. Anda dapat memilih untuk menggunakan nilai yang dimasukkan oleh pengguna, atau Anda dapat meminta Amazon Lex v2 memilih nilai pertama dalam `resolvedValues` daftar.

**Intent.Slots.Value.ResolvedValues**  
Daftar nilai tambahan yang diakui Amazon Lex v2 untuk slot.

**Intent.State**  
*Deskripsi* — Informasi pemenuhan untuk maksud tersebut. Kemungkinan nilai:  
+ `Failed`— Fungsi Lambda gagal memenuhi maksud.
+ `Fulfilled`— Fungsi Lambda memenuhi maksud.
+ `ReadyForFulfillment`— Informasi untuk maksud ada, dan Lambdafunction Anda dapat memenuhi maksud tersebut. 

**Intent.ConfirmationState**  
*Deskripsi* - Menunjukkan konfirmasi maksud. Kemungkinan nilai:  
+ *Dikonfirmasi* - Niat terpenuhi.
+ *Ditolak* - Pengguna menjawab “tidak” pada prompt konfirmasi.
+ *Tidak ada* — Pengguna tidak diminta untuk konfirmasi, atau pengguna diminta tetapi tidak mengkonfirmasi atau menolak prompt.

## Menangani ACTION\$1FAILED acara
<a name="bot-action-fail"></a>

Contoh berikut menunjukkan `ACTION_FAILED` peristiwa khas untuk `StartBotConversation` tindakan tersebut.

```
{
    "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**  
String yang secara unik mengidentifikasi kondisi kesalahan.

**ErrorMessage**  
Deskripsi umum dari kondisi kesalahan.

### Kode eror
<a name="action-errors"></a>

Tabel berikut mencantumkan pesan kesalahan yang fungsi Lambda dapat kembali dalam suatu `ACTION_FAILED` peristiwa.


| Kesalahan | Deskripsi | 
| --- | --- | 
|  `InvalidActionParameter` | Satu atau beberapa parameter tindakan tidak valid. Pesan kesalahan menjelaskan parameter yang tidak valid. | 
| `SystemException` | Terjadi kesalahan sistem saat menjalankan tindakan. | 
| `ResourceNotFound` | Bot tertentu tidak ditemukan. | 
| `ResourceAccessDenied` | Akses ke bot ditolak. | 
| `ActionExecutionThrottled` | Batas layanan percakapan bot terlampaui. Pesan kesalahan menjelaskan batas layanan tertentu yang terlampaui. | 

## Memberikan izin untuk menggunakan bot
<a name="bot-permissions"></a>

Contoh berikut memberikan izin Amazon Chime SDK untuk memanggil 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 Anda harus secara eksplisit memberikan izin Layanan Audio untuk menggunakan bot Anda. Blok kondisi diperlukan untuk prinsipal layanan. Blok kondisi harus menggunakan kunci konteks global `AWS:SourceAccount` dan`AWS:SourceArn`. `AWS:SourceAccount`Ini adalah ID akun AWS Anda. `AWS:SourceArn`Ini adalah sumber daya ARN dari aplikasi audio PSTN yang memanggil 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"
        }
      }
    }
  ]
}
```

------

## Mengkonfigurasi batas waktu suara dan DTMF
<a name="bot-timeouts"></a>

Anda dapat mengonfigurasi batas waktu suara dan DTMF saat menangkap input pengguna. Anda dapat mengonfigurasi batas waktu melalui atribut sesi saat memulai percakapan dengan bot, dan menimpa mereka di fungsi Lambda Lex bot Anda jika perlu. Amazon Lex memungkinkan Anda mengatur beberapa slot untuk maksud atau bot. Karena Anda dapat menentukan bahwa atribut sesi berlaku untuk level intent dan slot, Anda dapat menentukan bahwa atribut disetel hanya ketika Anda mengumpulkan jenis input tertentu. Misalnya, Anda dapat menentukan batas waktu yang lebih lama saat mengumpulkan nomor akun daripada saat mengumpulkan tanggal. Anda dapat menggunakan wildcard dalam kunci atribut sesi. 

Misalnya, untuk mengatur batas waktu suara untuk semua slot untuk semua intent menjadi 4000 milidetik, Anda dapat memberikan atribut sesi menggunakan: `x-amz-lex:start-timeout-ms:*:*` sebagai nama atribut sesi dan `4000` sebagai nilai atribut sesi. Untuk informasi selengkapnya, lihat [Mengonfigurasi batas waktu untuk menangkap input pengguna](https://docs.aws.amazon.com/lexv2/latest/dg/session-attribs-speech.htm) di Panduan Pengembang *Amazon Lex*. 

## Menggunakan input DTMF selama percakapan
<a name="bot-dtmf"></a>

Bot Amazon Lex mendukung input suara dan keypad selama percakapan. Bot menafsirkan input keypad sebagai digit DTMF. Anda dapat meminta kontak untuk mengakhiri masukan mereka dengan kunci pound (\$1) dan membatalkan percakapan dengan menggunakan tombol bintang (\$1). Jika Anda tidak meminta pelanggan untuk mengakhiri input mereka dengan tombol pound, Lex berhenti menunggu penekanan tombol tambahan setelah 5 detik.

## Kuota penagihan dan layanan
<a name="bot-billing"></a>

AWS menagih Anda untuk biaya berikut:
+ Penggunaan Amazon Chime SDK untuk panggilan tersebut. Untuk informasi selengkapnya, lihat [harga Amazon Chime SDK](https://aws.amazon.com/chime/chime-sdk/pricing/).
+ Penggunaan Amazon Lex untuk menafsirkan ucapan pengguna. Untuk informasi selengkapnya, lihat [harga percakapan streaming Amazon Lex](https://aws.amazon.com/lex/pricing/).
+ Penggunaan Amazon Polly untuk mensintesis respons teks dari bot Anda. Untuk informasi selengkapnya, lihat [Harga Amazon Polly](https://aws.amazon.com/polly/pricing/).

Anda juga perlu mengetahui kuota layanan berikut:
+ Amazon Chime SDK memiliki kuota layanan untuk jumlah maksimum bot Amazon Lex yang dapat Anda gunakan dengan aksi audio PSTN. [StartBotConversation](#start-bot-conversation) *Untuk informasi lebih lanjut, lihat [SIP trunking dan kuota suara](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html#chm-sdk-pstn-quotas), di Referensi Umum.AWS *
+ Amazon Lex memiliki kuota layanan untuk jumlah maksimum percakapan suara bersamaan per Lex bot. Anda dapat menghubungi tim layanan Amazon Lex untuk kenaikan kuota. Untuk informasi selengkapnya, lihat [Panduan Amazon Lex dan kuota](https://docs.aws.amazon.com/lexv2/latest/dg/quotas.html) di *Panduan Pengembang Amazon Lex*.
+ Amazon Polly memiliki kuota layanan untuk mensintesis respons teks. Anda dapat menghubungi tim layanan Amazon Polly untuk kenaikan kuota. *Untuk informasi selengkapnya tentang kuota layanan Amazon Polly, lihat [Kuota di Amazon Polly, di Panduan Pengembang Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/limits.html).*