PlayAudioAndGetDigits - Amazon Chime SDK

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

PlayAudioAndGetDigits

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

S3 버킷에서 오디오 파일을 재생해야 합니다. S3 버킷은 SIP 미디어 애플리케이션과 동일한 AWS 계정에 속해야 합니다. 또한 Amazon Chime SDK Voice Connector 서비스 보안 주체voiceconnector.chime.amazonaws.coms3:GetObject 권한을 부여해야 합니다. S3 콘솔 또는 CLI를 사용하여 이를 수행할 수 있습니다.

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

{ "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": "aws-account-id" } } } ] }

오디오 서비스는 SIP 미디어 애플리케이션을 대신하여 S3 버킷을 읽고 씁니다. 혼동된 대리자 문제를 피하기 위해 S3 버킷 액세스를 단일 SIP 미디어 애플리케이션으로 제한할 수 있습니다.

{ "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": "aws-account-id", "aws:SourceArn": "arn:aws:chime:region:aws-account-id: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

필수 - 아니요

기본값 - 간접 호출된 callLegParticipantTag(CallId를 지정한 경우 무시됨)

InputDigitsRegex

설명 - 정규 표현식 패턴입니다.

허용된 값 - 유효한 정규 표현식 패턴

필수 - 아니요

기본값 – 없음

AudioSource.Type

설명 - 오디오 파일 유형에 대한 소스 유형입니다.

허용된 값 - S3 버킷

필수 - 예

기본값"S3"

AudioSource.BucketName

설명 — S3 AudioSource.Type 값의 경우 S3 버킷은 SIP 미디어 애플리케이션과 동일한 AWS 계정에 속해야 합니다. 버킷 S3에는 Amazon Chime SDK Voice Connector 서비스 보안 주체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 서비스 보안 주체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#*

필수 - 아니요

기본값 - #

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 함수를 직접 호출합니다. 다음 표에는 가능한 오류 메시지가 나열되어 있습니다.

Error 메시지 이유

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 작업 예를 참조하십시오.