একটি স্বতন্ত্র প্রিফিক্স বেছে নিন
দেশ ও ক্যাটালগের আওতাভুক্ত এলাকা খোঁজার কলগুলো ব্যবহার করুন, তারপর getprefixes গ্রুপ না করে ব্যবহার করুন। নির্বাচিত প্রিফিক্সের এই মানটি হুবহু কপি করুন: uuid। যদি returns_numbers এর মান 0 হয়, তাহলে অর্ডার করার সময় প্রিফিক্সটি একটি নম্বর বরাদ্দ করে; ফেরত পাওয়া এই মানটি ব্যবহার করুন: next_function; স্বতন্ত্র নম্বরগুলোর তালিকা পাওয়ার শর্ত দেবেন না।
সীমিত আকারের একটি ব্যাচ দেখুন
সাধারণ অনুসন্ধানে ব্যবহার করুন compact=1 এবং কাঙ্ক্ষিত ব্যাচের আকার দিন পাথ ও quantity কোয়েরি উভয় জায়গায়, নিচের উদাহরণের মতো। পৃষ্ঠা বা কার্সরের কোনো প্যারামিটার নেই। সংক্ষিপ্ত ফলাফল একটি নমুনা; একই অনুরোধ আবার করলে পরের পৃষ্ঠায় সম্পূর্ণ আলাদা নম্বর পাওয়ার নিশ্চয়তা নেই। খালি বা অল্প ফলাফলকে মজুত নম্বরের মোট সংখ্যা মনে করবেন না।
সহজে মনে রাখার মতো অঙ্কের বিন্যাস খুঁজুন
দিন number_filter_mode=contains অথবা ends_with এবং সেই সঙ্গে দিন number_filter_value। মানটিতে অবশ্যই 1–15 টি অঙ্ক থাকতে হবে। ফিল্টার প্রয়োগের আগে অনুসন্ধান সীমিত সংখ্যক সম্ভাব্য নম্বরের ব্যাচ আনতে পারে, তাই মজুতে থাকা অন্য মিলে যাওয়া নম্বর বাদ পড়তে পারে। প্রয়োজনীয় অনুসন্ধান চালাতে আপনার যদি সমর্থিত উৎস দরকার হয়, তাহলে একটি pid নির্বাচক MultiTEL থেকে সংগ্রহ করুন এবং ব্যবহার করুন filter_required=1; কোনো উৎস নির্বাচন না করা হলে বা নির্বাচিত উৎস সমর্থিত না হলে API ত্রুটি ফেরত আসে।
নির্বাচিত নম্বর পর্যালোচনা করুন
একই ফলাফল থেকে পড়ুন number, info.uuid, নির্বাচিত price[].uuid, উপলব্ধ সুবিধাগুলোর নাম এবং নিবন্ধনের শর্তাবলি। এই price অ্যারেতে বিভিন্ন চ্যানেলসংখ্যা ও হারের একাধিক পরিকল্পনা থাকতে পারে। অর্থের পরিমাণসংক্রান্ত ফিল্ড ও সংখ্যাগত পরিমাণ স্ট্রিং হিসেবে এনকোড করা থাকতে পারে। ঐচ্ছিক মেটাডেটা, যার মধ্যে রয়েছে info.state, উৎসভেদে ভিন্ন হয়; সর্বত্র একই স্টেটের কাঠামো থাকার শর্ত দেবেন না বা কোনো ID থেকে মূল্য অনুমান করবেন না।
স্ট্রিমিংবিহীন প্রক্রিয়ায়, প্রথম পরিকল্পনার মাসিক মূল্য অনুযায়ী নির্বাচিত ব্যাচ সাজানোর আগে সম্ভাব্য নম্বরগুলোর সদৃশ এন্ট্রি বাদ দেওয়া হয় এবং উৎসগুলোর মধ্যে বরাদ্দ বণ্টন করা হয়। অন্য প্রক্রিয়ায় আরও আগেই স্ট্রিমিং শুরু হতে পারে, তাই প্রতিটি অনুরোধে সামগ্রিক ক্রম বা সদৃশ এন্ট্রি বাদ দেওয়ার নিশ্চয়তা নেই। সাজানো হয়েছে বলেও প্রমাণিত হয় না যে ফেরত পাওয়া নমুনায় পুরো ক্যাটালগের সবচেয়ে সস্তা নম্বরটি রয়েছে।
আলাদাভাবে অর্ডার করুন এবং ফলাফল নিশ্চিত করুন
অনুসন্ধান করলে কিছু কেনা বা সংরক্ষিত হয় না। একই অ্যাকাউন্টের অধীনে অর্ডার দেওয়ার প্রক্রিয়ায় ব্যবহারের জন্য ফেরত পাওয়া নম্বর ও পরিকল্পনার শনাক্তকারী রাখুন। অর্ডার জমা দেওয়ার আগে প্রকৃত পরিকল্পনা, শর্তাবলি ও চার্জ পর্যালোচনা করুন। নিবন্ধনের শর্তের কারণে সক্রিয় হতে দেরি হতে পারে; অনুসন্ধানের ফলাফল সক্রিয়করণের কোনো নির্দিষ্ট সময়সীমা নির্ধারণ করে না।
অনুরোধ
সক্রিয় MultiTEL API অ্যাকাউন্ট ব্যবহার করুন: পাসওয়ার্ডভিত্তিক অ্যাকাউন্টের জন্য HTTP Basic পরিচয়তথ্য, অথবা টোকেনভিত্তিক অ্যাকাউন্টের ক্ষেত্রে Authorization: Bearer ব্যবহার করুন। অ্যাকাউন্টের অনুমতি ও IP বিধিনিষেধ প্রযোজ্য। প্রমাণীকরণের সাধারণ নির্দেশনা দেখুন।
পাথ প্যারামিটার ও URL কোয়েরি প্যারামিটার। পাবলিক অনুসন্ধান প্রক্রিয়ায় GET ব্যবহার করুন। হ্যান্ডলারটি নির্দিষ্ট কিছু ফর্ম/অনুরোধের মানও গ্রহণ করে, তবে এটি JSON বডিভিত্তিক অনুসন্ধান API নয়।
curl --fail-with-body --get \
--user "${MULTITEL_API_USERNAME}:${MULTITEL_API_PASSWORD}" \
--data-urlencode "compact=1" \
--data-urlencode "quantity=10" \
"https://api.multitel.net/v3/getnumbers/${PREFIX_ID}/10"| নাম | ধরন | আবশ্যক | বিবরণ |
|---|---|---|---|
prefix_id | string | হ্যাঁ | গ্রুপ না করা getprefixes ফলাফলে ফেরত পাওয়া একটি স্বতন্ত্র প্রিফিক্স ID। এটি হুবহু কপি করুন; এর বদলে দেশ, ক্যাটালগের আওতাভুক্ত এলাকা, গ্রুপ করা প্রিফিক্স বা মূল্য পরিকল্পনার ID দেবেন না। |
quantity | integer | না | কতটি এন্ট্রি আনা হবে তার লক্ষ্যসংখ্যা; পূর্বনির্ধারিত মান 1। শূন্য বা ঋণাত্মক মান 1 হয়ে যায়। শুধু পাথের quantity সামগ্রিক ফলাফলের নির্ভরযোগ্য সীমা নয়: নির্দিষ্ট উৎসে সীমাবদ্ধ নয় এমন অনুসন্ধানে quantity কোয়েরি না থাকলে আরও এন্ট্রি আনা হতে পারে এবং অন্যান্য প্রক্রিয়াকরণের আগে প্রতি উৎস থেকে সর্বোচ্চ 50 টি এন্ট্রি ফেরত আসতে পারে। সাধারণভাবে সীমিত ফলাফল দেখতে compact=1 ব্যবহার করুন এবং উদাহরণের মতো কোয়েরিতেও কাঙ্ক্ষিত পরিমাণটি আবার দিন। |
| নাম | ধরন | আবশ্যক | বিবরণ |
|---|---|---|---|
quantity | integer | না | চাওয়া চূড়ান্ত ব্যাচের আকার। খালি নয় এমন মানগুলো পূর্ণসংখ্যায় রূপান্তর করা হয়, যার সর্বনিম্ন মান 1। নির্দিষ্ট উৎসে সীমাবদ্ধ নয় এমন স্ট্রিমিংবিহীন প্রক্রিয়ায় এটি চূড়ান্ত বরাদ্দ সীমিত করে। এটি সেবাটিকে ঠিক ততগুলো নম্বর খুঁজে পেতে বাধ্য করে না। নির্দিষ্ট উৎসে সীমাবদ্ধ সংক্ষিপ্ত অনুসন্ধানে এই সীমার পরিবর্তে উৎসের সংক্ষিপ্ত ব্যাচ ফেরত আসতে পারে। |
compact | string | না | আরও ছোট স্ট্রিমিংবিহীন ফলাফলের জন্য 1, true অথবা on ব্যবহার করুন; চূড়ান্ত বরাদ্দের আগে প্রতি উৎসে সর্বোচ্চ 10 টি এন্ট্রি থাকে। ফলাফলগুলো বর্তমানে আনা মজুত নম্বরের একটি নমুনা, সম্পূর্ণ ক্যাটালগ নয়। |
number_filter_mode | string | না | অঙ্কের বিন্যাসের ঐচ্ছিক মোড: contains অথবা ends_with। number_filter_value-ও দিন। ফোন নম্বরের প্রমিত রূপের অঙ্কগুলোর সঙ্গে ফলাফল মিলিয়ে দেখা হয়; সম্ভাব্য সব মিল নিশ্চিত করতে অনুসন্ধানটি মজুতের সব নম্বর একে একে পরীক্ষা করে না। |
number_filter_value | string | না | 1 থেকে 15 টি অঙ্ক, কোনো ফাঁক, + বা যতিচিহ্ন ছাড়া। শুরুর শূন্যগুলো তাৎপর্যপূর্ণ; মানটি পাঠ্য হিসেবে পাঠান। |
filter_required | string | না | উন্নত সেটিং: 1, true, yes অথবা on ব্যবহার করলে ফিল্টার মোডটির জন্য সমর্থিত একটি মজুতের উৎস স্পষ্টভাবে নির্বাচন করতে হবে। অন্যথায় API status.code 422 ফেরত দেয়। সাধারণভাবে ক্যাটালগ দেখার জন্য এটি প্রয়োজন নেই। |
pid | string | না | MultiTEL থেকে দেওয়া মজুত নির্বাচনের উন্নত নির্বাচক। সংখ্যাভিত্তিক রূপ ও সমর্থিত 32 অক্ষরের হেক্সাডেসিমাল রূপ গ্রহণ করা হয়; অপরিচিত মান কোনো বার্তা ছাড়াই উপেক্ষা করা হয়। সাধারণ ব্যবহারে এটি বাদ দিন। মূল্যের ID থেকে নির্বাচক তৈরি করবেন না বা ধরে নেবেন না যে যেকোনো নির্বাচক মজুতকে শুধু একটি নির্দিষ্ট উৎসেই সীমাবদ্ধ রাখে। |
প্রতিক্রিয়া
status ও response ধারণকারী একটি JSON অবজেক্ট। সফল হলে status.code এর মান 200 হয় এবং response নম্বরের এন্ট্রিগুলোর একটি অ্যারে হয়। status.results হলো ফেরত পাওয়া অ্যারের এন্ট্রিসংখ্যা; স্ট্রিমিং প্রতিক্রিয়ার ক্ষেত্রে status.msg হতে পারে Results: N অথবা OK। compact=1 না থাকলে কিছু অনুসন্ধান ধাপে ধাপে response অ্যারে লেখে এবং শেষে status দিয়ে শেষ করে, তাই সম্পূর্ণ JSON বডি আসা পর্যন্ত অপেক্ষা করুন। এটি নতুন লাইন দিয়ে পৃথক করা JSON নয়। HTTP পরিবহন সফল হলেও status.code পরীক্ষা করুন। সাধারণ ফিল্ডগুলো নিচে দেখানো হয়েছে; উৎসভিত্তিক মেটাডেটা ও ঐচ্ছিক ফিল্ড ভিন্ন হয়। প্রতিটি শনাক্তকারীকে এমন একটি অস্বচ্ছ মান হিসেবে বিবেচনা করুন যার ভেতর থেকে কোনো অর্থ অনুমান করা যায় না, এবং নম্বর ও তার নির্বাচিত price[].uuid একসঙ্গে রাখুন।
প্রতিক্রিয়ার কাঠামো বোঝানোর উদাহরণ; এটি অ্যাকাউন্টের সরাসরি তথ্য বা বর্তমান মূল্যপ্রস্তাব নয়।
{
"status": {
"code": 200,
"msg": "Results: 1",
"results": 1
},
"response": [
{
"number": "12125550123",
"info": {
"uuid": "NUMBER_ID_FROM_RESPONSE",
"prefix_uuid": "PREFIX_ID_FROM_RESPONSE",
"area_uuid": "AREA_ID_FROM_RESPONSE",
"country_uuid": "COUNTRY_ID_FROM_RESPONSE",
"country_iso": "US",
"prefix": "+1212",
"name": "Example area",
"state": "US"
},
"price": [
{
"uuid": "PRICE_PLAN_ID_FROM_RESPONSE",
"per_minute": "0.01",
"per_sms": "0",
"per_mms": "0",
"free_minutes": "0",
"setup_price": "1.00",
"monthly_price": "2.00",
"yearly_price": "0",
"channels": "2"
}
],
"contract": {
"term": "1 month",
"renewal": "monthly",
"notice": "none"
},
"restrictions": {
"needs_registration": "0",
"restrictions": ""
},
"features": [
"voice"
],
"overflow": "0"
}
]
}ত্রুটি
- 401: প্রমাণীকরণ ব্যর্থ হয়েছে। পরিচয়তথ্য অবৈধ বা অনুপস্থিত হলে এবং API অ্যাকাউন্টে প্রবেশাধিকার প্রত্যাখ্যাত হলে অনুসন্ধানের ফলাফল পাওয়া যায় না।
- 404: Invalid prefix ID, Invalid country, Invalid area, অথবা No numbers found। status.msg পড়ুন; ত্রুটির প্রতিক্রিয়া নম্বরের অ্যারে নয়।
- 400: response.code ফিল্ডে NUMBER_FILTER_INVALID: অবৈধ মোড, 1–15 টি অঙ্কের পরিবর্তে অন্য কোনো মান, অথবা মোড ও মান উভয়টি না দিয়েই filter_required ব্যবহার করা হয়েছে।
- 422: response.code ফিল্ডে NUMBER_FILTER_UNSUPPORTED: হয় প্রিফিক্সটি অর্ডারের সময় নম্বর বরাদ্দ করে (reason=order_only_prefix এবং next_function অর্ডারের রুট নির্দেশ করে), অথবা স্পষ্টভাবে নির্বাচিত উৎসটি প্রয়োজনীয় ফিল্টার সমর্থন করতে পারে না।
প্রাপ্যতা ও আনুষঙ্গিক প্রভাব
- এই হ্যান্ডলার অনুসন্ধান করে এবং মূল্যপ্রস্তাব তৈরি করে; এটি নম্বরের অর্ডার জমা দেয় না বা নম্বর কেনার চার্জ কেটে নেয় না। এটি ক্যাটালগের ক্যাশ হালনাগাদ করতে, ক্যাশে থাকা অচল মজুতের তথ্য সরাতে, নির্দিষ্ট অ্যাকাউন্টের মূল্য পরিকল্পনা সংরক্ষণ করতে এবং অনুসন্ধানের লগ লিখতে পারে।
- প্রাপ্যতা একটি নির্দিষ্ট মুহূর্তের ফলাফল, সংরক্ষণ নয়। পরবর্তী অর্ডার ব্যর্থ হতে পারে বা ভিন্ন প্রাপ্যতা দেখাতে পারে। আবার কেনার চেষ্টা করার আগে অর্ডারের ফলাফল মিলিয়ে নিশ্চিত করুন।
- মূল্য অ্যাকাউন্টভিত্তিক। একই অ্যাকাউন্টের জন্য নির্বাচিত পরিকল্পনার ID রাখুন এবং অর্ডারের শর্ত ও চার্জ আলাদাভাবে পর্যালোচনা করুন; শুধু এই এন্ডপয়েন্ট থেকে প্রমাণিত হয় না যে পরবর্তী অর্ডার পর্যন্ত কোনো মূল্য বহাল থাকবে।
- উদাহরণের নম্বর ও মূল্যগুলো প্রতিক্রিয়ার কাঠামো বোঝানোর কাল্পনিক উদাহরণ, সরাসরি মূল্যপ্রস্তাব নয়। সক্ষমতা, চ্যানেলসংখ্যা, মেয়াদ ও নিবন্ধনের তথ্য অবশ্যই প্রকৃত নির্বাচিত ফলাফল থেকে পড়তে হবে।
- নিবন্ধনের কিছু বিবরণে বিন্যাসযুক্ত পাঠ্য বা লিংক থাকে। নিজের অ্যাপ্লিকেশনে ফেরত পাওয়া স্ট্রিং প্রদর্শন করার সময় সেগুলোকে অবিশ্বস্ত ডেটা হিসেবে বিবেচনা করুন।
- মোবাইল নম্বরের প্রাপ্যতা ও ফ্ল্যাগ অ্যাকাউন্টের যোগ্যতা এবং মজুতের ওপর নির্ভর করে। শুধু ক্যাটালগের প্রিফিক্স বা is_mobile ফ্ল্যাগ দিয়ে কোনো নির্দিষ্ট নম্বরের মোবাইল সক্ষমতা নিশ্চিত হয় না।