本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
PlayAudioAndGetDigits
播放音訊並收集 DTMF 數字。如果發生故障,例如使用者未輸入正確的 DTMF 位數,動作會播放「失敗」音訊,然後重播主要音訊,直到 SIP 媒體應用程式耗盡 Repeat 參數中定義的嘗試次數。
您必須從 S3 儲存貯體播放音訊檔案。S3 儲存貯體必須屬於與 SIP 媒體應用程式相同的 AWS 帳戶。此外,您必須將 s3:GetObject許可授予 Amazon Chime SDK Voice Connector 服務主體 voiceconnector.chime.amazonaws.com。您可以使用 S3 主控台或 CLI 來執行此操作。
下列程式碼範例顯示典型的 S3 儲存貯體政策。
Audio Service 會代表 Sip Media Application 讀取和寫入您的 S3 儲存貯體。若要避免混淆代理人問題,您可以限制 S3 儲存貯體存取單一 SIP 媒體應用程式。
下列範例顯示典型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
-
描述 –
CallIdAWS 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.BucketNameS3 儲存貯體中音訊物件的金鑰名稱。允許的值 – 有效的音訊檔案
必要 – 是
預設值 — 無
- FailureAudioSource.Type
-
描述 –
FailureAudioSource.BucketNameS3 儲存貯體中音訊物件的金鑰名稱。允許的值 – 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.BucketNameS3 儲存貯體中音訊物件的金鑰名稱。允許的值 – 有效的音訊檔案
必要 – 是
預設值 — 無
- 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 對應的錯誤訊息呼叫 函數。下表列出可能的錯誤訊息。
| 錯誤 | 訊息 | 原因 |
|---|---|---|
|
|
音訊來源參數值無效。 |
此錯誤可能因多種原因而發生。例如,由於許可問題或 S3 儲存貯體的問題,SIP 媒體應用程式無法存取 檔案。或者,音訊檔案可能會因持續時間、大小或不支援的格式而驗證失敗。 |
|
|
|
|
|
|
執行 動作時發生系統錯誤。 |
執行 動作時發生系統錯誤。 |
當動作因為逾時或重試次數過多而無法收集指定的位數時,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 上的工作範例: