---
title: "Tangani panggilan masuk (API)"
description: "Menyeluruh: konfigurasikan agen, tetapkan ke nomor telepon, terima panggilan, dan periksa transkrip."
---

<Note>
  Membuat agen pertama Anda secara manual? Dasbor memandu alur yang sama persis
  — buat agen, tambahkan nomor, simulasi, tinjau — dengan
  wizard terpandu. Mulai dari
  [panduan cepat dasbor](/id/quickstart-dashboard).
</Note>

Alur kanonis untuk "menjawab telepon dengan AI", dari terminal Anda.
Anda akan:

1. Membuat agen dengan Prompt dan suara.
2. Menyediakan (atau membawa) nomor telepon dan menetapkan agen sebagai
   penangan panggilan masuknya.
3. Menelepon nomor tersebut. Amati log panggilan, transkrip, dan rekaman.

Total panggilan API: empat. Total waktu: kurang dari lima menit.

## 1. Buat agen

Sebuah agen menggabungkan prompt, suara, dan tingkatan produk yang akan menangani
panggilan. Anda juga dapat menetapkan batas panggilan seperti `max_call_duration_seconds`
dan `ring_duration_seconds` pada agen. Agen juga mendukung `intro_clip`
dan `intro_ring_count` untuk memutar intro yang direkam sebelumnya dan hingga dua dering sebelum
agen berbicara. Agen baru juga memerlukan zona waktu. Jika agen Anda
multibahasa, Anda dapat menetapkan `language_switching` untuk mengontrol apakah agen bertanya
sebelum berganti bahasa atau mengikuti bahasa penelepon.
Lihat [Agen](/api-reference/agents) untuk setiap kolom konfigurasi; konfigurasi
minimumnya adalah:

```bash
curl -X POST https://api.thunderphone.com/v1/agents \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name":    "Acme Support",
    "prompt":  "You are a friendly support agent for Acme. Help callers with orders and returns. Keep answers short.",
    "voice":   "john",
    "product": "spark"
  }'
```

Simpan `id` yang dikembalikan — Anda akan memerlukannya pada langkah 2.

<Tip>
  Pilih `spark` untuk tanya jawab sederhana dengan biaya terendah, `bolt` saat kecepatan
  paling penting. Tingkatkan ke `storm-base-with-ack` saat Prompt Anda
  memerlukan penalaran yang lebih mendalam dan dapat menoleransi pengisi jeda setengah detik saat
  model berpikir. Lihat
  [tingkat produk](/api-reference/agents#product-tiers-at-a-glance).
</Tip>

## 2. Dapatkan nomor telepon

Jika Anda hanya memerlukan sesuatu untuk dihubungi, dapatkan nomor ThunderPhone
dari kumpulan nomor ThunderPhone:

```bash
curl -X POST https://api.thunderphone.com/v1/phone-numbers \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"area_code": "415"}'
```

Respons mencakup `id` dan `number` dalam format E.164. Nomor ThunderPhone
dimulai dengan `status="provisioning"` dan menjadi `active` dalam beberapa
detik — lakukan polling
[`GET /v1/phone-numbers/{id}`](/api-reference/phone-numbers#retrieve-a-phone-number)
untuk memantau transisinya jika diperlukan.

<Note>
  Nomor ThunderPhone awalnya hanya untuk panggilan masuk. Admin organisasi dapat meminta
  panggilan keluar dari halaman Nomor Telepon. ThunderPhone meninjau setiap
  permintaan secara manual; setelah disetujui, nomor dapat melakukan panggilan dan menjalankan
  kampanye. Nomor VoIP pelanggan tidak berubah.
</Note>

## 3. Tetapkan agen

Hubungkan agen dari langkah 1 dengan arah panggilan masuk nomor tersebut:

```bash
curl -X PATCH https://api.thunderphone.com/v1/phone-numbers/{phone_id} \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"inbound_agent_id": 12}'
```

Selesai — nomor tersebut aktif. Setelah panggilan keluar disetujui untuk organisasi Anda,
Anda juga dapat menetapkan `outbound_agent_id` dalam PATCH yang sama. Hingga
saat itu, API menolak penetapan tersebut dengan `400`.

Jika Anda merutekan panggilan masuk melalui webhook konfigurasi alih-alih `inbound_agent_id` tetap, webhook tersebut kini dapat mengembalikan `timezone` per panggilan bersama dengan `agent_id` dan `variables`.

## 4. Terima panggilan

Hubungi nomor tersebut dari ponsel Anda. Agen menjawab, memperkenalkan diri
sesuai Prompt Anda, lalu percakapan dimulai.

Saat panggilan berlangsung, panggilan tersebut muncul di
[`GET /v1/calls`](/api-reference/calls#list-calls) dengan
`status="in_progress"`. Saat berakhir, rekaman diperbarui dengan
`end_reason`, `duration_seconds`, `billable_minutes`, dan (pada akhirnya)
URL rekaman serta penilaian AI.

Panggilan masuk diperhitungkan dalam
[batas panggilan bersamaan](/api-reference/introduction#call-limits) organisasi Anda (secara default 20
panggilan sedang berlangsung, dibagikan dengan panggilan keluar, web, dan pengujian). Panggilan yang tiba saat batas telah tercapai akan ditolak sebelum agen
menjawab dan diputus, tidak ditagihkan, serta dicatat sebagai panggilan gagal
dengan alasan akhir `concurrent_call_limit_reached`. Kirim email ke support@thunderphone.com jika Anda
memerlukan batas yang lebih tinggi.

## 5. Periksa hasilnya

Ambil daftar panggilan terbaru:

```bash
curl 'https://api.thunderphone.com/v1/calls?limit=5' \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

Ambil transkripnya:

```bash
curl https://api.thunderphone.com/v1/calls/{call_id}/transcript \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

Dan URL rekamannya (berlaku singkat, ditandatangani):

```bash
curl https://api.thunderphone.com/v1/calls/{call_id}/audio \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

Jika Anda berlangganan ke
[webhook `telephony.complete`](/id/webhooks/events),
Anda akan menerima data yang sama sebagai POST ke server Anda — lihat
[call.complete](/id/webhooks/call-complete).

Jika agen Anda memiliki kolom ekstraksi yang dikonfigurasi, payload panggilan
yang selesai juga dapat menyertakan data hasil ekstraksi terstruktur.

---

## Langkah berikutnya

<CardGroup cols={2}>
  <Card title="Konfigurasi dinamis per panggilan" icon="bolt" href="/id/guides/dynamic-call-config">
    Pilih agen yang berbeda untuk setiap penelepon berdasarkan nomor telepon atau
    logika kustom dalam webhook.
  </Card>
  <Card title="Tambahkan integrasi alat" icon="screwdriver-wrench" href="/id/guides/build-tool-integration">
    Izinkan agen memanggil API Anda di tengah percakapan.
  </Card>
  <Card title="Transfer panggilan" icon="phone-arrow-right" href="/id/guides/call-transfers">
    Arahkan penelepon secara langsung atau saring tujuan sebelum menghubungkannya.
  </Card>
  <Card title="Terima webhook call.complete" icon="bolt" href="/id/webhooks/call-complete">
    Alirkan setiap panggilan yang selesai ke pipeline CRM / analitik Anda.
  </Card>
  <Card title="Penilaian AI dan laporan masalah" icon="chart-line" href="/api-reference/calls#ai-call-grading">
    Nilai setiap panggilan secara otomatis dan arahkan panggilan yang ditandai untuk ditinjau.
  </Card>
</CardGroup>
