本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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-URI
的user
部分。您必须使用增强的 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
操作的这些事实。
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: