> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thunderphone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Veiciet izejošos zvanus (API)

> Aktivizējiet MI vadītu izejošo zvanu no sava koda — aptauju, turpmāko darbību vai apstiprināšanas plūsmām.

Izejošie zvani ļauj nodot ThunderPhone mērķa numuru un balss aģenta
konfigurāciju, lai MI veiktu zvanu jūsu vārdā. Tipiski lietošanas gadījumi:

* Tikšanos apstiprināšana
* Aptauju atkārtotie zvani
* Otrreizēji atgādinājumi pēc neatbildēta zvana
* Dispečera tipa paziņojumi

<Note>
  Zvanāt visam sarakstam? Informācijas paneļa funkcija
  [**Kampaņas**](/lv/guides/outbound-campaigns)
  (`/dashboard/campaigns`) pieņem kontaktu CSV failu un jūsu vietā
  pārvalda zvanu logus, ņemot vērā laika joslas, paralēlismu un
  atkārtotu mēģinājumu politiku. Šajā ceļvedī aprakstīti atsevišķi
  programmatiskie zvani.
</Note>

## Priekšnosacījumi

<Steps>
  <Step title="Pievienojiet VoIP numuru">
    Lai veiktu izejošos zvanus, jums jābūt `from_number` īpašniekam,
    izmantojot [VoIP savienojumu](/api-reference/voip-connections). Demonstrācijas numuri
    ir paredzēti tikai ienākošajiem zvaniem. Skatiet
    [Pievienojiet savus numurus](/lv/guides/bring-your-own-numbers).
  </Step>

  <Step title="Izveidojiet balss aģentu">
    Izejošajiem zvaniem paredzēta uzvedne parasti sākas ar to, ka balss aģents
    iepazīstina ar sevi un savu mērķi — "Sveiki, zvana Acme, lai
    apstiprinātu jūsu rītdienas tikšanos plkst. 15.00…" Iestatiet
    `outbound_speak_order` uz `agent_first` (noklusējuma vērtība).
  </Step>

  <Step title="Uzturiet pozitīvu atlikumu">
    Izejošie zvani atgriež `402 Payment Required`, ja atlikums ir ≤
    `$0.00`. Papildiniet atlikumu, izmantojot
    [`POST /v1/billing/top-up`](/api-reference/billing#top-up-balance),
    vai iespējojiet [automātisko papildināšanu](/api-reference/billing#update-auto-reload).
  </Step>
</Steps>

## Veiciet zvanu ar saglabātu balss aģentu

Vienkāršākais veids — norādiet balss aģentu pēc ID:

```bash theme={null}
curl -X POST https://api.thunderphone.com/v1/call \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from_number": "+15551234567",
    "to_number":   "+14155550199",
    "agent_id":    12
  }'
```

Atbilde:

```json theme={null}
{ "call_id": 987654321, "status": "initiated" }
```

<Warning>
  `status: "initiated"` nozīmē tikai to, ka pieprasījums tika pieņemts — zvans
  **vēl nav savienots**. Aptaujājiet
  [`GET /v1/calls/{call_id}`](/api-reference/calls#retrieve-a-call),
  lai iegūtu aktuālo statusu (`in_progress` → `completed` / `failed`).
</Warning>

## Veiciet zvanu ar iegultu konfigurāciju

Ja vēlaties vienreizēju uzvedni, kuru nav vērts saglabāt kā balss aģentu,
tā vietā nododiet `config`. Tās struktūra atbilst
[`call.incoming` tīmekļa aizķeres](/lv/webhooks/call-incoming)
atbildes shēmai:

```bash theme={null}
curl -X POST https://api.thunderphone.com/v1/call \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from_number": "+15551234567",
    "to_number":   "+14155550199",
    "config": {
      "prompt":  "You are confirming Jane Doe appointment for 3pm tomorrow…",
      "voice":   "john",
      "product": "spark"
    }
  }'
```

## Sekojiet zvanam

Paralēli abonējiet
[`telephony.complete` tīmekļa aizķeri](/lv/webhooks/events) —
tas ir ātrākais veids, kā uzzināt, ka zvans ir beidzies. Ja nevarat pieņemt
ienākošās tīmekļa aizķeres, ik pēc dažām sekundēm aptaujājiet `GET /v1/calls/{call_id}`;
ierakstā pēc zvana beigām ir iekļauti `end_reason`, `duration_seconds` un
ieraksta URL.

## Kļūdu režīmi, kurus vērts apstrādāt

| Kļūda                                                    | Risinājums                                                                                                       |
| -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `402 Payment Required`                                   | Papildiniet atlikumu vai iespējojiet automātisko papildināšanu                                                   |
| `403` izejošie zvani bloķēti (demonstrācijas numurs)     | Tā vietā pievienojiet VoIP numuru                                                                                |
| `403` izejošie zvani bloķēti (neapstiprināts VoIP)       | Izpildiet [`POST /v1/phone-numbers/{id}/verify-voip`](/api-reference/phone-numbers#verify-a-voip-sourced-number) |
| `404 from_number is not registered to this organization` | Pārbaudiet, vai `from_number` atbilst jums piederošam tālruņa numuram                                            |
| `502 Bad Gateway`                                        | Pārejoša SIP / LiveKit kļūme; var droši mēģināt vēlreiz                                                          |

## Aiztures laika kontrole

Izejošajiem zvaniem, kas ieilgst, jo izsauktais abonents lēni atbild
(IVR izvēlnes, rindas), var iestatīt ierobežojumu ar `max_hold_seconds`:

```json theme={null}
{
  "from_number": "+15551234567",
  "to_number":   "+14155550199",
  "agent_id":    12,
  "max_hold_seconds": 120
}
```

Balss aģents pārtrauc zvanu, ja pēdējo N sekunžu laikā nav saņemts cilvēka audio. Noklusējuma vērtība ir 900 (15 minūtes).

***

## Nākamās darbības

<CardGroup cols={2}>
  <Card title="Izejošo zvanu atsauce" icon="phone-arrow-up-right" href="/api-reference/outbound-calls">
    Katrs pieprasījuma lauks un kļūdas kods.
  </Card>

  <Card title="Saņemt call.complete" icon="bolt" href="/lv/webhooks/call-complete">
    Straumējiet pabeigtos izejošos zvanus uz savu sistēmu.
  </Card>

  <Card title="Norēķini" icon="credit-card" href="/api-reference/billing">
    Automātiska papildināšana, lai izejošie zvani nekad neizdotos nepietiekama atlikuma dēļ.
  </Card>

  <Card title="Testēt izejošos balss aģentus" icon="flask" href="/lv/guides/test-agents">
    Izmēģiniet savu izejošo balss aģentu pirms izvietošanas produkcijā.
  </Card>
</CardGroup>
