选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

了解 Amazon Chime SDK PSTN 音频服务的 end-to-end呼叫

聚焦模式
了解 Amazon Chime SDK PSTN 音频服务的 end-to-end呼叫 - Amazon Chime SDK

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

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

此使用案例提供示例代码,用于接听 PSTN 呼叫者的电话、用音频消息向呼叫者打招呼、从呼叫者那里获取会议 PIN 码、播放音频以及让呼叫者加入会议。

调用事件和操作

音频服务将调用事件作为 JSON 对象传递给 AWS Lambda 函数。这些对象包括调用事件类型和任何相关的元数据。 AWS Lambda 函数还以 JSON 对象的形式返回 SIP 媒体应用程序操作,这些对象包括操作类型和任何相关的元数据。

下表列出了您收到调用事件时的调用事件以及可能的 ActionData.Type

调用事件 ActionData.Type

ACTION_SUCCESSFUL

CallAndBridge

ReceiveDigits

PlayAudio

PlayAudioAndGetDigits

JoinChimeMeeting

ModifyChimeMeetingAttendees

RecordMeeting

ACTION_FAILED

CallAndBridge

PlayAudio

PlayAudioAndGetDigits

ModifyChimeMeetingAttendees

RecordMeeting

挂断

HangUp

DIGITS_RECEIVED

ReceiveDigits
注意

要实现以下使用案例,您需要在您的 Amazon Chime SDK 库存中至少有一个电话号码、一个使用带 Amazon Resource Name (ARN) 的 AWS Lambda 函数的 SIP 媒体应用程序托管对象,以及一个使用电话号码作为触发器的 SIP 规则。

当 Amazon Chime SDK 接到规则中指定的电话号码的呼叫时,PSTN 音频服务会调用具有调用事件类型的 AWS Lambda 函数。NEW_INBOUND_CALL

{ "SchemaVersion": "1.0", "Sequence": 1, "InvocationEventType": "NEW_INBOUND_CALL", "CallDetails": { "TransactionId": "transaction-id", "AwsAccountId": "aws-account-id", "AwsRegion": "us-east-1", "SipRuleId": "sip-rule-id", "SipApplicationId": "sip-application-id", "Participants": [ { "CallId": "call-id-1", "ParticipantTag": "LEG-A", "To": "+11234567890", "From": "+19876543210", "Direction": "Inbound", "StartTimeInMilliseconds": "159700958834234", "Status": "Connected" } ] } }

您可以对该 AWS Lambda 函数进行编程以验证呼叫详细信息并将其存储起来以备将来使用。对于NEW_INBOUND_CALL活动,该 AWS Lambda 功能会以一组操作进行响应,这些操作会播放欢迎提示并要求提供会议 PIN 码。

音频文件具有以下要求:

  • 您必须播放 Amazon Simple Storage Service (S3) 存储桶中的音频文件。S3 存储桶必须与 SIP 媒体应用程序属于同一个 AWS 账户。此外,您必须向 Amazon Chime SDK 语音连接器服务主体 voiceconnector.chime.amazonaws.com 授予 s3:GetObject 权限。您可以使用 S3 控制台或命令行界面 (CLI) 完成此操作。

  • 您必须使用大小不超过 50 MB 的 PCM WAV 文件。Amazon Chime 软件开发工具包推荐 8 个 mono KHz 。

  • 每个 WAV 文件的 S3 元数据必须包含 {'ContentType': 'audio/wav'}

{ "SchemaVersion": "1.0", "Actions": [ { "Type" : "PlayAudio", "Parameters" : { "CallId": "call-id-1", "AudioSource": { "Type": "S3", "BucketName": "chime-meetings-audio-files-bucket-name", "Key": "welcome-to-meetings.wav" } } }, { "Type": "PlayAudioAndGetDigits", "Parameters" : { "ParticipantTag": "LEG-A", "AudioSource": { "Type": "S3", "BucketName": "chime-meetings-audio-files-bucket-name", "Key": "enter-meeting-pin.wav" }, "FailureAudioSource": { "Type": "S3", "BucketName": "chime-meetings-audio-files-bucket-name", "Key": "invalid-meeting-pin.wav" }, "MinNumberOfDigits": 3, "MaxNumberOfDigits": 5, "TerminatorDigits": ["#"], "InBetweenDigitsDurationInMilliseconds": 5000, "Repeat": 3, "RepeatDurationInMilliseconds": 10000 } } ] }

