

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

建立對 PSTN 電話號碼的外撥通話，或設定為 Amazon Chime SDK Voice Connector 或 Amazon Chime SDK Voice Connector 群組的 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 建立的外撥呼叫，或由使用`NewInboundCall`事件呼叫函數的 SIP 規則建立的 AWS Lambda 傳入呼叫。當您對語音連接器或語音連接器群組端點實作`CallAndBridge`動作時，您必須指定語音連接器或語音連接器群組的 Amazon Resource Number (ARN)。

您也可以將自訂 SIP 標頭新增至外撥通話和 AWS Lambda 函數。自訂標頭可讓您傳遞樓層號碼和郵遞區號等值。如需自訂標頭的詳細資訊，請參閱 [在 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 Leg 的寄件者號碼  
*允許的值* – E.164 格式的有效電話號碼  
*必要* – 是  
*預設值* — 無

**Endpoints**  
*描述* – 呼叫的端點  
*允許的值*：  
+ `BridgeEndpointType` – `AWS`適用於語音連接器和語音連接器群組，否則為 `PSTN`。
+ `Arn` – Voice Connector 或 Voice Connector 群組的 ARN。只有在使用 `AWS`做為 時才需要`BridgeEndpointType`。
+ `Uri` – URI 值取決於端點的類型。

  對於`PSTN`端點，URI 必須是有效的 E.164 電話號碼。

  針對`AWS`端點，URI 值會設定 `user`的一部分`Request-URI`。您必須使用[增強的 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 Voice Connector 設定](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_tw/chime-sdk/latest/dg/images/call-bridge-ans-2.png)


下圖顯示未接聽通話的通話流程。

![透過 CallAndBridge動作進行未接聽呼叫的流程。](http://docs.aws.amazon.com/zh_tw/chime-sdk/latest/dg/images/SMA_Bridging_NotAns.png)


**其他詳細資訊**  
請記住這些有關 `CallAndBridge`動作的事實。
+ `CallTimeoutSeconds` – 此計時器會在 B-Leg 上傳送 SIP 邀請時啟動。您可以設定所需的目標值，但上游電信業者可以忽略此值。
+ `CallerIdNumber` – 此電話號碼必須屬於客戶，或為 A-Leg 的寄件者號碼。
+ **掛斷行為和邊緣案例** – 如果一個通話分支掛斷，另一個通話分支不會自動掛斷通話。將`Hangup`事件傳送至 AWS Lambda 函數時，必須獨立中斷剩餘的腿部連線。如果通話腿保持停滯不前，通話會計費，直到掛斷為止。例如，以下案例可能會導致意外費用：
  + 您嘗試橋接到目的地電話號碼。目的地忙碌中，並直接將通話傳送至語音信箱。從音訊服務的角度來看，前往語音信箱是接聽的通話。A-Leg 掛斷電話，但 B-Leg 會繼續接聽語音信箱訊息。當 B-Leg 接聽時，您會收到帳單。
  + 最佳實務是使用 AWS Lambda 函數或通話另一端的一方，獨立掛斷每個通話腿。
+ **帳單** – 使用 時，您需要支付下列費用`CallAndBridge`：
  + 對 PSTN 建立的每個通話分支 (A-Leg、B-Leg 等） 的作用中通話分鐘數。
  + Audio Service 用量分鐘。

請參閱 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)