View a markdown version of this page

RecordAudio - Amazon Chime SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

RecordAudio

允许 SIP 媒体应用程序录制给定调用 ID 的媒体。例如,语音邮件应用程序和会议参与者通知。应用程序会进行录制,直到达到您设置的持续时间,或用户按下其中一个 RecordingTerminators,或应用程序检测到沉默。在这些情况下,该操作会指示您的应用程序将生成的媒体文件放入指定的 S3 存储桶中。S3 存储桶必须与 SIP 媒体应用程序属于同一个 AWS 账户。此外,该操作必须给予 s3:PutObject 和 s3:PutObjectAcl 访问 Amazon Chime SDK 语音连接器服务主体 Amazon Chime SDK 语音连接器服务主体(voiceconnector.chime.amazonaws.com)的权限。

注意

使用此功能录制的录音可能会受有关电子通信录制的法律或法规的约束。您和您的最终用户有责任遵守与录音有关的所有适用法律,包括适当通知录制会话或通信中的所有参与者正在录制会话或通信,并获得他们的许可。

以下示例 IAM 策略向亚马逊 Chime SDK 语音连接器服务主体授予s3:PutObject和s3:PutObjectAcl权限:

例: IAM 通话录音政策
{ "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/*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

以下示例显示在调用者按下井号键 (#) 后,或者在 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 函数。下表列出可能的错误消息。

错误 Message Reason

InvalidActionParameter

操作的 CallId 或 ParticipantTag 参数无效。

DurationInSeconds 参数值无效。

SilenceDurationInSeconds 参数值无效。

SilenceThreshold 参数值无效。

RecordingDestination 参数值无效。

将录音上传到 S3 存储桶时出错。

任何参数无效。

SystemException

运行操作时出现系统错误。

运行操作时出现另一种类型的系统错误。

Handling ACTION_FAILED events

当操作无法在呼叫段上录制媒体时,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