本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
RecordAudio
允许 SIP 媒体应用程序录制给定调用 ID 的媒体。例如,语音邮件应用程序和会议参与者通知。应用程序会进行录制,直到达到您设置的持续时间,或用户按下其中一个 RecordingTerminators
,或应用程序检测到沉默。在这些情况下,该操作会指示您的应用程序将生成的媒体文件放入指定的 S3 存储桶中。S3 存储桶必须与 SIP 媒体应用程序属于同一个 AWS 账户。此外,该操作必须向 Amazon Chime SDK 语音连接器服务主体、Amazon Chime SDK 语音连接器服务主体s3:PutObjectAcl
授予s3:PutObject
和许可。 voiceconnector.chime.amazonaws.com
注意
使用此功能录制的录音可能会受有关电子通信录制的法律或法规的约束。您和您的最终用户有责任遵守与录音有关的所有适用法律,包括适当通知录制会话或通信中的所有参与者正在录制会话或通信,并获得他们的许可。
以下示例向 s3:PutObject
和 s3:PutObjectAcl
提供了访问 Amazon Chime SDK 语音连接器服务主体的权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SMARead", "Effect": "Allow", "Principal": { "Service": "voiceconnector.chime.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::
bucket-name
/*" } ] }
以下示例显示在调用者按下井号键 (#) 后,或者在 10 秒钟内没有活动,或者调用者保持沉默 3 秒钟后会停止录制,并将生成的媒体文件写入 RecordingDestination
参数定义的位置。
注意
本示例使用 CallId
参数。您可以改用 ParticipantTag
参数,但不能同时使用两者。
{ "Type": "RecordAudio", "Parameters": { "CallId": "
call-id-1
", "DurationInSeconds": "10
", "SilenceDurationInSeconds":3
, "SilenceThreshold":100
, "RecordingTerminators": [ "#
" ], "RecordingDestination": { "Type": "S3", "BucketName": "valid-bucket-name
", "Prefix": "valid-prefix-name
" } } }
- CallId
-
描述 —
CallId
AWS Lambda 函数调用CallDetails
中的参与者允许的值 — 有效的调用 ID
必填 — 否
默认值 – 无
- ParticipantTag
-
描述 —
CallDetails
中一个已连接参与者的ParticipantTag
允许的值 —
LEG-A
或LEG-B
必填 — 否
默认值 — 已调用
callLeg
的ParticipantTag
,如指定CallId
,则忽略该值 - RecordingDestination.Type
-
描述 — 目的地类型。仅 S3。
允许的值 — S3
必填 — 是
默认值 – 无
- RecordingDestination.BucketName
-
描述 — 有效的 S3 存储桶名称。存储桶必须有权访问 Amazon Chime SDK 语音连接器服务主体,
voiceconnector.chime.amazonaws.com
。允许的值 — Amazon Chime SDK 有权访问
s3:PutObject
和s3:PutObjectAcl
操作的有效 S3 存储桶。必填 — 是
默认值 – 无
- RecordingDestination.Prefix
-
描述 — 录制文件的 S3 前缀
允许的值 — 包含最多 979 个安全字符的有效前缀名称。有关安全字符的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的安全字符。
必填 — 否
默认值 — 无。如果未指定,则录制文件将保存到 S3 存储桶的根目录。
- DurationInSeconds
-
描述 — 录制的持续时间,以秒为单位
允许的值 — >0
必填 — 否
默认值 – 无
- SilenceDurationInSeconds
-
描述 — 录制停止后沉默的持续时间,以秒为单位 如果未指定,则禁用沉默检测。
允许的值 — [1;1000]
必填 — 否
默认值 — 200
- SilenceThreshold
-
描述 — 被视为“沉默”的噪音水平。如果您未指定
SilenceDurationInSeconds
,此参数将被忽略。参考值(将噪音视为沉默的噪声水平和阈值):
1 — 30dB 或以下,例如安静的房间
100 — 40-50dB,例如耳语或安静的办公室
200 — 60dB,例如拥挤的办公室
1000 — 75dB,例如吵闹的人或音乐
允许的值 — [1;1000]
必填 — 否
默认值 — 200
- RecordingTerminators
-
描述 — 列出所有可用的录制终止符。
允许的值 — 来自 [123456789*0#] 的个位数和符号的数组
必填 — 是
默认值 – 无
处理 ACTION_SUCCESSFUL 事件
录制结束后,Amazon Chime SDK SIP 媒体应用程序会调用该 AWS Lambda 函数,并将 ACTION_SUCCESSUCCESS 事件以及调用结果传递给该函数。
{ "SchemaVersion": "1.0", "Sequence": INTEGER, "InvocationEventType": "ACTION_SUCCESSFUL", "ActionData": { "Type" : "RecordAudio", "Parameters": { ... }, "RecordingDestination": { "Type": "S3", "BucketName": "
valid-bucket-name
", "Key": "valid-S3-key
" }, "RecordingTerminatorUsed":"#
" }, "CallDetails": { ... } }
ACTION_SUCCESSFUL
事件包含 ActionData
,其中包含以下字段:
- Type
-
描述 — 操作的类型,
RecordAudio
。 - Parameters
-
描述 — 操作的参数。
- RecordingDestination.Type
-
描述 — 目的地类型。仅 S3。
- RecordingDestination.BucketName
-
描述 — 包含录制文件的 S3 存储桶。
- RecordingDestination.Key
-
描述 — 录制文件的 S3 密钥。
- RecordingTerminatorUsed
-
描述 — 用于停止录制的终止符 —
RecordingTerminators
中传递的终止符之一。如果录制在达到最大持续时间 (DurationInSeconds
) 后或由于沉默 (SilenceDurationInSeconds
) 而停止,则输出中不包含此密钥值对。
错误处理
对于验证错误,SIP 媒体应用程序调用 AWS Lambda 函数时会显示相应的错误消息。下表列出可能的错误消息。
错误 | 消息 | Reason |
---|---|---|
|
操作的
将录音上传到 S3 存储桶时出错。 |
任何参数无效。 |
|
运行操作时出现系统错误。 |
运行操作时出现另一种类型的系统错误。 |
处理ACTION_FAILED事件
当操作未能在呼叫段录制媒体时,SIP 媒体应用程序将调用ACTION_FAILED
事件 AWS Lambda 类型的函数。请参阅以下示例。
{ "SchemaVersion": "1.0", "Sequence":
5
, "InvocationEventType": "ACTION_FAILED", "ActionData": { "Type" : "RecordAudio", "Parameters": { ... }, "ErrorType": "InvalidActionParameter", "ErrorMessage": "RecordingDestination parameter value is invalid." }, "CallDetails": { ... } }
参见工作示例,网址为 GitHub:https://github.com/aws-samples/ amazon-chime-sma-bridging