ThunderPhone 2.0 এখন লাইভ।নিজেই ব্যবহার শুরু করুন, 2¢/মিনিট থেকে।ঘোষণাটি পড়ুন

Developer cookbook

SIP-এর মাধ্যমে সংযোগ করুন (কোনো ফোন নম্বর নেই)

প্রতি কলে একবারের জন্য SIP URI বা একটি স্থায়ী SIP ঠিকানা ব্যবহার করে আপনার PBX, ক্যারিয়ার বা SIP অ্যাপ্লিকেশন থেকে সরাসরি একটি ThunderPhone এজেন্টে কল পাঠান।

আপনার নিজস্ব সিস্টেমে যদি ফোন নম্বর আগে থেকেই পরিচালিত হয় (যেমন একটি PBX, কনট্যাক্ট-সেন্টার প্ল্যাটফর্ম, বা এমন একটি ক্যারিয়ার অ্যাকাউন্ট যেখানে আপনি নম্বর পরিবর্তন করেন), তাহলে আপনি সাধারণ SIP-এর মাধ্যমে একটি ThunderPhone এজেন্টে কল পাঠাতে পারেন। আপনাকে ThunderPhone-এ কোনো নম্বর ইমপোর্ট বা কিনতে হবে না। আপনার সিস্টেম একটি SIP ঠিকানায় ডায়াল করে এবং এজেন্ট উত্তর দেয়।

দুই ধরনের SIP ঠিকানা রয়েছে:

প্রতি-কল SIP URISIP এন্ডপয়েন্ট
দেখতে এমনsip:c-<token>@sip.thunderphone.comsip:agent-<id>-<letters>@sip.thunderphone.com
তৈরি করা হয়POST /v1/calls/register-sip, প্রতি কলে একবারPOST /v1/sip-endpoints, একবার
প্রমাণীকরণঠিকানার একবারের টোকেনSIP digest ব্যবহারকারীর নাম + পাসওয়ার্ড (এবং ঐচ্ছিকভাবে একটি source-IP allowlist)
উপযোগীযে অ্যাপগুলো কল ট্রান্সফার করার আগে ইতিমধ্যেই একটি API কল করে; প্রতি-কল ভেরিয়েবলPBX এবং ক্যারিয়ার যেগুলো শুধু ThunderPhone-এ একটি ট্রাঙ্ক নির্দেশ করবে
বৈধ থাকে5 মিনিট, একটি কলআপনি মুছে ফেলা পর্যন্ত

উভয় ধরনই আপনার প্রতিষ্ঠানের একটি এজেন্টে রুট হয় এবং উভয়ই অন্য যেকোনো ইনবাউন্ড কলের মতো কল ইতিহাসে দেখা যায়।

প্রতি-কল SIP URI

1. কল নিবন্ধন করুন

curl -X POST https://api.thunderphone.com/v1/calls/register-sip \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": 12,
    "to_number": "+14155550142",
    "variables": {"customer_name": "Ada"}
  }'
{
  "call_id": 862197007562,
  "sip_uri": "sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com",
  "expires_at": "2026-09-25T21:49:52Z",
  "agent_id": 12,
  "to_number": "+14155550142"
}
  • to_number (ঐচ্ছিক) হলো আপনার দিক থেকে কলার যে নম্বরে ডায়াল করেছেন। এটি কল ইতিহাসে কলের গন্তব্য হিসেবে সংরক্ষিত হয় এবং এজেন্ট এটি নিজের নম্বর হিসেবে দেখে।
  • variables (ঐচ্ছিক) এজেন্টের prompt-এ {{placeholders}} পূরণ করে, ঠিক যেমন আউটবাউন্ড কল-এর ক্ষেত্রে হয়।
  • call_id হলো সংযোগ স্থাপনের পর কল ইতিহাসে কলটির আইডি (GET /v1/calls/{call_id})।

2. URI-তে ডায়াল করুন

