本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在调用的任一分支上播放音频文件。音频可以重复播放任意次数。可以使用 PlaybackTerminators
中设置的 DTMF 数字终止正在播放的音频。
目前,Amazon Chime SDK 仅支持从 Amazon Simple Storage Service (Amazon S3) 存储桶播放音频文件。S3 存储桶必须与 SIP 媒体应用程序属于同一个 AWS 账户。此外,您必须向 Amazon Chime SDK 语音连接器服务主体授予 s3:GetObject
权限。您可以使用 S3 控制台或命令行界面 (CLI) 完成此操作。
以下代码示例显示典型的存储桶策略。
{
"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
"
}
}
}
]
}
以下代码示例显示典型的操作。
{
"Type": "PlayAudio",
"Parameters": {
"CallId": "call-id-1
",
"ParticipantTag": "LEG-A",
"PlaybackTerminators": ["1
", "8
", "#
"],
"Repeat": "5
",
"AudioSource": {
"Type": "S3",
"BucketName": "valid-S3-bucket-name
",
"Key": "wave-file.wav
"
}
}
}
- CallID
-
描述 —
CallDetails
中的参与者的CallId
。允许的值 — 有效的调用 ID。
必填 — 否,如
ParticipantTag
已存在。默认值 — 无。
- ParticipantTag
-
描述 —
CallDetails
中一个已连接参与者的ParticipantTag
。允许的值 —
LEG-A
或LEG-B
。必填 — 否,如
CallId
已存在。默认值 — 被调用的
callLeg
的ParticipantTag
。如果您指定CallId
,则忽略该值。 - PlaybackTerminator
-
描述 — 使用用户的 DTMF 输入终止正在播放的音频
允许的值 — 由以下值组成的数组:“0”“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“#”、“*”
必填 — 否
默认值 – 无
- Repeat
-
描述 — 将音频重复播放指定次数
允许的值 — 大于零的整数
必填 — 否
默认值 — 1
- AudioSource.Type
-
描述 — 音频文件来源的类型。
允许的值 — S3。
必填 — 是。
默认值 — 无。
- AudioSource.BucketName
-
描述-对于 S3 源类型,S3 存储桶必须与 SIP 应用程序属于同一个 AWS 账户。存储桶必须有权访问 Amazon Chime SDK 语音连接器服务主体,即 voiceconnector.chime.amazonaws.com。
允许的值 — Amazon Chime SDK 有权访问
s3:GetObject
操作的有效 S3 存储桶。必填 — 是。
默认值 — 无。
- AudioSource.key
-
描述 — 对于 S3 源类型,
AudioSource.BucketName
属性中指定的 S3 存储桶中的文件名。允许的值 — 有效的音频文件。
必填 — 是。
默认值 — 无。
SIP 媒体应用程序尝试从来源 URL 播放音频。您可以使用大小不超过 50MB 未压缩的原始 PCM .wav 文件。亚马逊 Chime SDK 推荐 8 个 mono KHz 。
当拨号计划中的最后一条指令为,PlayAudio
并且文件已完成播放时,或者如果用户按下键停止播放,则应用程序将使用以下示例所示的事件调用该 AWS Lambda 函数。
{
"SchemaVersion": "1.0",
"Sequence": INTEGER,
"InvocationEventType": "ACTION_SUCCESSFUL",
"ActionData": {
"Type": "PlayAudio",
"Parameters" : {
"CallId": "call-id-1
",
"AudioSource": {
"Type": "S3",
"BucketName": "valid-S3-bucket-name
",
"Key": "wave-file.wav
",
}
}
}
终止数字停止音频后,音频将不会重复播放。
错误处理
当验证文件包含错误或运行操作时出现错误时,SIP 媒体应用程序会调用带有相应错误代码的 AWS Lambda 函数。
错误 | 消息 | Reason |
---|---|---|
|
音频来源参数无效。 |
出现此错误可能基于多种原因。例如,由于权限问题或 URL 问题,SIP 媒体应用程序无法访问文件。或者,由于格式、持续时间、大小等原因,音频文件可能无法通过验证。 |
|
运行操作时出现系统错误。 |
运行操作时出现另一个系统错误。 |
|
CallId 或操作 ParticipantTag 参数无效。 |
该操作包含无效参数。 |
以下代码示例显示典型的调用失败。
{
"SchemaVersion": "1.0",
"Sequence": 2,
"InvocationEventType": "ACTION_FAILED",
"ActionData": {
"Type": "PlayAudio",
"Parameters" : {
"CallId": "call-id-1
",
"AudioSource": {
"Type": "S3",
"BucketName": "bucket-name
",
"Key": "audio-file.wav
"
},
},
"ErrorType": "InvalidAudioSource",
"ErrorMessage": "Audio Source parameter value is invalid."
}
"CallDetails": {
...
}
}
参见以下方面的工作示例 GitHub: