---
title: "Hubungkan melalui SIP (tanpa nomor telepon)"
description: "Kirim panggilan ke agen ThunderPhone langsung dari PBX, operator, atau aplikasi SIP Anda, dengan URI SIP satu kali untuk setiap panggilan atau alamat SIP permanen."
---

Jika sistem Anda sendiri sudah menangani nomor telepon (PBX, platform pusat kontak, atau akun operator tempat Anda merotasi nomor), Anda dapat mengirim panggilan ke agen ThunderPhone melalui SIP standar. Anda tidak perlu mengimpor atau membeli nomor di ThunderPhone. Sistem Anda menghubungi alamat SIP dan agen menjawab.

Ada dua jenis alamat SIP:

| | **URI SIP per panggilan** | **Endpoint SIP** |
|---|---|---|
| Bentuk | `sip:c-<token>@sip.thunderphone.com` | `sip:agent-<id>-<letters>@sip.thunderphone.com` |
| Dibuat dengan | `POST /v1/calls/register-sip`, sekali per panggilan | `POST /v1/sip-endpoints`, sekali |
| Autentikasi | Token satu kali pakai dalam alamat | Nama pengguna + kata sandi digest SIP (dan opsional daftar izin IP sumber) |
| Cocok untuk | Aplikasi yang sudah memanggil API sebelum meneruskan panggilan; variabel per panggilan | PBX dan operator yang cukup “mengarahkan trunk” ke ThunderPhone |
| Berlaku selama | 5 menit, satu panggilan | Hingga Anda menghapusnya |

Kedua jenis tersebut merutekan ke satu agen di organisasi Anda, dan keduanya muncul di riwayat panggilan seperti panggilan masuk lainnya.

## URI SIP per panggilan

### 1. Daftarkan panggilan

```bash
curl -X POST https://api.thunderphone.com/v1/calls/register-sip \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": 12,
    "to_number": "+14155550142",
    "variables": {"customer_name": "Ada"}
  }'
```

```json
{
  "call_id": 862197007562,
  "sip_uri": "sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com",
  "expires_at": "2026-09-25T21:49:52Z",
  "agent_id": 12,
  "to_number": "+14155550142"
}
```

- `to_number` (opsional) adalah nomor yang dihubungi penelepon di sisi Anda. Nilai ini disimpan sebagai tujuan panggilan dalam riwayat panggilan, dan agen melihatnya sebagai nomornya sendiri.
- `variables` (opsional) mengisi `{{placeholders}}` dalam Prompt agen, sama seperti untuk [panggilan keluar](/id/guides/call-variables).
- `call_id` adalah id yang akan dimiliki panggilan dalam riwayat panggilan (`GET /v1/calls/{call_id}`) setelah terhubung.

### 2. Hubungi URI

Kirim panggilan ke `sip_uri` dalam waktu 5 menit. URI hanya berfungsi untuk satu panggilan: setelah digunakan oleh sebuah panggilan, URI tersebut habis, bahkan jika panggilan itu berakhir dengan cepat.

Dengan Twilio, misalnya, kembalikan TwiML ini untuk panggilan yang ingin Anda teruskan:

```xml
<Response>
  <Dial>
    <Sip>sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com;transport=tcp</Sip>
  </Dial>
</Response>
```

Dari PBX, hubungi URI sebagai tujuan SIP. Tidak diperlukan nama pengguna atau kata sandi; token adalah kredensialnya, jadi perlakukan URI seperti kata sandi hingga URI tersebut digunakan.

## Endpoint SIP (alamat permanen)

### 1. Buat endpoint

```bash
curl -X POST https://api.thunderphone.com/v1/sip-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"agent_id": 12, "name": "Main PBX"}'
```

```json
{
  "id": 7,
  "name": "Main PBX",
  "agent_id": 12,
  "sip_uri": "sip:agent-12-jhxmginwjx@sip.thunderphone.com",
  "username": "tp409667538f83",
  "password": "8mJ0…",
  "allowed_source_cidrs": [],
  "status": "active",
  "created_at": "2026-09-25T21:46:18Z"
}
```