5 মিনিটের মধ্যে sip_uri-তে কল পাঠান। URIটি শুধুমাত্র একটি কলের জন্য কাজ করে: একবার কোনো কল এটি ব্যবহার করলে, সেটি আর ব্যবহার করা যাবে না, এমনকি কলটি দ্রুত শেষ হলেও।

উদাহরণস্বরূপ, Twilio-এর ক্ষেত্রে আপনি যে কলটি হস্তান্তর করতে চান তার জন্য এই TwiML ফেরত দিন:

<Response>
  <Dial>
    <Sip>sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com;transport=tcp</Sip>
  </Dial>
</Response>

একটি PBX থেকে URI-টিকে SIP গন্তব্য হিসেবে ডায়াল করুন। কোনো ব্যবহারকারীর নাম বা পাসওয়ার্ডের প্রয়োজন নেই; টোকেনটিই পরিচয়পত্র, তাই URI ব্যবহার না হওয়া পর্যন্ত এটিকে পাসওয়ার্ডের মতো বিবেচনা করুন।

SIP এন্ডপয়েন্ট (স্থায়ী ঠিকানা)

1. এন্ডপয়েন্ট তৈরি করুন

curl -X POST https://api.thunderphone.com/v1/sip-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"agent_id": 12, "name": "Main PBX"}'
{
  "id": 7,
  "name": "Main PBX",
  "agent_id": 12,
  "sip_uri": "sip:agent-12-jhxmginwjx@sip.thunderphone.com",
  "username": "tp409667538f83",
  "password": "8mJ0…",
  "allowed_source_cidrs": [],
  "status": "active",
  "created_at": "2026-09-25T21:46:18Z"
}

2. আপনার সিস্টেমকে এটির দিকে নির্দেশ করুন

নিচের সেটিংস দিয়ে একটি SIP ট্রাঙ্ক বা গন্তব্য কনফিগার করুন:

সেটিংমান
SIP URIএন্ডপয়েন্টের sip_uri
ব্যবহারকারীর নাম / পাসওয়ার্ডusername / password (ডাইজেস্ট প্রমাণীকরণ; ThunderPhone প্রতিটি কলে চ্যালেঞ্জ করে)
ট্রান্সপোর্টপোর্ট 5060-এ TCP অথবা পোর্ট 5061-এ TLS (প্রস্তাবিত), অথবা পোর্ট 5060-এ UDP
কোডেকG.711 (PCMU/PCMA) অথবা G.722

এই ট্রান্সপোর্ট এবং কোডেক সেটিংস প্রতি-কল URI-এর ক্ষেত্রেও প্রযোজ্য। উভয় ধরনের ঠিকানার জন্য দুটি নেটওয়ার্ক বিবরণ গুরুত্বপূর্ণ:

  • Record-Route অনুসরণ করুন। প্রথম INVITE-এর পরে, কলের বাকি সিগন্যালিং (ACK, কল শেষ করা, ট্রান্সফার) নির্দিষ্ট ThunderPhone সার্ভারে যায় যেটি উত্তর দিয়েছিল, যার নাম Record-Route হেডারে থাকে (sip-1.thunderphone.com অথবা sip-2.thunderphone.com, অথবা এর IP ঠিকানা)। আপনি যদি আউটবাউন্ড SIP সীমাবদ্ধ করেন, তাহলে sip.thunderphone.com-এর পাশাপাশি এই হোস্টগুলোও অনুমোদন করুন: 172.170.39.202 (sip), 13.86.104.121 (sip-1) এবং 20.80.98.90 (sip-2)।
  • অডিও অন্যত্র যায়। sip.thunderphone.com শুধুমাত্র সিগন্যালিং বহন করে। SDP উত্তরে থাকা ঠিকানা এবং পোর্টগুলোর জন্য মিডিয়া (RTP) অনুমোদন করুন।