SIP 媒体应用程序在呼叫段 A 上运行这些操作。假设PlayAudioAndGetDigits操作收到数字,则 SIP 媒体应用程序调用ACTION_SUCCESSFUL事件 AWS Lambda 类型的函数。

{ "SchemaVersion": "1.0", "Sequence": 2, "InvocationEventType": "ACTION_SUCCESSFUL", "ActionData": { "Type": "PlayAudioAndGetDigits", "Parameters" : { "ParticipantTag": "LEG-A", "AudioSource": { "Type": "S3", "BucketName": "chime-meetings-audio-files-bucket-name", "Key": "enter-meeting-pin.wav" }, "FailureAudioSource": { "Type": "S3", "BucketName": "chime-meetings-audio-files-bucket-name", "Key": "invalid-meeting-pin.wav" }, "MinNumberOfDigits": 3, "MaxNumberOfDigits": 5, "TerminatorDigits": ["#"], "InBetweenDigitsDurationInMilliseconds": 5000, "Repeat": 3, "RepeatDurationInMilliseconds": 10000 }, "ReceivedDigits": "12345" // meeting PIN }, "CallDetails": { ... // same as in previous event } } }

您可以对 AWS Lambda 函数进行编程,以根据CallDetails数据识别呼叫者。您也可以验证之前收到的会议 PIN。假设密码正确,则使用 CreateMeetingCreateAttendee APIs 创建 Amazon Chime SDK 会议并生成会议与会者使用的加入令牌。该 AWS Lambda 函数以加入 Amazon Chime SDK 会议的操作作为响应。

{ "SchemaVersion": "1.0", "Actions": [ { "Type": "JoinChimeMeeting", "Parameters": { "JoinToken": "meeting-attendee-join-token" } } ] }

假设JoinToken有效,则 SIP 媒体应用程序将加入 Amazon Chime SDK 会议并使用该ACTION_SUCCESSFUL事件调用一个 AWS Lambda 函数,其中CallDetails包含来自 SIP 媒体应用程序和 Chime 媒体服务的数据 () LEG-B

{ "SchemaVersion": "1.0", "Sequence": 3, "InvocationEventType": "ACTION_SUCCESSFUL", "ActionData": { "Type" : "JoinChimeMeeting", "Parameters" : { "JoinToken": "meeting-attendee-join-token" } }, "CallDetails": { "TransactionId": "transaction-id", "AwsAccountId": "aws-account-id", "AwsRegion": "us-east-1", "SipRuleId": "sip-rule-id", "SipApplicationId": "sip-application-id", "Participants": [ { "CallId": "call-id-1", "ParticipantTag": "LEG-A", "To": "+11234567890", "From": "+19876543210", "Direction": "Inbound", "StartTimeInMilliseconds": "159700958834234", "Status": "Connected" }, { "CallId": "call-id-2", "ParticipantTag": "LEG-B", "To": "SMA", "From": "+17035550122", "Direction": "Outbound", "StartTimeInMilliseconds": "159700958834234", "Status": "Connected" } ] } }

如果您想在此时停止在调用或调用分支上运行操作,则可以使用一组空操作进行响应。

{ "SchemaVersion": "1.0" "Actions": [] }

呼叫者挂断电话后,SIP 媒体应用程序使用事件调用该 AWS Lambda 函数。HANGUP

{ "SchemaVersion": "1.0", "Sequence": 4, "InvocationEventType": "HANGUP", "ActionData": { "Type": "Hangup", "Parameters": { "CallId": "call-id-1", "ParticipantTag": "LEG-A" } }, "CallDetails": { "TransactionId": "transaction-id", "AwsAccountId": "aws-account-id", "AwsRegion": "us-east-1", "SipRuleId": "sip-rule-id", "SipApplicationId": "sip-application-id", "Participants": [ { "CallId": "call-id-1", "ParticipantTag": "LEG-A", "To": "+11234567890", "From": "+19876543210", "Direction": "Inbound", "StartTimeInMilliseconds": "159700958834234", "Status": "Disconnected" }, { "CallId": "call-id-2", "ParticipantTag": "LEG-B", "To": "SMA", "From": "+17035550122", "Direction": "Outbound", "StartTimeInMilliseconds": "159700958834234", "Status": "Disconnected" } ] } }

如果您使用操作来响应 Hangup 事件,若没有其他 Participants 显示 ConnectedStatus,则 SIP 媒体应用程序将忽略该操作。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。