CallAndBridge - Amazon Chime SDK

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

CallAndBridge

向 PSTN 电话号码或配置为 Amazon Chime SDK 语音连接器或 Amazon Chime SDK 语音连接器群组的 SIP 中继创建出站调用,然后将其与现有调用分支桥接。拨打电话号码时使用 PSTN 和调用 SIP 中继时使用 AWS

现有呼叫段可以是使用创建的出站呼叫段 CreateSIPMediaApplicationCallAPI,或由 SIP 规则创建的入站路段,该规则通过事件调用该 AWS Lambda 函数。NewInboundCall当您对语音连接器或语音连接器群组终端节点实施 CallAndBridge 操作时,必须指定语音连接器或语音连接器群组的 Amazon Resource Number (ARN)。

您还可以在出站呼叫段和 AWS Lambda 功能中添加自定义 SIP 标头。自定义标头允许您传递楼层号和邮政编码等值。有关自定义标头的更多信息,请参阅 在 Amazon Chime SDK PTSN 音频服务中使用 SIP 标头

以下示例代码显示桥接到 PSTN 终端节点的典型操作。

{ "SchemaVersion": "1.0", "Actions": [{ "Type": "CallAndBridge", "Parameters": { "CallTimeoutSeconds": 30, "CallerIdNumber": "e164PhoneNumber", // required "Endpoints": [{ "BridgeEndpointType": "PSTN", // required "Uri": "e164PhoneNumber", // required }], } } ] }

以下示例显示使用语音连接器或语音连接器群组以及自定义 SIP 标头的典型操作。

{ "SchemaVersion":"1.0", "Actions":[ { "Type":"CallAndBridge", "Parameters":{ "CallTimeoutSeconds":30, "CallerIdNumber": "e164PhoneNumber", // required "RingbackTone": { // optional "Type": "S3", "BucketName": "s3_bucket_name", "Key": "audio_file_name" }, "Endpoints":[ { "BridgeEndpointType":"AWS", // enum type, required "Arn":"arn:aws:chime:us-east-1:0123456789101:vc/abcdefg1hijklm2nopq3rs" //VC or VCG ARN, required for AWS endpoints "Uri":"ValidString", // required, see description below } ], "SipHeaders": { "x-String":"String" } } } ] }
CallTimeoutSeconds

描述 — 调用超时之前的时间间隔。计时器从调用设置时开始。

允许的值 — 介于 1 到 120 之间(含)

必填 — 否

默认值 — 30

CallerIdNumber

描述 — 属于客户的号码,或 A 分支的发件人编号

允许的值 — E.164 格式的有效电话号码

必填 — 是

默认值 – 无

Endpoints

描述 — 调用的终端节点

允许的值

  • BridgeEndpointType — 适用于语音连接器和语音连接器群组 的 AWS,否则为 PSTN

  • Arn — 语音连接器或语音连接器群组的 ARN。仅在 AWS 用作 BridgeEndpointType 时需要。

  • Uri — URI 值取决于终端节点的类型。

    对于 PSTN 终端节点,URI 必须是有效的 E.164 电话号码。

    对于 AWS 终端节点,URI 值设置 Request-URIuser 部分。您必须使用增强的 Backus-Naur 格式。所需长度:介于 1 到 30 之间(含)。使用以下值:a-z, A-Z, 0-9, &, =, +, $, /, %, -, _, !, ~, *, (,)、(.)

    Request-URI 的主机值来自目标语音连接器的入站路由。下面示例显示带有 AWS 终端节点的 CallAndBridge 操作。

    { "SchemaVersion":"1.0", "Actions":[ { "Type":"CallAndBridge", "Parameters":{ "CallTimeoutSeconds":30, "CallerIdNumber": "+18005550122", "Endpoints":[ { "BridgeEndpointType":"AWS", "Arn":"arn:aws:chime:us-east-1:0123456789101:vc/abcdefg1hijklm2nopq3rs", "Uri":"5550" } ], "SipHeaders": { "x-String":"String" } } } ] }

    有关入站路由和语音连接器的更多信息,请参阅编辑 Amazon Chime SDK 语音连接器设置

必填 — 是

默认值 – 无

SipHeaders

描述 — 允许您传递其他值。仅与 AWS 终端节点类型一起使用。

允许的值 — 有效的 SIP 标头

必填 — 否

默认值 – 无

以下示例显示使用 PSTN 终端节点的成功 CallAndBridge 操作:

{ "SchemaVersion": "1.0", "Sequence": 3, "InvocationEventType": "ACTION_SUCCESSFUL", "ActionData": { "Type": "CallAndBridge", "Parameters": { "CallTimeoutSeconds": 30, "CallerIdNumber": "e164PhoneNumber", "Endpoints":[ { "BridgeEndpointType": "PSTN", "Uri": "e164PhoneNumber" } ], "CallId": "call-id-1" } }, "CallDetails":{ ..... ..... "Participants":[ { "CallId": "call-id-1", "ParticipantTag": "LEG-A", ..... "Status": "Connected" }, { "CallId": "call-id-2", "ParticipantTag": "LEG-B", ..... "Status": "Connected" } ] } }

以下示例显示失败的 CallAndBridge 操作。

{ "SchemaVersion": "1.0", "Sequence":2, "InvocationEventType": "ACTION_FAILED", "ActionData":{ "Type": "CallAndBridge", "Parameters":{ "CallTimeoutSeconds": 30, "CallerIdNumber": "e164PhoneNumber", "Endpoints": [ { "BridgeEndpointType": "PSTN", "Uri": "e164PhoneNumber" } ], "CallId": "call-id-1" }, "ErrorType": "CallNotAnswered", "ErrorMessage": "Call not answered" }, "CallDetails":{ ..... ..... "Participants":[ { "CallId": "call-id-1", "ParticipantTag": "LEG-A", ..... } ] } }

调用流

CallAndBridge 操作为现有调用分支提供不同的调用信令和音频体验,具体取决于参数和分支是否已连接。

下图显示入站调用分支 A 已连接时具有不同参数的调用流。

已应答呼叫通过 CallAndBridge 操作的流。

下图显示了未应答呼叫的调用流。

未应答呼叫通过 CallAndBridge 操作的流。
其他详细信息

记住有关 CallAndBridge 操作的这些事实。

  • CallTimeoutSeconds — 此计时器在 B-Leg 上发送 SIP 邀请时启动。您可以设置所需的目标值,但上游运营商可以忽略该值。

  • CallerIdNumber — 此电话号码必须属于客户,或者是 A-Leg 的发件人号码。

  • 挂断行为和边缘情况 — 如果一个调用分支挂断,则另一个调用分支不会自动挂断调用。当向 AWS Lambda 函数发送Hangup事件时,必须独立断开剩余段的连接。如果调用分支仍未挂断,则将对该调用进行计费,直到该调用挂断为止。例如,以下情况可能会导致意外收费:

    • 您尝试桥接到目标电话号码。目的地占线,直接将呼叫发送到语音信箱。从音频服务的角度来看,进入语音信箱就是应答呼叫。A-Leg 挂断了,但是 B-Leg 继续收听语音信箱消息。当 B-Leg 收听时,您会被收费。

    • 作为最佳实践,使用 AWS Lambda 函数或呼叫另一端的一方独立挂断每个呼叫段。

  • 账单 — 使用 CallAndBridge 时,您需要为以下内容付费:

    • 为 PSTN 创建的每个调用分支(A-Leg、B-Leg 等)的活动呼叫分钟数。

    • 音频服务使用分钟数。

参见以下工作示例 GitHub: