> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# FreePBX 및 Asterisk

PBX는 통신사와 번호를 유지하며, 선택한 통화를 [SIP 트렁크](/docs/ko/reception-ai/phone-numbers/bring-your-own-number#sip-trunk)를 통해 Reception.ai로 전달합니다. PBX에 Reception.ai를 가리키는 두 번째 트렁크를 추가한 다음, DID, 시간 조건 또는 IVR 옵션을 해당 트렁크로 라우팅합니다.

## 시작하기 전에

* 인터넷에서 연결 가능한 FreePBX 15 이상 또는 PJSIP를 사용하는 Asterisk
* PBX의 고정 공인 IP 주소. Reception.ai는 허용한 주소에서의 통화만 수신합니다.
* PBX의 트렁크, 라우트 및 방화벽 설정에 익숙한 담당자

## 설정

### Reception.ai에 SIP 트렁크 추가

**Integrations**로 이동해 **Add integration**을 선택한 다음 **SIP Trunk**를 선택합니다. **Inbound allowed addresses** 아래에 PBX의 공인 IP 주소를 추가합니다. 인바운드 사용자 이름과 비밀번호도 설정하는 경우, 아래 PBX 트렁크에 동일한 정보를 사용하세요.

### 번호 추가

**Receptionists**로 이동해 **Phone** 타일을 선택하고, 발신자가 거는 번호를 국가 코드와 함께 입력한 다음 **Add SIP Trunk number**를 선택합니다. Reception.ai에 사용할 SIP 서버 호스트와 요청 URI가 표시됩니다.

### FreePBX에서 TCP 활성화

Reception.ai는 UDP를 지원하지 않습니다. FreePBX에서 **Settings** → **Asterisk SIP Settings** → **SIP Settings \[chan_pjsip]** 로 이동하여 **tcp** 전송을 **Yes**로 설정하고, **Submit** 및 **Apply Config**를 선택합니다. 새 전송이 로드되도록 Asterisk를 재시작합니다. **Certificate Management**에서 인증서를 설정했다면 TLS도 사용할 수 있습니다.

### Reception.ai용 트렁크 생성

**Connectivity** → **Trunks** → **Add Trunk** → **Add SIP (chan_pjsip) Trunk**로 이동합니다. **General** 탭에서 `reception`과 같은 **Trunk Name**을 입력합니다. 리셉셔니스트가 각 발신자의 전화번호를 볼 수 있도록 **CID Options**를 **Allow Any CID**로 설정합니다. **pjsip Settings** 탭에서 다음을 설정합니다.

| 필드                  | 값                                                                                        |
| ------------------- | ---------------------------------------------------------------------------------------- |
| **Registration**    | **None**                                                                                 |
| **Authentication**  | **None** 또는 Reception.ai에 인바운드 자격 증명을 설정한 경우 **Username** 및 **Secret**을 포함한 **Outbound** |
| **SIP Server**      | Reception.ai SIP 서버 호스트                                                                  |
| **SIP Server Port** | TCP는 `5060`, TLS는 `5061`                                                                 |
| **Transport**       | TCP(또는 TLS) 전송(예: `0.0.0.0-tcp`)                                                         |

### +E.164를 전송하는 아웃바운드 라우트 추가

**Connectivity** → **Outbound Routes**로 이동하여 `reception` 트렁크만 사용하는 `Reception`이라는 라우트를 추가합니다. 사용하지 않는 **prefix**(예: `88`), `X.`의 **match pattern**, `+`의 **prepend**가 포함된 다이얼 패턴을 추가합니다. 그러면 `8814155550123`으로 건 통화는 `+14155550123`으로 트렁크를 통해 전송되며, 이는 Reception.ai에서 요구하는 형식입니다.

### DID를 Reception.ai로 전송

**Applications** → **Misc Destinations**로 이동하여 `+` 없이 E.164 형식의 번호 앞에 `88`을 붙여 다이얼하는 대상을 추가합니다(예: `8814155550123`). 그런 다음 **Connectivity** → **Inbound Routes**로 이동해 DID의 라우트를 열고, 대상을 해당 기타 대상으로 설정합니다. 시간 조건, 링 그룹 장애 조치 또는 IVR 옵션의 대상으로도 사용할 수 있습니다.

### NAT 및 오디오 수정

**Settings** → **Asterisk SIP Settings** → **General SIP Settings**로 이동합니다. **External Address**를 PBX의 공인 IP로 설정하고, **Local Networks** 아래에 프라이빗 서브넷을 나열합니다. 방화벽에서 이 페이지에 표시된 **RTP Port Ranges**(기본값: UDP, 10000–20000)를 엽니다.

### 테스트

다른 전화기에서 DID로 전화하여 리셉셔니스트가 응답하는지 확인합니다.

## 일반 Asterisk

FreePBX 없이 Asterisk를 사용하는 경우, `pjsip.conf`의 동일한 설정은 다음과 같습니다. `SIP_SERVER`를 Reception.ai에 표시된 호스트로 바꾸세요.

```ini
[transport-tcp]
type=transport
protocol=tcp
bind=0.0.0.0:5060
external_signaling_address=PBX_PUBLIC_IP
external_media_address=PBX_PUBLIC_IP
local_net=192.168.0.0/16

[reception]
type=aor
contact=sip:SIP_SERVER:5060;transport=tcp

[reception]
type=endpoint
transport=transport-tcp
aors=reception
context=from-reception
disallow=all
allow=ulaw,alaw
```

다이얼플랜에서 E.164 형식의 번호로 통화를 전송합니다.

```ini
exten => YOUR_DID,1,Dial(PJSIP/+14155550123@reception)
```

Reception.ai에서 인바운드 자격 증명을 설정했다면, 해당 정보가 포함된 `type=auth` 섹션을 추가하고 엔드포인트에서 `outbound_auth=`로 참조하세요.

## 제한 사항

* **전환.** 리셉셔니스트는 **Outbound SIP address**로 새 통화를 걸어 통화를 전환합니다. 사용자 이름과 비밀번호를 허용하는 통신사 계정을 사용하여 SIP 통신사를 가리키도록 설정하세요. 전환 통화를 다시 PBX로 라우팅하는 방법은 여기서 다루지 않습니다. Reception.ai는 변경되는 주소 풀에서 통화하므로 PBX가 IP를 통해 이 통화를 트렁크에 매칭할 수 없습니다.
* **PBX는 모든 통화를 두 번 처리합니다.** 한 번은 통신사에서, 또 한 번은 Reception.ai로 처리하므로 각 구간마다 사용 가능한 채널이 필요합니다.

## 문제 해결

| 문제                       | 확인할 사항                                                                                                    |
| ------------------------ | --------------------------------------------------------------------------------------------------------- |
| 벨이 울리기 전에 통화 실패          | 트렁크가 UDP가 아닌 TCP 또는 TLS 전송을 사용하고, 포트가 전송 방식과 일치하는지 확인하세요.                                                 |
| 통화가 거부됨                  | PBX의 공인 IP를 **Inbound allowed addresses**에 추가하세요. Asterisk 콘솔에서 INVITE의 요청 URI가 `+` 및 국가 코드로 시작하는지 확인하세요. |
| 리셉셔니스트에 PBX 번호가 발신자로 표시됨 | Reception.ai 트렁크의 **CID Options**를 **Allow Any CID**로 설정하세요.                                              |
| 단방향 오디오 또는 오디오 없음        | **External Address** 및 **Local Networks**를 설정하고 방화벽에서 RTP 포트 범위를 여세요.                                     |
| 리셉셔니스트가 응답하지 않음          | 리셉셔니스트의 **Phone** 타일에 번호가 추가되어 있고 PBX가 보내는 번호와 일치하는지 확인하세요.                                               |