

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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 . Voice Connector 또는 Voice Connector 그룹 엔드포인트에 `CallAndBridge` 작업을 구현할 때는 Voice Connector 또는 Voice Connector 그룹의 Amazon 리소스 번호(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                       
                }],
            }
        }
    ]
}
```

다음 예제는 Voice Connector 또는 Voice Connector 그룹과 사용자 지정 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` - Voice Connector 및 Voice Connector 그룹의 경우 `AWS`, 그 외에는 `PSTN`입니다.
+ `Arn` - Voice Connector 또는 Voice Connector 그룹의 ARN입니다. `AWS`를 `BridgeEndpointType`으로 사용하는 경우에만 필요합니다.
+ `Uri` - URI 값은 엔드포인트 유형에 따라 달라집니다.

  `PSTN` 엔드포인트의 경우 URI는 유효한 E.164 전화번호여야 합니다.

  `AWS` 엔드포인트의 경우 URI 값이 `Request-URI`의 `user` 부분을 설정합니다. [Augmented Backus-Naur Format](https://datatracker.ietf.org/doc/html/rfc2234)을 사용해야 합니다. 필수 길이: 1\~36. 값은 `a-z, A-Z, 0-9, &, =, +, $, /, %, -, _, !, ~, *, `(`,`), (`.`)을 사용합니다.

  `Request-URI`의 호스트 값은 대상 Voice Connector의 인바운드 경로에서 파생됩니다. 다음 예제는 `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}}"
              }
           }
        }
     ]
  }
  ```

  인바운드 경로 및 Voice Connector에 대한 자세한 내용은 [Editing Amazon Chime SDK Voice Connector settings](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/ko_kr/chime-sdk/latest/dg/images/call-bridge-ans-2.png)


다음 다이어그램은 응답하지 않은 통화의 통화 흐름을 보여줍니다.

![CallAndBridge 작업을 통한 응답하지 않은 통화의 흐름입니다.](http://docs.aws.amazon.com/ko_kr/chime-sdk/latest/dg/images/SMA_Bridging_NotAns.png)


**추가 세부 정보**  
`CallAndBridge` 작업에 관한 다음 사실을 유념하세요.
+ `CallTimeoutSeconds` - 이 타이머는 B 레그에서 SIP 초대가 전송될 때 시작됩니다. 원하는 대상 값을 설정할 수 있지만 업스트림 캐리어에서는 이 값을 무시할 수 있습니다.
+ `CallerIdNumber` – 이 전화번호는 고객의 전화번호이거나 A 레그의 발신 번호여야 합니다.
+ **끊는 행동 및 엣지 케이스** - 한 통화 레그가 끊기더라도 다른 쪽 통화 레그는 자동으로 전화를 끊지 않습니다. `Hangup` 이벤트가 AWS Lambda 함수로 전송되면 나머지 레그를 독립적으로 연결 해제해야 합니다. 통화 레그가 계속 걸려 있는 경우 끊길 때까지 통화 요금이 청구됩니다. 예를 들어 다음 시나리오에서는 예상치 못한 요금이 부과될 수 있습니다.
  + 대상 전화번호로 연결하려고 합니다. 대상이 통화 중이고 전화를 바로 음성 메일로 보냅니다. 오디오 서비스의 관점에서 보면 음성 메일로 가는 것은 전화를 받는 것과 같습니다. A 레그는 전화를 끊지만 B 레그는 계속해서 음성 메일 메시지를 수신합니다. B 레그가 수신하는 동안에는 요금이 청구됩니다.
  + 가장 좋은 방법은 AWS Lambda 함수 또는 통화 상대방을 사용하여 각 통화 레그를 독립적으로 끊는 것입니다.
+ **청구** - `CallAndBridge` 사용 시 요금은 다음과 같이 청구됩니다.
  + PSTN에 생성된 각 통화 레그(A 레그, B 레그 등)에 대한 활성 통화 시간(분)
  + 오디오 서비스 사용 시간(분)

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)