নম্বর ও মূল্য একসঙ্গে বেছে নিন
উপলভ্য নম্বরের নতুন অনুসন্ধান থেকে বেছে নেওয়া একটি নির্দিষ্ট নম্বর কিনুন। নির্বাচিত ফলাফলের info.uuid নম্বরের ID হিসেবে এবং সেই একই ফলাফলের price[].uuid মানগুলোর একটি মূল্যের ID হিসেবে ব্যবহার করুন। এই রুট সম্পূর্ণ সংরক্ষিত নম্বরও গ্রহণ করে, তবে দেশ, এলাকা বা প্রিফিক্সের ID দিয়ে নম্বর নির্বাচন প্রতিস্থাপন করা যায় না।
অনুসন্ধান করলে বা সংরক্ষিত মূল্যতথ্য পড়লে কোনো নম্বর সংরক্ষিত হয় না, কিংবা তার মূল্য স্থির হয় না। নির্বাচিত সেটআপ মূল্য, মাসিক মূল্য, আগত কলের প্রতি মিনিটের হার, অন্তর্ভুক্ত মিনিট ও চ্যানেল, সেই সঙ্গে অ্যাকাউন্টের ক্রয়ের অনুমতি ও নিবন্ধনের প্রয়োজনীয়তা নিশ্চিত করুন। পর্যালোচিত সহায়ক প্রোগ্রামে প্রাথমিক মূল অর্থের পরিমাণ হলো সেটআপ মূল্য ও মাসিক মূল্যের যোগফল; নির্বাচিত প্ল্যানের জন্য সেবাদাতাভিত্তিক সব চার্জ ও শর্ত নিশ্চিত করতে হবে।
সুরক্ষা যাচাইসহ ক্রয়ের অনুরোধ POST করুন
অনুমোদিত উৎস IP ঠিকানা থেকে HTTPS-এর মাধ্যমে একটি সক্রিয় API অ্যাকাউন্ট ব্যবহার করুন। নিচের কমান্ডটি ক্রয় করে; এটি মূল্যপ্রস্তাব নেওয়া বা পরীক্ষামূলক অনুশীলন নয়। সদ্য নির্বাচিত একই নম্বর ও মূল্য থেকে প্রতিটি ভেরিয়েবলের মান নির্ধারণ করুন। ঊর্ধ্বসীমার ফিল্ডগুলো পুরোনো restore_quote_ প্রিফিক্স বজায় রাখে; বর্তমান পোর্টালও সুরক্ষা যাচাইসহ নির্দিষ্ট নম্বর কেনার জন্য এগুলো ব্যবহার করে।
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--data-urlencode "restore_quote_price_id=$PRICE_ID" \
--data-urlencode "restore_quote_setup=$SETUP_PRICE" \
--data-urlencode "restore_quote_monthly=$MONTHLY_PRICE" \
--data-urlencode "restore_quote_per_minute=$PER_MINUTE_PRICE" \
--data-urlencode "restore_quote_channels=$CHANNELS" \
"https://api.multitel.net/v3/rentnumber/$NUMBER_ID/$PRICE_ID"দেখানো পদ্ধতিতে ফর্ম POST ব্যবহার করুন। সহায়ক প্রোগ্রামে JSON/অপশন-র্যাপার পার্সিংও আছে, তবে মূল্যপ্রস্তাব ও সেবাদাতার সব প্রক্রিয়াপথে সম্পূর্ণ সমতুল্য আচরণ এই পর্যালোচনায় প্রতিষ্ঠিত হয়নি। এই পুরোনো সমন্বয়কারীতে অনুরোধের পদ্ধতি যাচাইয়ের স্পষ্ট সুরক্ষা না থাকলেও কেনাকাটার জন্য GET ব্যবহার করবেন না।
| ফিল্ড | অর্থ |
|---|---|
| NUMBER_ID | অনুসন্ধান থেকে নির্বাচিত নম্বরের UUID অথবা সম্পূর্ণ সংরক্ষিত নম্বর। প্রতি অনুরোধে একটি নম্বর। |
| PRICE_ID | নির্বাচিত সেই নম্বর ও আপনার অ্যাকাউন্টের সঙ্গে যুক্ত মূল্যের UUID। এটি সব সময় স্পষ্টভাবে দিন। |
| restore_quote_price_id | সমাধান করে নির্ধারিত মূল্যের ID-এর সঙ্গে অবশ্যই মিলতে হবে। এই ফিল্ড দিলে মূল্যপ্রস্তাবের যাচাইগুলো সক্রিয় হয়; এটি পুনরাবৃত্ত অনুরোধের ফল অপরিবর্তিত রাখার কোনো আইডেমপোটেন্সি কী নয়। |
| restore_quote_setup | সর্বোচ্চ গ্রহণযোগ্য সেটআপ মূল্য, একটি সসীম অঋণাত্মক সংখ্যামান হিসেবে। |
| restore_quote_monthly | সর্বোচ্চ গ্রহণযোগ্য মাসিক মূল্য, একটি সসীম অঋণাত্মক সংখ্যামান হিসেবে। |
| restore_quote_per_minute | আগত কলের প্রতি মিনিটের সর্বোচ্চ গ্রহণযোগ্য হার, একটি সসীম অঋণাত্মক সংখ্যামান হিসেবে। |
| restore_quote_channels | নির্বাচিত মূল্য বিকল্পের চ্যানেলের সঠিক পূর্ণসংখ্যক পরিমাণ; এটি ভিন্ন চ্যানেল প্ল্যানের অনুরোধ নয়। |
মূল্যপ্রস্তাবের মূল্যের ID যখনই দেবেন, তখনই মূল্যপ্রস্তাবের সব সংখ্যাসূচক ফিল্ড দিন। ID বদলে গেলে, মূল্য ঊর্ধ্বসীমা ছাড়ালে, ঊর্ধ্বসীমা অনুপস্থিত বা অবৈধ হলে, চ্যানেলের পরিমাণ বদলে গেলে অথবা মূল্যপ্রস্তাবের লক ব্যস্ত থাকলে নির্বাচিত নম্বর ভাড়া দেওয়ার সেবাদাতার কাছে অনুরোধ পাঠানোর আগেই API কোড 409 ফেরত আসে। তুলনার সময় ফ্লোটিং-পয়েন্টের সামান্য তারতম্য অনুমোদিত; নিজে মূল্য রাউন্ড না করে প্ল্যানে প্রদর্শিত প্রকৃত মান ব্যবহার করুন।
এই সুরক্ষা যাচাইগুলো পুরো কার্যপ্রবাহকে পরীক্ষামূলক অনুশীলন বা একক লেনদেনে পরিণত করে না। এসব যাচাইয়ের আগেই নিবন্ধন খোঁজা, পরিচয় সত্তা তৈরি ও প্রস্তুত করা অথবা সহায়ক প্রোগ্রামের অন্য কাজ হতে পারে। এগুলো বাহ্যিক নম্বরের মজুতও স্থির করে না বা অ্যাকাউন্ট পর্যায়ের ক্রয়সংক্রান্ত বিধিনিষেধের বিকল্প হয় না।
নিবন্ধন ও সক্রিয়করণ
প্রয়োজন হলে RegistrationID ফর্ম ফিল্ড যোগ করুন, যার মান হবে গ্রাহকের মালিকানাধীন নিবন্ধন প্রোফাইলের UUID। এটি আপলোড করা প্রমাণপত্র, সরবরাহকারীর ঠিকানা বা স্বতন্ত্র পরিচয় সত্তার ID নয়। সহায়ক প্রোগ্রাম প্রমাণীকৃত অ্যাকাউন্টের সঙ্গে মিলিয়ে প্রোফাইলটি খুঁজে নির্ধারণ করে এবং অনুপস্থিত বা অনুপলভ্য প্রোফাইল প্রত্যাখ্যান করে।
সমর্থিত মজুতের কিছু নম্বর নিবন্ধন শেষ হওয়ার আগেই কেনা যায়; অন্য নম্বর কেনার আগে প্রোফাইল থাকা প্রয়োজন। তারপরও ক্যারিয়ারভিত্তিক যাচাই বা সেবা প্রস্তুতকরণ প্রয়োজন হতে পারে। ক্রয় সফল হওয়া বা প্রাথমিক যাচাই বাদ পড়াকে নিবন্ধন থেকে অব্যাহতি কিংবা তাৎক্ষণিক সক্রিয়করণ হিসেবে ধরবেন না।
উপস্থিত থাকলে, প্রতিক্রিয়ার registration_requirements দেশ ও নম্বরের ধরনসহ কাঠামোবদ্ধ প্রয়োজনীয়তা খোঁজার তথ্য নির্দেশ করে। প্রযোজ্য প্রয়োজনীয়তা পূরণ করতে নিবন্ধন তালিকা ও প্রমাণপত্রের কার্যপ্রবাহ ব্যবহার করুন। ফেরত আসা লেখা ও মেটাডেটা নিজেরাই কোনো প্রোফাইল অনুমোদন করে না।
অজান্তে প্ল্যান বদলে যাওয়া এড়ান
পুরোনো সমন্বয়কারী ক্যাশে রাখা নম্বরের তথ্য থেকে বাদ পড়া মূল্য অনুমান করে নিতে পারে। স্পষ্টভাবে দেওয়া মূল্যের ID আর বিদ্যমান না থাকলে এটি ক্যাশে থাকা প্রিফিক্সের জন্য অ্যাকাউন্টের সর্বশেষ মূল্য বিকল্প হিসেবে ব্যবহার করতে এবং ক্যাশে থাকা অনুমোদিত মূল্যের নির্বাচন হালনাগাদ করতেও পারে। গ্রাহকের অনুমোদিত প্ল্যান বেছে নিতে এসব বিকল্প ব্যবস্থার ওপর নির্ভর করবেন না।
নির্বাচিত মূল্য স্পষ্টভাবে এবং তার সঙ্গে মেলা মূল্যপ্রস্তাবের সুরক্ষা ফিল্ডগুলো দিন। মূল্যপ্রস্তাবের ID যাচাই নম্বর ভাড়ার অনুরোধ পাঠানোর আগেই অন্য ID বিকল্প হিসেবে নেওয়া প্রত্যাখ্যান করে। পুরোনো মূল্যের কারণে সংঘাত হলে সুরক্ষা যাচাই সরিয়ে জোর করে ক্রয় না করে নতুন করে অনুসন্ধান করুন এবং নতুন নির্বাচনের অনুমোদন নিন।
প্রতিটি প্রক্রিয়াপথের জন্য নিশ্চিত সংরক্ষণকাল বা সর্বত্র কার্যকর ক্যাশের মেয়াদ নেই। কার্যপ্রবাহে নম্বরের প্রাপ্যতা, অ্যাকাউন্টের মূল্যসীমা ও ক্রয়ের নীতি আবার যাচাই করা হয়, তবে সেবাদাতাভিত্তিক সম্পূর্ণ আচরণ এখনো পর্যালোচনাধীন।
উন্নত সেটিংস: অ্যাকাউন্টের ডিফল্ট রাউটিং
ক্রয়ের সময় অ্যাকাউন্টের বিদ্যমান ভয়েস গন্তব্য, মূল গন্তব্য ব্যর্থ হলে ব্যবহারের বিকল্প গন্তব্য, SMS গন্তব্য এবং অরিজিনেশন ট্রাঙ্কের পছন্দ উত্তরাধিকারসূত্রে প্রযোজ্য হতে পারে। অর্ডার দেওয়ার আগে এই ডিফল্টগুলো পর্যালোচনা করুন; রাউটিং বিকল্প না দিলে নম্বরটি কনফিগারেশনবিহীন থাকবে এমন নিশ্চয়তা নেই। পর্যালোচিত সহায়ক প্রোগ্রাম ডিফল্টভাবে স্বয়ংক্রিয় নবায়ন চালু করে।
| বিকল্প | মান নির্ধারণের আচরণ |
|---|---|
| uri, uri2, uri3 | বাদ দেওয়া মানের ক্ষেত্রে অ্যাকাউন্টের সংশ্লিষ্ট ডিফল্ট প্রযোজ্য হয়। স্পষ্টভাবে খালি মান দিলে ডিফল্ট নেওয়ার বদলে সহায়ক প্রোগ্রামের মান মুছে যায়। নির্বাচিত রাউটিং মোডের উপযোগী বৈধ গন্তব্য ব্যবহার করুন। |
| smsuri | মান বাদ দিলে অ্যাকাউন্টের SMS গন্তব্য প্রযোজ্য হয়; স্পষ্টভাবে খালি মান দিলে সহায়ক প্রোগ্রামে সেটি মুছে যায়। |
| origintrunk | স্পষ্টভাবে দেওয়া স্বীকৃত ট্রাঙ্ক ID অগ্রাধিকার পায়। কোনো মান নির্ধারণ করা না গেলে ত্রুটি দেখানোর বদলে অ্যাকাউন্টের পছন্দ বা পুরোনো ডিফল্ট প্রযোজ্য হতে পারে। |
| forward_destination, forwarding_destination, type | রাউটিং মোডের অশূন্য বিকল্প নামগুলো উল্লিখিত ক্রমে অগ্রাধিকার পায়। অনুমান করা সংখ্যাসূচক মোডের বদলে অ্যাকাউন্টের রাউটিং কনফিগারেশনের সমর্থিত মান ব্যবহার করুন। |
| RegistrationID | গ্রাহকের আওতার মধ্যে নিবন্ধন প্রোফাইল খোঁজা; এটি রাউটিং গন্তব্য থেকে পৃথক। |
| autorenew | ডিফল্ট মান 1। সহায়ক প্রোগ্রাম মান খালি কি না তা যাচাই করে, তাই এই ক্রয় ফিল্ডে 0 দিলে নবায়ন নির্ভরযোগ্যভাবে বন্ধ হয় না। অ্যাকাউন্টের সমর্থিত নবায়ন ব্যবস্থাপনা ব্যবহার করুন এবং সংরক্ষিত সেটিং যাচাই করুন। |
এগুলো ভাগাভাগি ব্যবহৃত সহায়ক প্রোগ্রামের আচরণের নিয়ম; প্রতিটি সরবরাহকারী প্রতিটি ঐচ্ছিক সেটিং একইভাবে স্থায়ীভাবে সংরক্ষণ করে এমন নিশ্চয়তা নয়। ভয়েস, ভয়েসমেইল, ফ্যাক্স ও SMS-এর আরও পুরোনো ফিল্ড রয়েছে, তবে সেগুলোরও সেবাদাতাভিত্তিক পূর্ণাঙ্গ পর্যালোচনা এখনো প্রয়োজন। কল বা বার্তার ওপর নির্ভর করার আগে অ্যাকাউন্টের কার্যপ্রবাহের মাধ্যমে কেনা নম্বরের সংরক্ষিত কনফিগারেশন যাচাই করুন।
প্রতিক্রিয়া
জটিলতাহীন একটি ক্রয়ের কাল্পনিক উদাহরণ; নির্বাচিত প্ল্যান অনুযায়ী মান ও সুবিধা ভিন্ন হয়।
{
"status": {
"code": 200,
"msg": ""
},
"response": {
"number": "12025550123",
"price": {
"per_minute": "0.0100",
"free_minutes": "100",
"setup_price": "2.00",
"monthly_price": "4.00",
"channels": "2",
"overflow": "0"
},
"features": [
"voice"
],
"needs_registration": 0,
"registration_requirements": null
}
}সমন্বয়কারী তার নিজস্ব status.code/status.msg এবং response প্রতিক্রিয়া কাঠামো ব্যবহার করে; এতে status.results ফিল্ড থাকবেই, এমন নিশ্চয়তা নেই। ত্রুটির ক্ষেত্রে সাধারণত প্রতিক্রিয়ার তালিকা খালি থাকে। সফল হলে ফেরত আসা নম্বর ও মূল্য পরীক্ষা করুন, তারপর অ্যাকাউন্টের নম্বরের মজুত ও নিবন্ধনের অবস্থা মিলিয়ে নিশ্চিত করুন। সেবাদাতা গ্রহণ করলেই বাস্তব ভয়েস, SMS বা ফ্যাক্স পরীক্ষা সম্পন্ন হয় না।
ত্রুটি ও অনিশ্চিত ফলাফল
| API কোড | অর্থ |
|---|---|
| 403 | অ্যাকাউন্টের মূল্য বা ক্রয়সংক্রান্ত বিধিনিষেধ, অনুপলভ্য মূল্য নির্বাচন অথবা প্রবেশাধিকারহীন নিবন্ধন প্রোফাইলের কারণে প্রক্রিয়াকরণ বন্ধ হতে পারে। |
| 404 | নম্বর, মূল্য বা প্রিফিক্সের নির্বাচন অনুপস্থিত বা অনুপলভ্য। |
| 409 | নম্বরটি ইতিমধ্যেই সক্রিয়, মূল্যপ্রস্তাবের কোনো সুরক্ষা শর্ত আর মিলছে না অথবা সুরক্ষিত অন্য কোনো কার্যক্রম লক ধরে রেখেছে। |
| 422 | পর্যালোচিত নিবন্ধন প্রক্রিয়াপথে নিবন্ধনের তথ্য প্রয়োজন, অসম্পূর্ণ অথবা সেই তথ্য দিয়ে প্রয়োজনীয় প্রস্তুতকরণ করা যাচ্ছে না। |
| 500 এবং সেবাদাতা/অ্যাকাউন্টের অন্যান্য কোড | সেবাদাতা, স্থানীয় প্রক্রিয়াকরণ বা নীতিসংক্রান্ত ব্যর্থতা। কোনো ক্রয় হয়নি বা চার্জ ধার্য হয়নি—এসব কোড সব ক্ষেত্রে তার প্রমাণ নয়। |
HTTP স্ট্যাটাসের পাশাপাশি প্রকৃত API প্রতিক্রিয়ার বডিও পড়ুন। স্থানীয় বিজ্ঞপ্তি, নিবন্ধন বা অন্য প্রক্রিয়াকরণ ব্যর্থ হওয়ার আগেই বাহ্যিক সেবাদাতা নম্বর ভাড়ার অনুরোধ গ্রহণ করে থাকতে পারে। স্থানীয় মজুত থেকে কিছু বরাদ্দে ডেটাবেস লেনদেন ব্যবহার করা হয়, তবে বাহ্যিক সেবাদাতার অর্ডার সব ক্ষেত্রে আগের অবস্থায় ফেরানোর ব্যবস্থা নেই। এই সমন্বয়কারীতে ক্লায়েন্টের আইডেমপোটেন্সি কী নেই।
আবার চেষ্টা করার আগে মিলিয়ে নিশ্চিত করুন
- একবার জমা দেওয়ার আগে আপনার অ্যাপ্লিকেশনের অর্ডার রেকর্ডে অনুমোদিত নম্বর, মূল্য ও মূল্যপ্রস্তাবের ঊর্ধ্বসীমাগুলো রাখুন।
- অনুরোধের পরে একই অ্যাকাউন্টের কেনা নম্বরের তালিকা ও নম্বরের বিবরণ পড়ুন; সময়সীমা পেরিয়ে গেলে বা ত্রুটি হলেও এটি করুন।
- নম্বরটি থাকলে আরেকটি ক্রয়ের অনুরোধ না পাঠিয়ে তার মূল্য, নবায়ন, রাউটিং ও নিবন্ধনের অবস্থা যাচাই করুন।
- ফলাফল তখনো অনিশ্চিত থাকলে আবার চেষ্টা করার আগে সহায়তা বিভাগকে দিয়ে সেবাদাতার অর্ডার ও অ্যাকাউন্টের বিলিং মিলিয়ে নিশ্চিত করান। শুধু একটি ত্রুটির বার্তা বা পুরোনো লগের সফলতার চিহ্ন যথেষ্ট প্রমাণ নয়।
- মালিকানা ও সক্রিয়করণ নিশ্চিত হওয়ার পরে অ্যাকাউন্টের স্বাভাবিক রাউটিং যাচাই ও সেবার পরীক্ষা সম্পন্ন করুন।