---
title: "Користите сопствене бројеве (VoIP, API)"
description: "Повежите Twilio или Telnyx — или било који SIP транк — увезите бројеве телефона које већ поседујете и омогућите ThunderPhone агентима да одговарају на позиве и упућују их преко њих."
---

ThunderPhone бројеви покривају долазне позиве, али за одлазне позиве и
кампање потребни су Вам бројеви које поседујете преко сопственог VoIP провајдера. Овај водич Вас води
кроз ток у четири корака: **тестирајте акредитиве → креирајте
везу → увезите бројеве → потврдите**.

<Note>
  Контролна табла има вођену верзију целог овог поступка у оквиру
  **Везе → VoIP** (`/dashboard/voip-connections`): вођено подешавање за Telnyx
  које Вас води кроз креирање налога и API кључеве, путању за
  повезивање постојећег налога и ручни SIP образац са AI
  генератором водича за подешавање.
</Note>

## Подржани провајдери

| Провајдер | `provider` идентификатор | Напомене |
|----------|---------------|-------|
| Twilio | `twilio` | SID налога + токен за аутентификацију; једна веза по Twilio налогу или подналогу (погледајте [Twilio подналоге](#twilio-subaccounts)) |
| Telnyx | `telnyx` | API кључ; доступно је вођено увођење (`setup_method: guided_telnyx`) |
| SignalWire | `signalwire` | **Ускоро** — повежите се данас преко ручног SIP-а |
| Vonage | `vonage` | **Ускоро** — повежите се данас преко ручног SIP-а |
| Ручни SIP | `manual` | Било који SIP транк — користите сопствену конфигурацију |

## 1. Тестирајте акредитиве

Пре него што креирате трајну VoIP везу, проверите акредитиве
провајдера да бисте потврдили да раде. Ово враћа
`verification_evidence_id` који прослеђујете кораку креирања како се
акредитиви не би двоструко наплатили за тестирање.

```bash
curl -X POST https://api.thunderphone.com/v1/voip-connections/test \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider":    "telnyx",
    "credentials": { "apiKey": "KEY...", "connectionId": "123456" },
    "sip_config":  { "domain": "acme.sip.telnyx.com" }
  }'
```

```json Response
{
  "status": "pass",
  "verification_evidence_id": "b9a2...",
  "suggested_connection_name": "Telnyx: Acme Main (+15550001234)",
  "checks": {
    "credentials_valid": true,
    "inbound_reachable": true,
    "outbound_authorized": true
  }
}
```

Ако било која провера не успе, `status` одговора биће `fail`, а `checks` ће
приказати на ком је кораку дошло до грешке. Исправите конфигурацију на страни провајдера (доделу
транка, IP листу дозвољених адреса, ауторизацију за одлазне позиве) и покушајте поново.

## 2. Креирајте везу

Проследите `verification_evidence_id` који сте управо добили:

```bash
curl -X POST https://api.thunderphone.com/v1/voip-connections \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name":         "Acme Telnyx Main",
    "provider":     "telnyx",
    "setup_method": "api_key",
    "credentials":  { "apiKey": "KEY...", "connectionId": "123456" },
    "sip_config":   { "domain": "acme.sip.telnyx.com" },
    "verification_evidence_id": "b9a2..."
  }'
```

Одговор је објекат [VoipConnection](/api-reference/voip-connections#connection-object)
са `status="connected"`. Акредитиви се чувају на серверској страни и никада се
не враћају у обичном тексту при наредним GET захтевима — да бисте их ротирали, покрените нови
`test` и пошаљите PATCH са новим доказом.

### Twilio подналози

Twilio веза је повезана са једним Twilio налогом чије
Account SID и Auth Token садржи. Twilio чува телефонске бројеве и SIP
транкове унутар сваког подналога, тако да веза направљена помоћу матичног
налога види само бројеве самог матичног налога, а постојећа
веза се касније не може пребацити на други подналог (ажурирање се
одбија јер SIP транк везе припада оригиналном налогу).

Да бисте приступили бројевима на подналозима, направите по једну везу за сваки
подналог. Контролна табла то ради уместо Вас: када повежете матични
налог који има активне подналоге, дијалог за подешавање их приказује, означите
оне које желите, а ThunderPhone креира везу (и
SIP транк) у сваком од њих. Исти ток је доступан преко API-ја:

```bash
# Discover active subaccounts visible to the parent credentials
curl -X POST https://api.thunderphone.com/v1/voip-connections/twilio/subaccounts \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"credentials": {"accountSid": "ACparent...", "authToken": "..."}}'
```

```json Response
{
  "discovery_id": "7c1e...",
  "parent": { "sid": "ACparent...", "friendly_name": "Acme" },
  "subaccounts": [
    { "sid": "ACsupport...", "friendly_name": "Acme Support", "already_connected": false, "connection_id": null },
    { "sid": "ACsales...",   "friendly_name": "Acme Sales",   "already_connected": true,  "connection_id": 5 }
  ]
}
```

```bash
# Create a connection for each selected subaccount
curl -X POST https://api.thunderphone.com/v1/voip-connections/twilio/subaccounts/connect \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"discovery_id": "7c1e...", "subaccount_sids": ["ACsupport..."]}'
```

Одговор садржи по један ред за сваки подналог са `status` вредношћу
`created`, `skipped` (већ повезан) или `failed`, као и `error`
на основу које можете предузети радњу. Редови су независни, тако да неуспех на једном подналогу
никада не блокира остале, а `discovery_id` остаје важећи 30
минута, па се неуспешан ред може једноставно поново покушати. Токени подналога се
читају из Twilio-а у тренутку откривања и чувају на новој вези;
API их никада не враћа. Свака нова веза затим увози
и верификује бројеве потпуно исто као веза коју сте ручно креирали.

## 3. Прикажите и увезите бројеве

Проверите бројеве видљиве Вашим акредитивима који још нису
у ThunderPhone организацији:

```bash
curl https://api.thunderphone.com/v1/voip-connections/5/available-numbers \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

Затим увезите оне које желите:

```bash
curl -X POST https://api.thunderphone.com/v1/voip-connections/5/import-numbers \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+15550001234", "+15550009999"]}'
```

Сваки увоз постаје [ресурс телефонског броја](/api-reference/phone-numbers)
у Вашој организацији са `source="voip"` и `status="provisioning"`.

## 4. Верификујте сваки увезени број

Увоз региструје број као *доступан*; за стварно усмеравање позива
преко њега потребна је верификација. За везе са провајдерима (Twilio,
Telnyx), тиме се поново проверавају акредитиви провајдера и SIP доступност.
За **ручну SIP** везу, систем упућује кратак пробни позив (неколико
секунди, аутоматски прекинут) *са* броја, *преко* Вашег SIP
трунка, *на* ThunderPhone број — тако се заиста потврђују корисничко име,
лозинка, транспорт и излазно усмеравање трунка. Ваш оператер тај позив
наплаћује као и сваки други.

```bash
curl -X POST https://api.thunderphone.com/v1/phone-numbers/{id}/verify-voip \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

По успеху, `voip_verification_status` се мења у `verified`, а број
добија `status="active"`. У случају неуспеха, одговор наводи шта није успело —
за ручни трунак то је SIP одговор оператера, на пример *"одбијени су
акредитиви за ThunderPhone (SIP 401)"* или *"није могуће усмерити позив (SIP 404)"* —
исправите проблем (акредитиве, дозвољене изворне IP адресе, недостајућу
доделу трунка на контролној табли провајдера) и позовите поново.

## 5. Доделите агенте и обавите позив

Када је број верификован, долазне / одлазне агенте додељујете на исти
начин као за ThunderPhone број. Погледајте
[Обрада долазних позива](/sr/guides/handle-inbound-calls) и
[Упућивање одлазних позива](/sr/guides/place-outbound-calls).

## Ротирање акредитива

Када се кључ провајдера ротира, поново покрените ток тестирања, па ажурирања:

```bash
# 1. Test the new credentials
curl -X POST https://api.thunderphone.com/v1/voip-connections/test ...

# 2. PATCH the connection with the new evidence
curl -X PATCH https://api.thunderphone.com/v1/voip-connections/{id} \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "credentials": { "apiKey": "NEW_KEY..." },
    "verification_evidence_id": "fresh-evidence-id"
  }'
```

Веза остаје на месту — нема потребе за поновним увозом бројева.

---

## Следећи кораци

<CardGroup cols={2}>
  <Card title="Референца за VoIP везе" icon="phone-volume" href="/api-reference/voip-connections">
    Свако поље у одговорима за везу, доказ и увоз.
  </Card>
  <Card title="Референца за телефонске бројеве" icon="phone" href="/api-reference/phone-numbers">
    Доделите агенте, преносите између организација, ослободите бројеве.
  </Card>
  <Card title="Упућивање одлазних позива" icon="arrow-up-right" href="/sr/guides/place-outbound-calls">
    Сада када поседујете број, почните да упућујете одлазне позиве.
  </Card>
</CardGroup>
