API শংসাপত্র ব্যবহার করুন
v3 অনুরোধ HTTPS এর মাধ্যমে পাঠান https://api.multitel.net. এই নির্দেশিকার প্রতিটি সমাপ্তিবিন্দুর জন্য প্রমাণীকরণ আবশ্যক. আপনার সার্ভারে শংসাপত্র রাখুন এবং ব্রাউজার JavaScript, সর্বজনীন পৃষ্ঠা, স্ক্রিনশট বা উৎস নিয়ন্ত্রণে কখনও রাখবেন না.
এই শংসাপত্র ফর্মগুলির মধ্যে একটি ব্যবহার করুন:
- HTTP Basic API ব্যবহারকারীর নাম এবং পাসওয়ার্ডসহ, যা আপনার MultiTEL অ্যাকাউন্টের জন্য কনফিগার করা.
- Bearer টোকেন একটি
Authorization: Bearer YOUR_API_TOKENহেডারে, টোকেন প্রমাণীকরণের জন্য কনফিগার করা সক্রিয় API অ্যাকাউন্টের জন্য. টোকেন অনুরোধগুলি শুধুমাত্র সেই এপিআই অ্যাকাউন্টের জন্য অনুমোদিত ঠিকানাগুলি থেকে গৃহীত হয়.
যদি একটি IP অনুমোদনতালিকা আপনার API অ্যাকাউন্টের জন্য কনফিগার করা থাকে, অনুমোদিত ঠিকানা থেকে সমস্ত অনুরোধ পাঠান.
curl --user "$API_USER:$API_PASSWORD" 'https://api.multitel.net/v3/getcountries'curl --header "Authorization: Bearer $API_TOKEN" 'https://api.multitel.net/v3/getcountries'এই উদাহরণগুলির চলকগুলি হলো আপনার পরিবেশে ব্যক্তিগতভাবে সংরক্ষণ করা শংসাপত্রগুলির স্থানধারক.
প্রমাণীকরণ ব্যর্থতা মোকাবিলা করুন
প্রমাণীকরণ ব্যর্থতাগুলি HTTP স্থিতি 401 সহ পাঠানো হয়. বডিটি মানক খাম ব্যবহার করে, যেখানে status.code এর মান 401 এবং একটি খালি স্ট্রিংয়ের মান রাখা হয় response-এ.
- কোনো শংসাপত্র নেই:
status.msgহলোUsername and password are required, এবং প্রতিক্রিয়ায় একটি Basic প্রমাণীকরণ চ্যালেঞ্জ অন্তর্ভুক্ত থাকে. - Bearer টোকেন প্রত্যাখ্যাত: যদি
AuthorizationহেডারেBearerস্কিম ব্যবহার করা হয় এবং টোকেনটি অজানা, নিষ্ক্রিয় বা আপনার ঠিকানা থেকে ব্যবহারের জন্য অনুমোদিত না হয়,status.msgহলোInvalid bearer token. Bearer হেডার উপস্থিত থাকলে অন্য কোনো শংসাপত্র চেষ্টা করা হয় না. - অবৈধ Basic শংসাপত্র:
status.msgদিয়ে শুরু হয়A valid username and password pair are required., এবং প্রতিক্রিয়ায় একটি Basic প্রমাণীকরণ চ্যালেঞ্জ অন্তর্ভুক্ত থাকে. বার্তায় সমস্যা নির্ণয়ের অতিরিক্ত তথ্য থাকতে পারে, তাই এটি পার্স করবেন না.
একই শংসাপত্র দিয়ে স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করবেন না. অল্প সময়ের মধ্যে একটি ঠিকানা থেকে অনেক ব্যর্থ প্রচেষ্টা সেই ঠিকানা থেকে আরও অনুরোধ ব্লক হওয়ার কারণ হতে পারে.
প্রতিক্রিয়ার বডি পড়ুন
বেশিরভাগ v3 এন্ডপয়েন্ট, যার মধ্যে রয়েছে getcountries, getstates, getareas এবং other, এই খামে JSON ফেরত দেয়:
{
"status": {
"code": 200,
"msg": "Results: 1",
"results": 1
},
"response": [
{
"countrycode": "1",
"name": "United States",
"description": "United States",
"isocode": "US",
"is_mobile": 0,
"sms_coverage": 1,
"latitude": "38.0000",
"longitude": "-97.0000",
"next_function": "v3/getareas/US"
}
]
}এটি একটি উদাহরণমূলক দেশ-তালিকা প্রতিক্রিয়া, বর্তমান ইনভেন্টরি বা সক্ষমতার বিবৃতি নয়.
| ক্ষেত্র | অর্থ |
|---|---|
status.code | API ফলাফল কোড, উদাহরণস্বরূপ 200, 401, 404 বা 500. |
status.msg | একটি মানব-পাঠযোগ্য বার্তা. এটি খালি হতে পারে. প্রোগ্রামের যুক্তি নির্ধারণ করুন status.code-এর ভিত্তিতে, বার্তার পাঠ্যের ভিত্তিতে নয়. |
status.results | এন্ট্রির সংখ্যা. এখানে নথিভুক্ত আবিষ্কার এন্ডপয়েন্টগুলির জন্য, এটি উপস্থিত থাকে যখন response একটি JSON তালিকা হয়, খালি তালিকা সহ (0). এটি অনুপস্থিত থাকে যখন response একটি খালি স্ট্রিং বা null হয়. অন্যান্য এন্ডপয়েন্ট পেলোড ভিন্নভাবে গণনা প্রতিবেদন করতে পারে; তাদের নিজস্ব প্রতিক্রিয়া নথি অনুসরণ করুন. |
response | এন্ডপয়েন্ট পেলোড. এর ধরন এন্ডপয়েন্ট এবং ফলাফলের উপর নির্ভর করে. ত্রুটির ক্ষেত্রে এটি একটি খালি স্ট্রিং. |
একটি ত্রুটি প্রতিক্রিয়া এরকম দেখায়:
{
"status": {
"code": 404,
"msg": "No areas found"
},
"response": ""
}যদি একটি প্রতিক্রিয়া এনকোড করা না যায়, বডিতে থাকে status.code 500, status.msg Response encoding error, এবং একটি খালি অবজেক্ট রাখা হয় response-এ.
পুরাতন GET /v3/countries এন্ডপয়েন্টটি প্রচলিত খামের পরিবর্তে ফেরত দেয় {"code": 200, "data": [...]}. প্রতিটি এন্ডপয়েন্টের নথিভুক্ত প্রতিক্রিয়া পরীক্ষা করুন. যদি একটি বডি বৈধ JSON না হয়, উদাহরণস্বরূপ অপ্রত্যাশিত সার্ভার ব্যর্থতার পরে, অনুরোধটিকে ব্যর্থ হিসাবে গণ্য করুন এবং পরে পুনরায় চেষ্টা করুন.
API ফলাফল কোড এবং HTTP স্থিতি
status.code হলো API ফলাফল কোড. এটি HTTP স্থিতি নয়. প্রমাণীকরণ ব্যর্থতাগুলি HTTP 401 সহ পাঠানো হয়. অন্যথায়, আবিষ্কার এন্ডপয়েন্টগুলি 404 এবং 500 এর মতো ফলাফল কেবল status.code-এ জানায় এবং মিলে যাওয়া HTTP স্থিতি সেট করে না. পাওয়া-যায়নি বা অনুপস্থিত-প্যারামিটার ফলাফল তাই সফল HTTP স্থিতি সহ আসতে পারে. সর্বদা status.code-এর মান পরীক্ষা করুন, response ব্যবহার করার আগে.
ফলাফল কোড 500 যার বার্তা ISO Code parameter is required মানে একটি প্রয়োজনীয় প্যারামিটার অনুপস্থিত. অনুরোধটি সংশোধন করুন, সার্ভার বিভ্রাট হিসাবে গণ্য না করে.
next_function অনুসরণ করুন
আবিষ্কার ফলাফলে অন্তর্ভুক্ত থাকে next_function. এটি অগ্রণী স্ল্যাশ ছাড়া একটি আপেক্ষিক পথ, কখনও কখনও কোয়েরি স্ট্রিংসহ, যেমন v3/getareas/US বা v3/getareas/US?state=NY. এটির আগে যোগ করুন https://api.multitel.net/ পরবর্তী অনুরোধ তৈরি করতে, এবং সেই অনুরোধ একইভাবে প্রমাণীকরণ করুন. আপনার পাঠানো ঐচ্ছিক ফিল্টার, যেমন pid, থাকে না next_function-এ. আপনার প্রয়োজন হলে সেগুলি আবার যোগ করুন.
ঐচ্ছিক ইনভেন্টরি নির্বাচক (pid)
getcountries, getstates এবং getareas একটি ঐচ্ছিক pid কোয়েরি প্যারামিটার গ্রহণ করে, যা ফলাফলকে একটি ইনভেন্টরি উৎসে সীমিত করে. এটি শুধুমাত্র MultiTEL দ্বারা প্রদত্ত মানসহ ব্যবহার করুন, হয় এর সংখ্যাসূচক রূপে অথবা এর 32-অক্ষরের হেক্সাডেসিমেল রূপে. স্বাভাবিক ব্যবহারের জন্য এটি বাদ দিন. কোয়েরি স্ট্রিংয়ের মাধ্যমে পাঠান pid. যদি এন্ডপয়েন্ট মানটি চিনতে বা গ্রহণ না করে, তাহলে এটি ত্রুটি ছাড়াই উপেক্ষা করে, এবং অনুরোধটি এমন আচরণ করে যেন pid বাদ দেওয়া হয়েছিল.
আবিষ্কারকে অর্ডার থেকে আলাদা করুন
দেশ, রাজ্য এবং এলাকা অনুসন্ধান আপনার অ্যাকাউন্ট পরিবর্তন করে না. বিশেষ-নম্বর ক্যাটালগ (other) ক্যাটালগ বিবরণ রিফ্রেশ করে এবং আপনার অ্যাকাউন্টের জন্য মূল্য উদ্ধৃতি সংরক্ষণ করে, কিন্তু এটি অর্ডার দেয় না. কোনো আবিষ্কার অনুরোধ নম্বর সংরক্ষণ করে না, এবং অনুরোধগুলির মধ্যে ইনভেন্টরি পরিবর্তিত হতে পারে. অর্ডারিং এন্ডপয়েন্ট ব্যবহারের আগে একটি নম্বরের জন্য প্রয়োজনীয়তা এবং মূল্য পর্যালোচনা করুন.
ক্রয়, অ্যাসাইনমেন্ট, বার্তা, ফ্যাক্স প্রেরণ এবং অন্যান্য কার্যক্রমের জন্য, সেই এন্ডপয়েন্টের নিজস্ব পুনরায় চেষ্টা নিয়ম অনুসরণ করুন. জমা দেওয়ার পরে কোনো কার্যক্রমের ফল পেতে নির্ধারিত সময় পেরিয়ে গেলে, এটি পুনরাবৃত্তি করার আগে এর স্থিতি বা আপনার অ্যাকাউন্ট রেকর্ড পরীক্ষা করুন. হারিয়ে যাওয়া প্রতিক্রিয়া প্রমাণ করে না যে কার্যক্রমটি ব্যর্থ হয়েছে.