

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

# 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

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

**Destination.Location**  
*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 | 
| perekaman-audio-file-format | Format file audio rekaman 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)