আপনার দিক থেকে কলার যে নম্বরেই ডায়াল করুক না কেন, এই ঠিকানায় আসা প্রতিটি কল এন্ডপয়েন্টের এজেন্টের কাছে পৌঁছায়। আপনাকে কখনও নম্বর ইমপোর্ট করতে হয় না, তাই আপনার দিকে নম্বর রোটেট করতে ThunderPhone-এ কোনো পরিবর্তন দরকার হয় না।

ডায়াল করা নম্বর পাঠান (ঐচ্ছিক)

কলার আপনার কোন নম্বরে ডায়াল করেছে তা রেকর্ড করতে, INVITE-এ একটি X-Original-To হেডারে (উদাহরণস্বরূপ X-Original-To: +14155550142) অথবা একটি স্ট্যান্ডার্ড Diversion হেডারে সেটি পাঠান। ThunderPhone এটিকে কলের গন্তব্য হিসেবে সংরক্ষণ করে।

গন্তব্য এই ক্রমে বেছে নেওয়া হয়: প্রতি-কল URI নিবন্ধনের সময় দেওয়া to_number, তারপর X-Original-To-তে থাকা নম্বর, তারপর Diversion-এ থাকা নম্বর। এগুলোর কোনোটিতে নম্বর না থাকলে, এন্ডপয়েন্টের জন্য এটি sip:agent-12-jhxmginwjx (এন্ডপয়েন্টের ঠিকানা) হিসেবে, অথবা প্রতি-কল URI-এর জন্য sip:call হিসেবে দেখানো হয়।

Twilio-এর মাধ্যমে আপনি SIP URI-তে হেডারটি যোগ করতে পারেন: sip:agent-12-jhxmginwjx@sip.thunderphone.com;transport=tcp?X-Original-To=%2B14155550142।

উৎস IP সীমাবদ্ধ করুন (ঐচ্ছিক)

ব্যবহারকারীর নাম এবং পাসওয়ার্ডের পাশাপাশি, শুধুমাত্র আপনার নিজস্ব সিগন্যালিং ঠিকানা থেকে কল গ্রহণ করতে allowed_source_cidrs সেট করুন:

curl -X PATCH https://api.thunderphone.com/v1/sip-endpoints/7 \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"allowed_source_cidrs": ["203.0.113.0/28"]}'

অন্য যেকোনো ঠিকানা থেকে আসা কল এজেন্টের কাছে পৌঁছানোর আগেই প্রত্যাখ্যান করা হয়। আপনার সিস্টেম যেসব ঠিকানা থেকে SIP সিগন্যালিং পাঠায় সেগুলো ব্যবহার করুন (Twilio-এর মতো ক্যারিয়ারের ক্ষেত্রে, তাদের প্রকাশিত সিগন্যালিং IP রেঞ্জ), আপনার মিডিয়া ঠিকানা নয়।

