← العودة للمقالات التقنية

حل مشكلة تعليق ويب هوك واتساب بزنس وحظر أرقام ميتا وتأخر رسائل OTP في المتاجر والأنظمة السعودية


المعمارية الهندسية لمنع تعليق ويب هوك واتساب السحابي وحماية أرقام الأعمال من الحظر وقت الحملات المليونية بالسعودية والخليج

الخلاصة التنفيذية (BLUF): وقت مواسم التسوق الكبرى في السعودية والإمارات (عروض اليوم الوطني، الجمعة البيضاء، ومواسم رمضان)، يؤدي تأخر وصول كود التحقق (WhatsApp OTP) لأكثر من 45 ثانية إلى انهيار معدل إتمام الطلبات (Checkout Drop-off). ربط الويب هوك مباشرة بمعالجات ثقيلة وقواعد البيانات يسبب تجاوز مهلة الـ 15 ثانية الخاصة بميتا، مما يدفع خوادم ميتا لتكرار إرسال الأحداث وتجميد السيرفر وانخفاض تصنيف الرقم من الأخضر (High Quality) إلى المقيد (Flagged). الحل الجذري هو الرد الفوري بـ HTTP 200 خلال أقل من 50 مللي ثانية مع تفريغ الأحداث في طوابير Redis BullMQ الموزعة وضبط معدل الإرسال (Rate Limiter) لحماية الرقم من الحظر.

أعراض المشكلة في بيئة الإنتاج وقت الحملات الكبرى

أثناء الضغط العالي في المتاجر السعودية (سلة، زد، منصات مستقلة)، تظهر الأعراض التالية:

  • تأخر رسائل التحقق OTP من دقيقة إلى 5 دقائق: يكرر العميل الضغط على "إعادة الإرسال"، مما يضاعف استهلاك الـ Rate Limit المسموح به لرقمك من ميتا.
  • أخطاء تعليق الويب هوك 504 Gateway Timeout: خوادم ميتا ترسل آلاف أحداث تحديث الحالة (`sent`, `delivered`, `read`) في الثانية الواحدة، وعند معالجتها مباشرة تتوقف خطوط المعالجة في السيرفر.
  • هبوط تقييم جودة الرقم التجاري (Quality Rating) إلى اللون الأحمر أو الأصفر: إرسال رسائل مكررة بسبب التأخير يدفع العملاء للإبلاغ عن الرقم كرسائل مزعجة (Spam Report)، فتقوم ميتا فوراً بتقليص سقف الرسائل اليومية من 100,000 إلى 250 رسالة فقط.

السبب الجذري للخلل التقني

تفرض شركة ميتا (Meta) قاعدة صارمة: يجب على خادم الويب هوك الخاص بك الرد بـ HTTP 200 OK خلال 15 ثانية كحد أقصى، ويفضل في أقل من 500ms. عندما يعالج الخادم الأحداث لحظياً (استعلام SQL، تحديث CRM، إرسال إشعار للمتجر)، تتعطل خيوط المعالجة ويحدث تسريب في الذاكرة (Memory Leak). وبمجرد فشل استجابة السيرفر، تبدأ ميتا بإعادة إرسال نفس الرسائل أضعافاً مضاعفة، فينهار خادم التطبيق تماماً.

المعمارية الهندسية والكود التنفيذي لحل المشكلة

لضمان استقرار الخادم وسرعة وصول الرسائل في أقل من ثانيتين لمشتركي STC وموبايلي وزين، نفصل استقبال الويب هوك عن التنفيذ عبر طابور مهام سريع:

import crypto from 'node:crypto';
import express, { Request, Response } from 'express';
import { Queue } from 'bullmq';

const app = express();
const otpQueue = new Queue('whatsapp-otp-priority', { connection: { host: '127.0.0.1', port: 6379 } });
const statusQueue = new Queue('whatsapp-status-events', { connection: { host: '127.0.0.1', port: 6379 } });

// فحص توقيع ميتا الأمني المشفر
function verifyMetaSignature(req: Request, appSecret: string): boolean {
  const signature = req.headers['x-hub-signature-256'] as string;
  if (!signature) return false;
  const hmac = crypto.createHmac('sha256', appSecret);
  const digest = 'sha256=' + hmac.update(req.body).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(digest));
}

// نقطة استقبال فائقة السرعة ترد بـ 200 فوراً دون انتظار أي معالجة داخلية
app.post('/api/webhooks/whatsapp', express.raw({ type: 'application/json' }), async (req: Request, res: Response) => {
  if (!verifyMetaSignature(req, process.env.META_APP_SECRET!)) {
    return res.status(403).send('Invalid Signature');
  }

  const payload = JSON.parse(req.body.toString());
  
  // رد فوري لخوادم ميتا لمنع تكرار الإرسال
  res.status(200).send('EVENT_RECEIVED');

  // فرز الأحداث وتوزيعها في طوابير Redis الموزعة حسب الأهمية
  const entry = payload.entry?.[0]?.changes?.[0]?.value;
  if (entry?.messages) {
    // رسائل وطلبات OTP تأخذ الأولوية القصوى رقم 1
    await otpQueue.add('otp_task', entry.messages[0], { priority: 1, attempts: 3 });
  } else if (entry?.statuses) {
    // إشعارات التسليم والقراءة توضع في طابور الخلفية ذي الأولوية 10
    await statusQueue.add('status_update', entry.statuses[0], { priority: 10, removeOnComplete: true });
  }
});

المؤشرات التقنية التي يجب مراقبتها في بروميثيوس وجرافانا

  • whatsapp_webhook_ack_duration_seconds < 0.05: زمن الرد على ويب هوك ميتا أقل من 50 مللي ثانية.
  • whatsapp_otp_p99_latency_seconds < 3.0: وصول كود التحقق لجوال العميل في أقل من 3 ثوانٍ.
  • whatsapp_phone_quality_rating == 1: حالة الرقم في Meta Business Manager خضراء (Green).

هل تواجه مشكلة تعليق رسائل واتساب أو خطر حظر الرقم التجاري في متجرك؟

أقدم استشارات هندسية وحلولاً تنفيذية فورية لربط Meta WhatsApp Cloud API، حماية جودة الأرقام من الحظر، وتسريع وصول رسائل OTP تحت أقصى ضغط حملات في الرياض ودبي وجدة.

استشارات هندسة البنية التحتية والأنظمة

هل تحتاج مهندس بنية تحتية أول لضبط أداء واستقرار خوادمك؟

من خوادم Kubernetes المستقلة ونظام Talos Linux إلى معالجة اختناقات PostgreSQL وحلول الذكاء الاصطناعي السيادي، أعمل مباشرة مع فرق الإنتاج لبناء بيئات تقنية متماسكة وعالية الاعتمادية.