

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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

`StartCallRecording` 작업은 통화 레그의 녹음을 시작합니다. 온디맨드 또는 SIP 이벤트에 대한 응답으로 SIP 미디어 애플리케이션에서 통화 녹음을 시작합니다.
+ 통화의 온디맨드 녹음을 시작하려면 `UpdateSipMediaApplication` API를 사용하여 애플리케이션을 간접 호출하고 `StartCallRecording` 작업을 반환합니다.
+ SIP 이벤트에 대한 응답으로 통화 녹음을 시작하려면 애플리케이션에서 `StartCallRecording` 작업을 반환합니다.

수신 레그, 발신 레그 또는 모두에 대해 오디오 트랙을 녹음할지 여부를 지정합니다. 다음 섹션에서는 `StartCallRecording` 작업을 사용하는 방법을 설명합니다.

**참고**  
이 기능을 사용하여 녹음한 경우 전자 통신 녹음에 관한 법률 또는 규정이 적용될 수 있습니다. 녹음에 관한 모든 관련 법률을 준수하는 것은 귀하와 최종 사용자의 책임입니다. 여기에는 세션 또는 통신이 녹음되고 있다는 사실을 녹음된 세션의 모든 참가자에게 적절하게 알리고 동의를 구하는 것도 포함됩니다.