কলার এবং আপনার সিস্টেম যা দেখে

  • কলার ID: From হেডারের ইউজার অংশটি কলার হিসেবে সংরক্ষণ করা হয়। একটি ফোন নম্বর (অঙ্ক, ঐচ্ছিকভাবে +, স্পেস, ড্যাশ, ডট বা বন্ধনীসহ) E.164-এ স্বাভাবিকীকরণ করা হয়; SIP ইউজারনেমের মতো অন্য যেকোনো কিছু পাঠানো অবস্থাতেই রাখা হয়। সর্বোচ্চ 32টি অক্ষর রাখা হয়, এবং কলার অনুপস্থিত থাকলে তা anonymous হিসেবে সংরক্ষণ করা হয়।
  • প্রত্যাখ্যাত কল: অজানা বা মেয়াদোত্তীর্ণ প্রতি-কল URI-এ SIP 404 Not Found পাওয়া যায়। ইতিমধ্যে ব্যবহৃত প্রতি-কল URI, নিষ্ক্রিয় এন্ডপয়েন্ট, বা অনুমোদিত তালিকার বাইরের কোনো উৎস (অনুমোদিত তালিকাসহ এন্ডপয়েন্টে যেকোনো UDP কলসহ) এজেন্ট শুরু হওয়ার আগেই সংযোগ বিচ্ছিন্ন করে দেওয়া হয়: আপনার সিস্টেমে কলটি ব্যর্থ হতে দেখা যেতে পারে, অথবা সংযুক্ত হয়ে সঙ্গে সঙ্গেই শেষ হতে পারে। এই প্রত্যাখ্যানগুলো কলের ইতিহাসে কোনো এন্ট্রি তৈরি করে না। আপনার প্রতিষ্ঠানের ক্রেডিট শেষ হয়ে গেলে বা ব্যয়ের সীমায় পৌঁছে গেলে, কলটি প্রত্যাখ্যাত হয় এবং কলের ইতিহাসে কোনো চার্জ ছাড়াই ব্যর্থ কল হিসেবে দেখা যায়। প্রতি-কল প্রচেষ্টা পুনরায় করতে, একটি নতুন URI নিবন্ধন করুন।
  • ট্রান্সফার: এজেন্টের কোল্ড ট্রান্সফার কাজ করে (ThunderPhone একটি SIP REFER পাঠায়, যা আপনার সিস্টেমকে গ্রহণ করতে হবে)। SIP-ঠিকানার কলে ওয়ার্ম ট্রান্সফার উপলভ্য নয়, কারণ দ্বিতীয় লেগের কলার ID হিসেবে দেখানোর জন্য কোনো ThunderPhone নম্বর নেই। Twilio-এর ক্ষেত্রে, উপরের TwiML এজেন্টকে সংযুক্ত করে কিন্তু ট্রান্সফার পরিচালনা করে না: <Dial>-এ referUrl="https://YOUR_SERVER/sip-transfer" যোগ করুন, এবং সেই webhook-কে ReferTransferTarget পড়ে ট্রান্সফার গন্তব্যে ডায়াল করা TwiML ফেরত দিতে বলুন (Twilio-এর SIP REFER নির্দেশিকা দেখুন)।
  • টেক্সট মেসেজ: SIP ঠিকানা এবং ডায়াল করা নম্বর টেক্সট পাঠাতে পারে না। এজেন্ট একটি SIP-ঠিকানার কলের সময় টেক্সট পাঠাতে পারে শুধুমাত্র যদি টেক্সট পাঠানোর জন্য আলাদাভাবে SMS-সক্ষম নম্বর সেট আপ করা থাকে; অন্যথায় এর SMS টুল অনুপলভ্য থাকে।
  • নিবন্ধন: ThunderPhone SIP REGISTER গ্রহণ করে না। ঠিকানায় কল পাঠান; সেখানে নিবন্ধন করবেন না।

মূল্য নির্ধারণ

SIP-ঠিকানার কল এজেন্টের স্বাভাবিক প্রতি-মিনিট হারে বিল করা হয়। কোনো ফোন-নম্বর চার্জ নেই, কারণ কোনো ThunderPhone নম্বর কলটি বহন করে না। আপনার নিজস্ব ক্যারিয়ার যথারীতি কলের নিজের অংশের বিল করে। মূল্য নির্ধারণ দেখুন।

এটি পরীক্ষা করুন

  1. উপরের মতো একটি প্রতি-কল URI বা এন্ডপয়েন্ট তৈরি করুন।
  2. আপনার সিস্টেম থেকে, অথবা যেকোনো SIP সফটফোন থেকে এটি ডায়াল করুন (এন্ডপয়েন্টের জন্য, ইউজারনেম এবং পাসওয়ার্ড লিখুন)।
  3. কল শেষ করার পর, ড্যাশবোর্ডে কল-এ কলটি খুলুন, অথবা GET /v1/calls/{call_id} দিয়ে আনুন। এতে কলার, গন্তব্য ("ডায়াল করা নম্বর পাঠান"-এর অধীনের ক্রম দেখুন) এবং ট্রান্সক্রিপ্ট দেখা যায়।

API বিবরণ: SIP ঠিকানা API রেফারেন্স।