<Warning>
  `password` hanya dikembalikan sekali, saat endpoint dibuat. Segera simpan
  di konfigurasi PBX atau operator Anda. Jika hilang, rotasikan dengan
  `POST /v1/sip-endpoints/{id}/rotate-password`.
</Warning>

### 2. Arahkan sistem Anda ke endpoint

Konfigurasikan trunk atau tujuan SIP dengan:

| Pengaturan | Nilai |
|---|---|
| URI SIP | `sip_uri` endpoint |
| Nama pengguna / kata sandi | `username` / `password` (autentikasi digest; ThunderPhone melakukan challenge pada setiap panggilan) |
| Transport | TCP pada port 5060 atau TLS pada port 5061 (disarankan), atau UDP pada port 5060 |
| Codec | G.711 (PCMU/PCMA) atau G.722 |

<Note>
  Utamakan TCP atau TLS. UDP berfungsi dari alamat publik dan sebagian besar NAT,
  tetapi di balik NAT "simetris" (yang menggunakan port baru untuk setiap tujuan),
  putus panggilan dan pengalihan dari agen mungkin tidak mencapai sistem Anda.
  Daftar izin IP sumber (di bawah) juga memerlukan TCP atau TLS. Melalui TLS,
  pensinyalan SIP tetap terenkripsi melewati `sip.thunderphone.com`, hingga ke
  server yang menangani panggilan.
</Note>

Pengaturan transport dan codec ini juga berlaku untuk URI per-panggilan. Dua
detail jaringan penting untuk kedua jenis alamat:

- **Ikuti Record-Route.** Setelah INVITE pertama, sisa pensinyalan panggilan
  (ACK, putus panggilan, pengalihan) dikirim ke server ThunderPhone tertentu
  yang menjawab, yang disebutkan dalam header `Record-Route`
  (`sip-1.thunderphone.com` atau `sip-2.thunderphone.com`, atau alamat IP-nya).
  Jika Anda membatasi SIP keluar, izinkan host tersebut selain
  `sip.thunderphone.com`: `172.170.39.202` (`sip`), `13.86.104.121`
  (`sip-1`) dan `20.80.98.90` (`sip-2`).
- **Audio dikirim ke tempat lain.** `sip.thunderphone.com` hanya membawa
  pensinyalan. Izinkan media (RTP) ke alamat dan port dalam jawaban SDP.

Setiap panggilan ke alamat tersebut mencapai agen endpoint, nomor apa pun yang
dihubungi pemanggil Anda di sisi Anda. Anda tidak pernah mengimpor nomor, jadi
mengganti nomor di sisi Anda tidak memerlukan perubahan di ThunderPhone.

### Teruskan nomor yang dihubungi (opsional)

Untuk mencatat nomor Anda yang dihubungi pemanggil, kirimkan nomor tersebut pada
INVITE dalam header `X-Original-To` (misalnya `X-Original-To: +14155550142`) atau
dalam header standar `Diversion`. ThunderPhone menyimpannya sebagai tujuan
panggilan.

Tujuan dipilih dalam urutan ini: `to_number` yang diberikan saat URI per-panggilan
didaftarkan, lalu nomor dalam `X-Original-To`, lalu nomor dalam `Diversion`.
Jika tidak satu pun memberikan nomor, tujuan ditampilkan sebagai
`sip:agent-12-jhxmginwjx` (alamat endpoint) untuk endpoint, atau `sip:call`
untuk URI per-panggilan.

Dengan Twilio, Anda dapat menambahkan header ke URI SIP:
`sip:agent-12-jhxmginwjx@sip.thunderphone.com;transport=tcp?X-Original-To=%2B14155550142`.

### Batasi IP sumber (opsional)

Atur `allowed_source_cidrs` agar hanya menerima panggilan dari alamat
pensinyalan Anda sendiri, selain nama pengguna dan kata sandi:

```bash
curl -X PATCH https://api.thunderphone.com/v1/sip-endpoints/7 \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"allowed_source_cidrs": ["203.0.113.0/28"]}'
```

Panggilan dari alamat lain ditolak sebelum mencapai agen. Gunakan alamat asal
sistem Anda mengirim pensinyalan SIP (untuk operator seperti Twilio, rentang IP
pensinyalan yang dipublikasikannya), bukan alamat media Anda.

