本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
播放音訊並收集 DTMF 數字。如果發生故障,例如使用者未輸入正確的 DTMF 位數,動作會播放「失敗」音訊,然後重播主要音訊,直到 SIP 媒體應用程式耗盡 Repeat
參數中定義的嘗試次數。
您必須從 S3 儲存貯體播放音訊檔案。S3 儲存貯體必須屬於與 SIP 媒體應用程式相同的 AWS 帳戶。此外,您必須將s3:GetObject
許可授予 Amazon Chime SDK Voice Connector 服務主體 voiceconnector.chime.amazonaws.com
。您可以使用 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
"
}
}
}
]
}
Audio Service 會代表 Sip Media Application 讀取和寫入您的 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
-
描述 –
CallId
AWS Lambda 函數調用 中的參與者CallDetails
描述允許的值 – 有效的呼叫 ID
必要 – 否
預設值 — 無
- ParticipantTag
-
描述 –
ParticipantTag
中其中一個已連線參與者的描述CallDetails
允許的值 –
LEG-A
或LEG-B
必要 – 否
預設值 – 如果您指定 ,則叫
ParticipantTag
用callLeg
忽略的預設值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
動作後呼叫其 AWS Lambda 函數,並使用 ACTION_SUCCESSFUL
或 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 對應的錯誤訊息呼叫 函數。下表列出可能的錯誤訊息。
錯誤 | 訊息 | 原因 |
---|---|---|
|
音訊來源參數值無效。 |
此錯誤可能因多種原因而發生。例如,SIP 媒體應用程式因為許可問題或 S3 儲存貯體的問題而無法存取 檔案。或者,音訊檔案可能會因持續時間、大小或不支援的格式而驗證失敗。 |
|
|
|
|
執行 動作時發生系統錯誤。 |
執行 動作時發生系統錯誤。 |
當動作因為逾時或重試次數過多而無法收集指定的位數時,SIP 媒體應用程式會使用ACTION_FAILED
叫用事件類型叫用 AWS Lambda 函數。
{
"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 上的工作範例: