

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

# CallAndBridge
<a name="call-and-bridge"></a>

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

现有呼叫可以是使用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html)API 创建的出站呼叫，也可以是通过事件调用 AWS Lambda 函数的 SIP 规则创建的入站呼叫。`NewInboundCall`当您对语音连接器或语音连接器群组终端节点实施 `CallAndBridge` 操作时，必须指定语音连接器或语音连接器群组的 Amazon Resource Number (ARN)。

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

使用呼叫和桥接功能时，请务必注意，每个呼叫都计入用于计算 SMA 活动呼叫限制的活动并发呼叫计数。考虑到这一点，在管理呼叫和桥接的 SMA 活跃呼叫限制时，应每 1 个呼叫和桥接操作计算 2 个呼叫。有关更多信息，请参阅中的 [SIP 中继和语音配额](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html#chm-sdk-pstn-quotas)。*AWS 一般参考*

以下示例代码显示桥接到 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格式](https://datatracker.ietf.org/doc/html/rfc2234)。所需长度：介于 1 到 36 之间（含）。使用以下值：`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 语音连接器设置](https://docs.aws.amazon.com/chime-sdk/latest/ag/edit-voicecon.html)。
*必填* — 是  
*默认值* – 无

**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",
            .....   
         }
      ]
   }
}
```

## 调用流
<a name="call-bridge-flows"></a>

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

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

![已应答呼叫通过 CallAndBridge 操作的流。](http://docs.aws.amazon.com/zh_cn/chime-sdk/latest/dg/images/call-bridge-ans-2.png)


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

![未应答呼叫通过 CallAndBridge 操作的流。](http://docs.aws.amazon.com/zh_cn/chime-sdk/latest/dg/images/SMA_Bridging_NotAns.png)


**其他详细信息**  
记住有关 `CallAndBridge` 操作的这些事实。
+ `CallTimeoutSeconds`— 此计时器在上发送 SIP 邀请时启动 B-Leg。您可以设置所需的目标值，但上游运营商可以忽略该值。
+ `CallerIdNumber`— 此电话号码必须属于客户，或者是客户的发件人号码 A-Leg。
+ **Hang-up 行为和边缘情况** — 如果一个呼叫段挂断，则另一个呼叫段不会自动挂断呼叫。当向 AWS Lambda 函数发送`Hangup`事件时，必须独立断开剩余段的连接。如果调用分支仍未挂断，则将对该调用进行计费，直到该调用挂断为止。例如，以下情况可能会导致意外收费：
  + 您尝试桥接到目标电话号码。目的地占线，直接将呼叫发送到语音信箱。从音频服务的角度来看，进入语音信箱就是应答呼叫。 A-Leg挂断了，但 B-Leg 仍在收听语音信箱消息。当他们收 B-Leg 听时，你会被收费。
  + 作为最佳实践，使用 AWS Lambda 函数或呼叫另一端的一方独立挂断每个呼叫段。
+ **账单** — 使用 `CallAndBridge` 时，您需要为以下内容付费：
  + 为 PSTN 创建的每个呼叫段的活动通话分钟数（A-Leg B-Leg、等）。
  + 音频服务使用分钟数。

参见以下方面的工作示例 GitHub：
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging)
+ [https://github.com/aws-samples/amazon-chime-sma-call-forwarding](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-on-demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)