الوصول إلى الحساب والمشروع
استخدم حساب API مفعّلا عبر HTTPS من عنوان IP مسموح به. يجب أن يكون المشروع تابعا لذلك الحساب وألا يكون محذوفا. استخدم المعرّف الفريد للمشروع الوارد في سير عمل طلب نقل الأرقام، وليس معرّفه الرقمي في قاعدة البيانات أو رقم هاتف. طبّق ترميز عناوين URL على معرّف المشروع عند إنشاء الطلب.
التحضير للإضافة
تعدّل هذه العملية مشروعا قائما لنقل الأرقام. تأكد أولا من الأرقام وتفويض العميل من خلال سير عمل طلب نقل الأرقام لديك. اكتب كل رقم بالأرقام بالصيغة الدولية الكاملة، وأزل التكرارات بنفسك وراجع قائمة الأرقام الموجودة في المشروع. لا تستخدم نقطة النهاية هذه لاختبار أرقام عشوائية.
تتحقق البوابة الحالية من صحة الأرقام وتوحّد صيغتها قبل استدعاء هذا المسار. لا توفر نقطة النهاية القديمة عند استخدامها مباشرة وسائل الحماية نفسها: فهي تزيل المسافات من بداية المدخلات ونهايتها، لكنها لا تتحقق من صيغة أرقام الهاتف أو رمز البلد أو التكرارات أو حالة المشروع ضمن سير العمل.
طلب POST
أنشئ ملفا محليا باسم numbers.json بالبنية التالية. الأرقام وهمية؛ استبدلها بأرقام مصرح بها للمشروع المحدد.
{
"numbers": [
"12025550123",
"12025550124"
],
"isocode": "US"
}curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--header "Content-Type: application/json" \
--data-binary @numbers.json \
"https://api.multitel.net/v3/lnp/project/$PROJECT_ID/addnumbers"| الحقل | المعنى |
|---|---|
| numbers | مصفوفة مطلوبة وغير فارغة من الأرقام الممثلة بسلاسل نصية، أو سلسلة نصية تحتوي على رقم واحد في كل سطر. يتم تجاهل العناصر الفارغة وإزالة المسافات من البداية والنهاية. لا يتم تقسيم النص المفصول بفواصل إلى أرقام مستقلة. |
| isocode | رمز بلد اختياري للسجلات المضافة. إذا تم إغفاله أو كان فارغا، يُستخدم موقع المشروع. يزيل المعالج المسافات من بداية القيمة المقدمة ونهايتها، لكنه لا يحوّل أحرفها إلى أحرف كبيرة ولا يتحقق من صحتها. أدخل بنفسك رمز البلد الصحيح بأحرف كبيرة. |
استخدم POST مع application/json في هذا المثال. تتم أيضا قراءة مدخلات النماذج المرسلة باستخدام POST. لا تحدد الطريقة مفتاحا لضمان عدم تكرار الأثر، ولا ضمانا خاصا بنقطة النهاية لحجم دفعة آمن؛ طابق نتائج دفعات يمكن إدارتها بدلا من الاعتماد على حد تخميني.
النتيجة المبلّغ عنها
مثال وهمي للاستجابة.
{
"status": {
"code": 200,
"msg": "Success add numbers"
},
"response": {
"uniqueid": "PROJECT_EXAMPLE",
"count": 2,
"numbers": [
{
"id": 21,
"number": "12025550123",
"status": 0,
"status_str": "Pending",
"isocode": "US"
},
{
"id": 22,
"number": "12025550124",
"status": 0,
"status_str": "Pending",
"isocode": "US"
}
]
}
}تضع الاستجابة الحالة Pending على محاولات الإضافة. وهي لا تتحقق من نتيجة كل عملية إدراج في قاعدة البيانات قبل الإبلاغ عنها. لذلك لا يكفي العدد أو المعرّف المُعاد وحده لإثبات حفظ كل سجل بصورة دائمة. لا تعني الإضافة ذات الحالة Pending قبول شركة الاتصالات أو جدولة النقل أو اكتمال التفعيل.
مطابقة البيانات قبل إعادة المحاولة
- اقرأ قائمة أرقام المشروع قبل إضافة الأرقام، واحتفظ بتفاصيل الإضافة المقصودة في سجلات الطلبات الخاصة بك.
- أرسل طلب الإضافة مرة واحدة.
- اقرأ قائمة أرقام المشروع مجددا وقارنها بكل رقم مقصود. تحقق من التكرارات ومن حالة كل رقم.
- إذا انتهت مهلة الطلب أو أعاد خطأ أو أبلغ عن نتيجة ملتبسة، فاقرأ البيانات مجددا قبل إعادة المحاولة. قد تكون بعض الإضافات موجودة بالفعل.
- عالج السجلات المفقودة أو المكررة من خلال سير عمل طلب نقل الأرقام أو الدعم بدلا من تكرار الطلب بالكامل دون تحقق.
يُدرج المعالج العناصر واحدا تلو الآخر دون معاملة لقاعدة البيانات أو حماية من التكرار. قد يُبقي الانقطاع عمليات الكتابة السابقة محفوظة؛ وقد تظل عملية إدراج فاشلة تعيد false مشمولة في العدد المبلّغ عنه. قد يؤدي تكرار الطلب إلى إضافة سجلات مكررة. ولا يكتب المعالج بنفسه حدثا ولا يُكمل عملية نقل لدى شركة الاتصالات.
أخطاء النظام القديم
أي طريقة غير POST تعيد الرمز 403 في API. والمشروع غير الموجود أو المحذوف أو غير التابع للحساب يعيد الرمز 404 في API. كما تعيد مدخلات الأرقام الفارغة الرمز 404 في API. تسري قيود المصادقة وعنوان IP المصدر. لا تثبت هذه الرموز القديمة عدم حدوث أي إدراج سابق بعد بدء المعالجة.
نطاق الفوترة والنقل
يُدرج المعالج الذي تمت مراجعته سجلات أرقام المشروع، ولا يتضمن خصما مباشرا من الحساب أو إرسال طلب إلى شركة الاتصالات. لا يجعل ذلك خدمة نقل الأرقام بأكملها مجانية ولا يلغي رسوم نقل الأرقام المتفق عليها. استوف متطلبات التفويض والمستندات والمراجعة الخاصة بالمشروع قبل توقع إجراء النقل.