هندسة التوجيه والبروتوكولات في المغرب
إن دمج واجهة برمجة تطبيقات SMS احترافية في المغرب لا يقتصر فقط على إطلاق طلب HTTP POST. وللسعي إلى إمكانية تسليم تزيد عن 99% على الشبكات الثلاث الرئيسية في المملكة (اتصالات المغرب، أورانج المغرب، إنوي)، يجب أن يعتمد محرك التوجيه على مسارات محلية مشروعة بمعرّفات مرسل مسجلة، دون المرور عبر المسارات الرمادية الدولية. يوضح هذا الدليل الفني تفاصيل تنفيذ التدفق المرن والقوي والمتوافق مع معايير B2B.
المراقبة في الوقت الحقيقي ومعدلات الكمون
توضح لوحة المعلومات أدناه أهمية التوجيه المحلي المشروع. توضح إحصائيات متوسط زمن الوصول لكل ناقل أن التوجيه المحلي يبقي أوقات التسليم أقل بكثير من عتبة الأربع ثوانٍ الحرجة (عادةً ما بين 2.8 ثانية و3.9 ثانية)، وهو أمر حيوي لرموز المصادقة الثنائية (2FA) وتنبيهات المعاملات الهامة.
التطبيع والتنسيق E.164 (+212)
قبل إرسال طلب إلى واجهة برمجة التطبيقات (API)، يجب على خوادمك التحقق من صحة رقم هاتف المستلم وتطهيره بشكل صارم. التنسيق المطلوب هو المعيار الدولي E.164. بالنسبة للمغرب، يجب أن تبدأ جميع الأرقام برمز البلد +212، متبوعًا برقم الهاتف المحمول بدون الحرف الأول 0. على سبيل المثال، الرقم المحلي "0612345678" يصبح "+212612345678". يؤدي إرسال أرقام منسقة بشكل غير صحيح أو خطوط أرضية غير متوافقة إلى حدوث خطأ فوري قدره 400 طلب سيئ لتجنب إضاعة أرصدة وقت البث الخاصة بك.
أرسل أولاً cURL وNode.js وPHP
للبدء بسرعة، توفر واجهة برمجة التطبيقات EnvoiSMS.ma نقطة نهاية RESTful نظيفة. فيما يلي التطبيقات القياسية الموصى بها لتطبيقاتك.
// Exemple 1 : Requête cURL
curl -X POST https://api.envoisms.ma/v1/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+212612345678",
"body": "Votre code de sécurité EnvoiSMS est 849301",
"sender": "EnvoiSMS"
}'
// Exemple 2 : Intégration en Node.js (Axios)
const axios = require('axios');
async function sendSMS() {
try {
const response = await axios.post('https://api.envoisms.ma/v1/messages', {
to: '+212612345678',
body: 'Votre code de sécurité EnvoiSMS est 849301',
sender: 'EnvoiSMS'
}, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
console.log('Message ID:', response.data.id);
} catch (error) {
console.error('Erreur d\'envoi:', error.response.data);
}
}
sendSMS();
// Exemple 3 : Intégration en PHP (cURL natif)
<?php
$ch = curl_init('https://api.envoisms.ma/v1/messages');
$payload = json_encode([
"to" => "+212612345678",
"body" => "Votre code de sécurité EnvoiSMS est 849301",
"sender" => "EnvoiSMS"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
]);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Erreur : ' . curl_error($ch);
} else {
$result = json_decode($response, true);
echo 'Message ID : ' . $result['id'];
}
curl_close($ch);
?>
DLR Webhooks والتحقق من صحة التوقيع HMAC SHA256
لتتبع دورة حياة رسائلك دون زيادة تحميل واجهة برمجة التطبيقات (API) بالطلبات المتكررة (الاقتراع)، يجب عليك تكوين خطاف ويب في وحدة التحكم الإدارية الخاصة بك. في كل مرة تتغير حالة الرسالة (تم التسليم، تم التسليم، فشلت)، ترسل بوابتنا حمولة JSON إلى الخادم الخاص بك. لتأمين نقطة النهاية هذه ضد هجمات سرقة الهوية، يقوم EnvoiSMS.ma بتوقيع كل حمولة بمفتاح سري مشترك. يجب أن يتحقق الخادم الخاص بك من صحة التوقيع الموجود في رأس HTTP "X-EnvoiSMS-Signature" عن طريق إعادة حساب HMAC-SHA256 لنص الطلب.
// Validation de signature en Node.js (Express)
const crypto = require('crypto');
const express = require('express');
const app = express();
const WEBHOOK_SECRET = 'votre_cle_secrete_partagee';
app.post('/webhook/envoisms', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.headers['x-envoisms-signature'];
const payload = req.body.toString();
const computedSignature = crypto
.createHmac('sha256', WEBHOOK_SECRET)
.update(payload)
.digest('hex');
if (computedSignature !== signature) {
return res.status(401).send('Signature invalide.');
}
const event = JSON.parse(payload);
console.log(`Statut du message ${event.messageId} : ${event.status}`);
res.status(200).send('Reçu.');
});
app.listen(3000);
إدارة قائمة الانتظار واسترداد الأخطاء (تحديد المعدل)
في مرحلة الإنتاج، قد تواجه خدماتك ذروات حركة مرور كثيفة أو عدم توفر مؤقت لبوابات المشغل. تطبق واجهة برمجة تطبيقات EnvoiSMS حدًا للسعر لكل رمز مميز للحفاظ على استقرار الخدمة. لتجنب خسائر الطلبات، قم بتنفيذ قائمة انتظار الرسائل (على سبيل المثال مع Redis وBullMQ في Node.js، أو قوائم انتظار RabbitMQ في PHP) وقم بتطبيق خوارزمية إعادة المحاولة الأسية (التراجع) مع الارتعاش العشوائي لتوزيع الحمل على المحاولات اللاحقة.
الامتثال لـ CNDP والاستضافة السيادية المحلية
تشكل معالجة أرقام الهواتف تلاعبا بالبيانات الشخصية الخاضعة للقانون 09-08 في المغرب. يضمن EnvoiSMS.ma الامتثال الكامل من خلال تشفير جميع بيانات المشتركين أثناء النقل (TLS 1.3) وفي حالة عدم النشاط (AES-256)، ومن خلال ضمان الاستضافة المحلية السيادية. يجب أن توفر جميع الاتصالات التسويقية أيضًا وسيلة لإلغاء الاشتراك (إلغاء الاشتراك عبر STOP SMS) للامتثال لمتطلبات CNDP.