

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

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

오디오를 재생하고 DTMF 숫자를 수집합니다. 사용자가 올바른 DTMF 숫자를 입력하지 않는 등 실패가 발생하면 작업은 “실패” 오디오를 재생한 다음 SIP 미디어 애플리케이션이 `Repeat` 파라미터에 정의된 시도 횟수를 전부 소진할 때까지 기본 오디오를 재생합니다.

S3 버킷에서 오디오 파일을 재생해야 합니다. S3 버킷은 SIP 미디어 애플리케이션과 동일한 AWS 계정에 속해야 합니다. 또한 [Amazon Chime SDK Voice Connector 서비스 보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)인 `voiceconnector.chime.amazonaws.com`에 `s3:GetObject` 권한을 부여해야 합니다. S3 콘솔 또는 CLI를 사용하여 이를 수행할 수 있습니다.

다음 예제 코드는 일반적인 S3 버킷 정책을 보여줍니다.

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

------

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

------

다음은 예제는 일반적인 `PlayAudioAndGetDigits` 작업을 보여줍니다.

```
{
    "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**  
*설명* - AWS Lambda 함수 호출의에 있는 `CallId` 참가자`CallDetails`의 설명  
허용된 값** - 유효한 통화 ID  
필수** - 아니요  
*기본값* – 없음

**ParticipantTag**  
설명** - `CallDetails`의 연결된 참가자 중 한 명의 `ParticipantTag`입니다.  
허용된 값** – `LEG-A` 또는 `LEG-B`  
필수** - 아니요  
기본값** - 간접 호출된 `callLeg`의 `ParticipantTag`(`CallId`를 지정한 경우 무시됨)

**InputDigitsRegex**  
설명** - 정규 표현식 패턴입니다.  
허용된 값** - 유효한 정규 표현식 패턴  
필수** - 아니요  
*기본값* – 없음

**AudioSource.Type**  
설명** - 오디오 파일 유형에 대한 소스 유형입니다.  
허용된 값** - S3 버킷  
필수** - 예  
기본값** – `"S3"`

**AudioSource.BucketName**  
*설명* - S3 `AudioSource.Type` 값의 경우 S3 버킷은 SIP 미디어 애플리케이션과 동일한 AWS 계정에 속해야 합니다. 버킷 S3에는 [Amazon Chime SDK Voice Connector 서비스 보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)인 `voiceconnector.chime.amazonaws.com`에 대한 액세스 권한이 있어야 합니다.  
허용된 값** - Amazon Chime SDK가 `s3:GetObject` 작업 액세스 권한을 가진 유효한 S3 버킷  
필수** - 예  
*기본값* – 없음

**AudioSource.Key**  
설명** - `AudioSource.BucketName` S3 버킷에 있는 오디오 객체의 키 이름입니다.  
허용된 값** - 유효한 오디오 파일  
필수** - 예  
*기본값* – 없음

**FailureAudioSource.Type**  
설명** - `FailureAudioSource.BucketName` S3 버킷에 있는 오디오 객체의 키 이름입니다.  
허용된 값** - S3  
필수** - 예  
*기본값* – 없음

**FailureAudioSource.BucketName**  
*설명* - S3 소스 유형의 경우 S3 버킷은 SIP 미디어 애플리케이션과 동일한 AWS 계정에 속해야 합니다. [Amazon Chime SDK Voice Connector 서비스 보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)인 `voiceconnector.chime.amazonaws.com`에는 S3 버킷에 대한 액세스 권한이 있어야 합니다.  
허용된 값** - Amazon Chime SDK가 `s3:GetObject` 작업 액세스 권한을 가진 유효한 S3 버킷  
필수** - 예  
*기본값* – 없음

**FailureAudioSource.Key**  
설명** - `FailureAudioSource.BucketName` S3 버킷에 있는 오디오 객체의 키 이름입니다.  
허용된 값** - 유효한 오디오 파일  
필수** - 예  
*기본값* – 없음

**MinNumberOfDigits**  
설명** - 시간 초과나 ‘통화 실패’ 오디오 재생 전에 캡처하는 숫자의 최소 개수입니다.  
허용된 값** – 0 이상  
필수** - 아니요  
기본값** - 0

**MaxNumberOfDigits**  
설명** - 종료 숫자 없이 중지 전 캡처하는 숫자의 최대 개수입니다.  
허용된 값** - `MinNumberOfDigits` 초과  
필수** - 아니요  
기본값** - 128

**TerminatorDigits**  
설명** - 사용자가 `MaxNumberOfDigits`보다 적은 숫자를 입력하면 입력을 종료하는 데 사용되는 숫자  
허용되는 값** - 다음 숫자 중 하나: 0123456789\$1\$1  
필수** - 아니요  
기본값** - \$1

**InBetweenDigitsDurationInMilliseconds**  
설명** - `FailureAudio` 재생 전 숫자 입력 사이의 대기 시간(밀리초)입니다.  
허용된 값** – 0 초과  
필수** - 아니요  
기본값** - `RepeatDurationInMilliseconds` 값(지정하지 않은 경우)

**Repeat**  
설명** - 숫자를 얻기 위한 총 시도 횟수입니다.  
허용된 값** – 0 초과  
필수** - 아니요  
기본값** – 1

**RepeatDurationInMilliseconds**  
설명** - `Repeat` 시도 사이의 대기 시간(밀리초)입니다.  
허용된 값** – 0 초과  
필수** - 예  
*기본값* – 없음

SIP 미디어 애플리케이션은 `PlayAudioAndGetDigits` 작업을 실행한 후 `ACTION_SUCCESSFUL` 또는 호출 이벤트 유형으로 항상 AWS Lambda 함수를 `ACTION_FAILED` 호출합니다. 애플리케이션이 성공적으로 숫자를 수집한 경우 `ActionData` 객체에 `ReceivedDigits` 값을 설정합니다. 다음 예제에서는 해당 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": {
        ...
    }
}
```

**오류 처리**  
유효성 검사 오류가 발생한 경우 SIP 미디어 애플리케이션이 해당 오류 메시지와 함께 AWS Lambda 함수를 직접 호출합니다. 다음 표에는 가능한 오류 메시지가 나열되어 있습니다.


|  오류  |  메시지  |  이유  | 
| --- | --- | --- | 
|  `InvalidAudioSource`  |  Audio source parameter value is invalid.  |  여러 가지 이유로 이 오류가 발생할 수 있습니다. 예를 들어 권한 문제 또는 S3 버킷 관련 문제로 인해 SIP 미디어 애플리케이션이 파일에 액세스할 수 없습니다. 또한 길이, 크기 또는 지원되지 않는 형식으로 인해 오디오 파일이 검증에 실패할 수 있습니다.  | 
|  `InvalidActionParameter`  |  `CallId` or `ParticipantTag` parameter for the action is invalid.  |  `CallId`, `ParticipantTag` 또는 다른 파라미터가 유효하지 않습니다.  | 
|  `SystemException`  |  System error while running the action.  |  작업을 실행하는 동안 시스템 오류가 발생했습니다.  | 

작업이 제한 시간 또는 너무 많은 재시도로 인해 지정된 자릿수를 수집하지 못하면 SIP 미디어 애플리케이션은 호출 이벤트 유형으로 AWS Lambda 함수를 `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": {
        ...
    }
}
```

GitHub에서 작업 예제를 확인하세요.
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging).
+ [https://github.com/aws-samples/amazon-chime-sma-update-call](https://github.com/aws-samples/amazon-chime-sma-update-call)