<Warning>
  Daftar izin diperiksa hanya untuk panggilan melalui TCP atau TLS. Alamat sumber
  UDP dapat dipalsukan, sehingga endpoint dengan daftar izin menolak setiap
  panggilan yang masuk melalui UDP. Kirim panggilan ke endpoint tersebut dengan
  `;transport=tcp` (port 5060) atau melalui TLS (port 5061).
</Warning>

## Yang dilihat oleh penelepon dan sistem Anda

- **ID penelepon:** bagian pengguna dari header `From` disimpan sebagai penelepon.
  Nomor telepon (digit, opsional dengan `+`, spasi, tanda hubung, titik, atau
  tanda kurung) dinormalisasi ke E.164; hal lain, seperti nama pengguna SIP,
  disimpan sebagaimana dikirim. Maksimal 32 karakter disimpan, dan penelepon
  yang tidak ada disimpan sebagai `anonymous`.
- **Panggilan yang ditolak:** URI per-panggilan yang tidak dikenal atau kedaluwarsa mendapatkan SIP
  `404 Not Found`. URI per-panggilan yang sudah digunakan, endpoint yang
  dinonaktifkan, atau sumber di luar daftar izin (termasuk panggilan UDP apa pun
  ke endpoint dengan daftar izin) diputuskan sebelum agen dimulai: sistem Anda
  mungkin melihat panggilan gagal, atau terhubung lalu langsung berakhir.
  Penolakan ini tidak membuat entri riwayat panggilan. Jika organisasi Anda
  kehabisan kredit atau telah mencapai batas pengeluaran, panggilan ditolak dan
  muncul dalam riwayat panggilan sebagai panggilan gagal tanpa biaya. Untuk
  mencoba ulang upaya per-panggilan, daftarkan URI baru.
- **Transfer:** transfer dingin agen berfungsi (ThunderPhone mengirim SIP
  `REFER`, yang harus diterima oleh sistem Anda). Transfer hangat tidak tersedia
  pada panggilan alamat SIP, karena tidak ada nomor ThunderPhone untuk
  ditampilkan sebagai ID penelepon pada kaki kedua. Dengan Twilio, TwiML di atas
  menghubungkan agen tetapi tidak menangani transfer: tambahkan
  `referUrl="https://YOUR_SERVER/sip-transfer"` ke `<Dial>`, dan buat webhook
  tersebut membaca `ReferTransferTarget` serta mengembalikan TwiML yang memanggil
  tujuan transfer (lihat [panduan SIP REFER Twilio](https://www.twilio.com/docs/voice/api/refer-to-twilio)).
- **Pesan teks:** alamat SIP dan nomor yang dipanggil tidak dapat mengirim pesan
  teks. Agen hanya dapat mengirim pesan teks selama panggilan alamat SIP jika
  agen memiliki nomor terpisah yang mendukung SMS dan telah disiapkan untuk
  mengirim pesan teks; jika tidak, alat SMS-nya tidak tersedia.
- **Pendaftaran:** ThunderPhone tidak menerima SIP `REGISTER`. Kirim panggilan
  ke alamat tersebut; jangan mendaftar ke alamat tersebut.

## Harga

Panggilan alamat SIP ditagihkan sesuai tarif per menit normal agen. Tidak ada
biaya nomor telepon, karena tidak ada nomor ThunderPhone yang membawa panggilan
tersebut. Operator Anda sendiri menagihkan bagian panggilannya seperti biasa.
Lihat [Harga](/id/guides/pricing).

## Uji coba

1. Buat URI per-panggilan atau endpoint seperti di atas.
2. Hubungi URI tersebut dari sistem Anda, atau dari softphone SIP apa pun (untuk
   endpoint, masukkan nama pengguna dan kata sandi).
3. Setelah menutup panggilan, buka panggilan di **Panggilan** pada dashboard,
   atau ambil menggunakan `GET /v1/calls/{call_id}`. Data tersebut menampilkan
   penelepon, tujuan (lihat urutan di bawah "Teruskan nomor yang dipanggil"), dan
   transkrip.

Detail API: [referensi API alamat SIP](/api-reference/sip-addresses).
