---
title: "আউটবাউন্ড কল করুন (API)"
description: "আপনার নিজস্ব কোড থেকে AI-চালিত আউটবাউন্ড কল ট্রিগার করুন — জরিপ, ফলো-আপ বা নিশ্চিতকরণ ফ্লোর জন্য।"
---

বহির্গামী কলিং আপনাকে ThunderPhone-কে একটি গন্তব্য নম্বর ও একটি এজেন্ট
কনফিগারেশন দিতে দেয়, যাতে AI আপনার পক্ষ থেকে কল করতে পারে। সাধারণ ব্যবহার:

- অ্যাপয়েন্টমেন্ট নিশ্চিতকরণ
- সার্ভে কলব্যাক
- মিসড কলের পর "দ্বিতীয়-চেষ্টা" ফলো-আপ
- ডিসপ্যাচ-ধাঁচের বিজ্ঞপ্তি

<Note>
  পুরো তালিকায় কল করছেন? ড্যাশবোর্ডের
  [**ক্যাম্পেইন**](/bn/guides/outbound-campaigns) ফিচারটি
  (`/dashboard/campaigns`) কনট্যাক্টের একটি CSV নিয়ে আপনার জন্য
  সময় অঞ্চল-সচেতন কলিং উইন্ডো, সমকালীনতা এবং পুনঃচেষ্টার নীতি পরিচালনা
  করে। এই গাইডে একক প্রোগ্রাম্যাটিক কল নিয়ে আলোচনা করা হয়েছে।
</Note>

## পূর্বশর্ত

<Steps>
  <Step title="একটি VoIP নম্বর আনুন">
    বহির্গামী কলিংয়ের জন্য একটি
    [VoIP সংযোগ](/api-reference/voip-connections)-এর মাধ্যমে আপনার `from_number`
    মালিকানাধীন হতে হবে। ThunderPhone নম্বরগুলো কেবল ইনবাউন্ড কলের জন্য। দেখুন
    [নিজের নম্বর আনুন](/bn/guides/bring-your-own-numbers)।
  </Step>
  <Step title="একটি এজেন্ট তৈরি করুন">
    বহির্গামী-ধাঁচের একটি prompt সাধারণত এজেন্টের নিজের পরিচয় এবং উদ্দেশ্য দিয়ে
    শুরু হয় — "হ্যালো, আমি Acme থেকে বলছি, আগামীকাল বিকেল 3টায় আপনার অ্যাপয়েন্টমেন্ট নিশ্চিত করতে…"
    `outbound_speak_order`-কে `agent_first`-এ সেট করুন (এটি ডিফল্ট)।
  </Step>
  <Step title="ব্যালান্স ধনাত্মক রাখুন">
    ব্যালান্স ≤
    `$0.00` হলে বহির্গামী কল `402 Payment Required` ফেরত দেয়। ব্যালান্স টপ আপ করুন
    [`POST /v1/billing/top-up`](/api-reference/billing#top-up-balance)-এর মাধ্যমে
    অথবা [স্বয়ংক্রিয় রিলোড](/api-reference/billing#update-auto-reload) সক্রিয় করুন।
  </Step>
</Steps>

## সংরক্ষিত এজেন্ট দিয়ে কল করুন

সবচেয়ে সহজ উপায় — আইডি দিয়ে একটি এজেন্ট উল্লেখ করুন:

```bash
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
  }'
```

রেসপন্স:

```json
{ "call_id": 987654321, "status": "initiated" }
```

<Warning>
  `status: "initiated"` কেবল বোঝায় যে অনুরোধটি গ্রহণ করা হয়েছে — কলটি
  **এখনও সংযুক্ত হয়নি**। লাইভ স্ট্যাটাসের জন্য
  [`GET /v1/calls/{call_id}`](/api-reference/calls#retrieve-a-call)
  পোল করুন (`in_progress` → `completed` / `failed`)।
</Warning>

## ইনলাইন কনফিগ দিয়ে কল করুন

আপনি যদি এমন একটি এককালীন prompt চান যা এজেন্ট হিসেবে সংরক্ষণ করার মতো নয়,
তাহলে পরিবর্তে `config` পাঠান। এর কাঠামো
[`call.incoming` webhook](/bn/webhooks/call-incoming)-এর
রেসপন্স স্কিমার সঙ্গে মেলে:

```bash
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"
    }
  }'
```

## কলটি অনুসরণ করুন

সমান্তরালে
[`telephony.complete` webhook](/bn/webhooks/events)-এ সাবস্ক্রাইব করুন —
কল শেষ হয়েছে জানার এটি সবচেয়ে দ্রুত উপায়। আপনি যদি ইনবাউন্ড
ওয়েবহুক গ্রহণ করতে না পারেন, প্রতি কয়েক সেকেন্ডে `GET /v1/calls/{call_id}`
পোল করুন; কল শেষ হলে রেকর্ডে `end_reason`, `duration_seconds` এবং রেকর্ডিং
URL অন্তর্ভুক্ত থাকে।

## যে ব্যর্থতার ধরনগুলো সামলানো উচিত

| ত্রুটি | সমাধান |
|-------|-----|
| `402 Payment Required` | ব্যালান্স টপ আপ করুন অথবা স্বয়ংক্রিয় রিলোড সক্রিয় করুন |
| `403` বহির্গামী কল ব্লক করা হয়েছে (ThunderPhone নম্বর) | পরিবর্তে একটি VoIP নম্বর আনুন |
| `403` বহির্গামী কল ব্লক করা হয়েছে (যাচাই না করা VoIP) | [`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` | নিশ্চিত করুন `from_number` আপনার মালিকানাধীন একটি ফোন নম্বরের সঙ্গে মেলে |
| `502 Bad Gateway` | অস্থায়ী SIP / LiveKit ব্যর্থতা; পুনরায় চেষ্টা করা নিরাপদ |

## হোল্ড সময় নিয়ন্ত্রণ

যেসব আউটবাউন্ড কল দীর্ঘ হয় কারণ কলার সাড়া দিতে ধীর
(IVR ট্রি, কিউ), সেগুলো `max_hold_seconds` দিয়ে সীমাবদ্ধ করা যায়:

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

গত N সেকেন্ডে কোনো মানুষের অডিও না পেলে এজেন্ট কল কেটে দেয়। ডিফল্ট হলো 900 (15 মিনিট)।

---

## পরবর্তী ধাপ

<CardGroup cols={2}>
  <Card title="আউটবাউন্ড কল রেফারেন্স" icon="phone-arrow-up-right" href="/api-reference/outbound-calls">
    প্রতিটি রিকোয়েস্ট ফিল্ড এবং ত্রুটি কোড।
  </Card>
  <Card title="call.complete গ্রহণ করুন" icon="bolt" href="/bn/webhooks/call-complete">
    সম্পন্ন আউটবাউন্ড কল আপনার সিস্টেমে স্ট্রিম করুন।
  </Card>
  <Card title="বিলিং" icon="credit-card" href="/api-reference/billing">
    ব্যালেন্সের কারণে আউটবাউন্ড ব্যর্থ হওয়া এড়াতে অটো-রিলোড।
  </Card>
  <Card title="আউটবাউন্ড এজেন্ট পরীক্ষা করুন" icon="flask" href="/bn/guides/test-agents">
    প্রোডাকশনের আগে আপনার আউটবাউন্ড এজেন্ট ড্রাই-রান করুন।
  </Card>
</CardGroup>
