本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
PlayAudioAndGetDigits
播放音频并收集 DTMF 数字。如果发生失败,例如用户未输入正确的 DTMF 数字,该操作将播放“失败”音频,然后重播主音频,直到 SIP 媒体应用程序耗尽 Repeat 参数中定义的尝试次数。
您必须播放 S3 存储桶中的音频文件。S3 存储桶必须与 SIP 媒体应用程序属于同一个 AWS 账户。此外,您必须向 Amazon Chime SDK 语音连接器服务主体授予 s3:GetObject 的访问权限 (voiceconnector.chime.amazonaws.com)。您可以使用 S3 控制台或 CLI 完成该操作。
以下代码示例显示典型的 S3 存储桶策略。
音频服务代表您的 Sip 媒体应用程序对 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
-
描述 —
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 语音连接器服务主体 (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 语音连接器服务主体 (
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 函数并显示相应的错误消息。下表列出可能的错误消息。
| 错误 | 消息 | Reason |
|---|---|---|
|
|
音频来源参数值无效。 |
出现此错误可能基于多种原因。例如,由于权限问题或 S3 存储桶问题,SIP 媒体应用程序无法访问文件。或者,由于持续时间、大小或不受支持的格式等原因,音频文件可能无法通过验证。 |
|
|
操作的 |
|
|
|
运行操作时出现系统错误。 |
运行操作时出现一个系统错误。 |
当操作由于超时或重试次数过多而无法收集指定位数时,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: