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

Developer cookbook

আউটবাউন্ড কল করুন (API)

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

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

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

পূর্বশর্ত

  1. একটি VoIP নম্বর আনুন

    বহির্গামী কলিংয়ের জন্য একটি VoIP সংযোগ-এর মাধ্যমে আপনার from_number মালিকানাধীন হতে হবে। ThunderPhone নম্বরগুলো কেবল ইনবাউন্ড কলের জন্য। দেখুন নিজের নম্বর আনুন

  2. একটি এজেন্ট তৈরি করুন

    বহির্গামী-ধাঁচের একটি prompt সাধারণত এজেন্টের নিজের পরিচয় এবং উদ্দেশ্য দিয়ে শুরু হয় — "হ্যালো, আমি Acme থেকে বলছি, আগামীকাল বিকেল 3টায় আপনার অ্যাপয়েন্টমেন্ট নিশ্চিত করতে…" outbound_speak_order-কে agent_first-এ সেট করুন (এটি ডিফল্ট)।

  3. ব্যালান্স ধনাত্মক রাখুন

    ব্যালান্স ≤ $0.00 হলে বহির্গামী কল 402 Payment Required ফেরত দেয়। ব্যালান্স টপ আপ করুন POST /v1/billing/top-up-এর মাধ্যমে অথবা স্বয়ংক্রিয় রিলোড সক্রিয় করুন।

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

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

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

রেসপন্স:

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

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

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

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-এ সাবস্ক্রাইব করুন — কল শেষ হয়েছে জানার এটি সবচেয়ে দ্রুত উপায়। আপনি যদি ইনবাউন্ড ওয়েবহুক গ্রহণ করতে না পারেন, প্রতি কয়েক সেকেন্ডে 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 চালান
404 from_number is not registered to this organizationনিশ্চিত করুন from_number আপনার মালিকানাধীন একটি ফোন নম্বরের সঙ্গে মেলে
502 Bad Gatewayঅস্থায়ী SIP / LiveKit ব্যর্থতা; পুনরায় চেষ্টা করা নিরাপদ

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

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

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

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


পরবর্তী ধাপ