---
title: "নিজের নম্বর ব্যবহার করুন (VoIP, API)"
description: "Twilio বা Telnyx — অথবা যেকোনো SIP ট্রাঙ্ক — সংযুক্ত করুন, আপনার ইতিমধ্যে থাকা ফোন নম্বরগুলো ইমপোর্ট করুন, এবং ThunderPhone এজেন্টদের সেগুলোতে কলের উত্তর দিতে ও কল করতে দিন।"
---

ThunderPhone নম্বর ইনবাউন্ড কল সমর্থন করে, কিন্তু আউটবাউন্ড কল এবং
ক্যাম্পেইনের জন্য আপনার নিজস্ব VoIP প্রোভাইডারের মাধ্যমে মালিকানাধীন নম্বর প্রয়োজন। এই গাইডে
তিন ধাপের প্রক্রিয়াটি দেখানো হয়েছে: **ক্রেডেনশিয়াল পরীক্ষা → সংযোগ তৈরি
→ নম্বর ইমপোর্ট → যাচাই**।

<Note>
  ড্যাশবোর্ডে এই সম্পূর্ণ প্রক্রিয়ার একটি নির্দেশিত সংস্করণ রয়েছে
  **সংযোগসমূহ → VoIP** (`/dashboard/voip-connections`) এর অধীনে: অ্যাকাউন্ট তৈরি ও API
  কী নিয়ে ধাপে ধাপে নির্দেশনা দেওয়া Telnyx নির্দেশিত সেটআপ, বিদ্যমান অ্যাকাউন্ট
  সংযুক্ত করার পথ, এবং AI সেটআপ-গাইড জেনারেটরসহ একটি ম্যানুয়াল SIP ফর্ম।
</Note>

## সমর্থিত প্রোভাইডার

| প্রোভাইডার | `provider` আইডি | নোট |
|----------|---------------|-------|
| Twilio | `twilio` | অ্যাকাউন্ট SID + Auth Token; প্রতি 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..."
  }'
```

প্রতিক্রিয়াটি `status="connected"`-এ থাকা একটি [VoipConnection অবজেক্ট](/api-reference/voip-connections#connection-object)।
ক্রেডেনশিয়াল সার্ভার-সাইডে সংরক্ষিত হয় এবং পরবর্তী 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 org-এ নেই এমন
নম্বরগুলো পরিদর্শন করুন:

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

প্রতিটি ইমপোর্ট আপনার org-এ `source="voip"` এবং `status="provisioning"`-সহ একটি [ফোন নম্বর রিসোর্স](/api-reference/phone-numbers)-এ পরিণত হয়।

## 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 নম্বরের মতোই ইনবাউন্ড / আউটবাউন্ড
এজেন্ট অ্যাসাইন করতে পারেন। দেখুন
[ইনবাউন্ড কল পরিচালনা করুন](/bn/guides/handle-inbound-calls) এবং
[আউটবাউন্ড কল করুন](/bn/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="/bn/guides/place-outbound-calls">
    এখন যেহেতু নম্বরটি আপনার, আউটবাউন্ড কল করা শুরু করুন।
  </Card>
</CardGroup>