**Topics**
+ [StartCallRecording 작업 요청](#request-start)
+ [녹음 대상 지정](#recording-destination)
+ [Amazon S3 버킷 권한 부여](#grant-s3-perms)
+ [작업 성공 응답](#action-successful)
+ [작업 오류 응답](#action-error)

## StartCallRecording 작업 요청
<a name="request-start"></a>

다음 예제는 `BOTH` 트랙의 `StartCallRecording` 작업을 요청하는 방법을 보여줍니다.

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

**CallId**  
*설명* - AWS Lambda 함수 호출의에 있는 `CallId` 참가자`CallDetails`의 설명  
허용된 값** - 유효한 통화 ID  
필수** - 예  
*기본값* – 없음

**Track**  
설명** - 통화 녹음의 오디오 `Track`입니다.  
허용된 값** - `BOTH`, `INCOMING` 또는 `OUTGOING`  
필수** - 예  
*기본값* – 없음

**Destination.Type**  
설명** - 대상 유형입니다. Amazon S3만 허용됩니다.  
허용된 값** - Amazon S3  
필수** - 예  
*기본값* – 없음

**Destination.Location**  
설명** - 유효한 Amazon S3 버킷과 선택 사항인 Amazon S3 키 접두사입니다. 버킷에는 Amazon Chime SDK Voice Connector 서비스 보안 주체인 voiceconnector.chime.amazonaws.com에 대한 권한이 있어야 합니다.  
허용된 값** - Amazon Chime SDK가 `s3:PutObject` 및 `s3:PutObjectAcl` 작업에 대한 권한을 가진 유효한 Amazon S3 경로  
필수** - 예  
*기본값* – 없음

## 녹음 대상 지정
<a name="recording-destination"></a>

Amazon Chime SDK는 Amazon S3 버킷으로 통화 녹음을 전송합니다. 버킷은 AWS 계정에 속해야 합니다. `StartCallRecording` 작업의 `Destination` 파라미터에 버킷의 위치를 지정합니다. `Destination` 파라미터의 `Type` 필드는 `S3`이어야 합니다. `Location` 필드는 Amazon S3 버킷과 선택 사항인 통화 녹음이 전달되는 객체 키 접두사로 구성됩니다.

SIP 미디어 애플리케이션은 지정된 `Location`, 통화 레그의 날짜 및 시간, 트랜잭션 ID, 통화 ID를 사용하여 Amazon S3 객체 키의 형식을 지정합니다. `StartCallRecording` 작업 응답은 전체 Amazon S3 객체 키를 반환합니다.

`Location` 필드에 Amazon S3 버킷만 제공하는 경우 SIP 미디어 애플리케이션은 Amazon S3 경로에 기본 접두사인 `Amazon-Chime-SMA-Call-Recordings`를 추가합니다. 또한 SIP 미디어 애플리케이션은 통화 시작 시간의 연, 월, 일을 추가하여 녹음을 정리하는 데 도움이 됩니다. 다음 예제는 기본 접두사를 포함한 Amazon S3 경로의 일반 형식을 보여줍니다. 이 예제에서는 `myRecordingBucket`을 `Location` 값으로 사용합니다.

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

다음 예제는 통화 녹음 Amazon S3 경로에 표시된 데이터를 보여줍니다.

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

Amazon S3 버킷과 객체 키 접두사를 `Location` 필드에 입력하면 SIP 미디어 애플리케이션은 기본 접두사 대신 대상 Amazon S3 경로의 객체-키 접두사를 사용합니다. 다음 예제는 접두사를 포함한 통화 녹음 Amazon S3 경로의 일반 형식을 보여줍니다. 예를 들어, myRecordingBucket/technicalSupport/english를 `Location`으로 지정할 수 있습니다.

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

다음 예제는 Amazon S3 경로의 데이터를 보여줍니다.

```
{{s3Bucket}}/{{yourObjectKeyPrefix}}/{{year}}/{{month}}/{{date}}/{{year-month-date-hour-minute-second-millisecond}}_{{transactionId}}_{{callId}}.wav
```

Amazon S3 버킷으로 전송된 녹음에는 통화 레그에 대한 추가 [Amazon S3 객체 메타데이터](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html)가 포함되어 있습니다. 다음 표에는 지원되는 Amazon S3 객체 메타데이터가 나와 있습니다.


| 이름 | 설명 | 
| --- | --- | 
| transaction-id | 전화 통화의 트랜잭션 ID | 
| call-id |  AWS Lambda 함수 호출의 CallDetailsCallId | 
| recording-duration | 통화 녹음 기간(초) | 
| recording-audio-file-format | 인터넷 미디어 유형으로 표시된 통화 녹음 오디오 파일 형식 | 

## Amazon S3 버킷 권한 부여
<a name="grant-s3-perms"></a>

대상 Amazon S3 버킷은 애플리케이션과 동일한 AWS 계정에 속해야 합니다. 또한 작업은 Amazon Chime SDK Voice Connector 서비스 보안 주체인 `voiceconnector.chime.amazonaws.com`에 `s3:PutObject` 및 `s3:PutObjectAcl` 권한을 부여해야 합니다. 다음 예제는 적절한 권한을 부여합니다.

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

------

PSTN 오디오 서비스는 SIP 미디어 애플리케이션을 대신하여 S3 버킷을 읽고 씁니다. [혼동된 대리자 문제](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)를 피하기 위해 S3 버킷 권한을 단일 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}}"
                }
            }
        }
    ]
}
```

------

## 작업 성공 응답
<a name="action-successful"></a>

통화 레그에서 통화 녹음이 성공적으로 시작되면 SIP 미디어 애플리케이션이 `ACTION_SUCCESSFUL` 이벤트 유형으로 AWS Lambda 함수를 호출합니다. 통화 녹음 위치가 응답으로 반환됩니다.

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

## 작업 오류 응답
<a name="action-error"></a>

검증 오류의 경우 SIP 미디어 애플리케이션은 적절한 오류 메시지와 함께 AWS Lambda 함수를 호출합니다. 다음 표에는 오류 메시지가 나열되어 있습니다.




| 오류 | 메시지 | 이유 | 
| --- | --- | --- | 
| `InvalidActionParameter` | `CallId` parameter for action is invalid | 파라미터가 유효하지 않습니다. | 
| `SystemException` | System error while running an action. | 작업을 실행하는 동안 다른 유형의 시스템 오류가 발생했습니다. | 

작업이 통화 레그에서 미디어 녹음을 실패하면 SIP 미디어 애플리케이션은 `ActionFailed` 이벤트 유형의 AWS Lambda 함수를 간접 호출합니다.

다음 예제는 일반적인 오류 응답을 보여줍니다.

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

GitHub에서 작업 예제 참조: [https://github.com/aws-samples/amazon-chime-sma-on-demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)