Webhooks أم polling في لوحة SMM: ما الذي ينبغي للوحة الفرعية استخدامه فعلاً؟
تطلب معظم واجهات SMM العامة منك الاستعلام عن الحالة. يوقّع NotPanel كل حدث. عند أتمتة لوحة فرعية، هذا هو الفرق بين cron وعقد واضح.

بعد تمرير الطلب، مهمة اللوحة الفرعية الوحيدة هي معرفة ما إذا اكتمل أو أصبح جزئياً أو استُرد أو فشل، من دون تخمين.
صفحة API العامة لـ JustAnotherPanel لا توثق webhooks الصادرة، وصفحة CheapSMMPanel لا تفعل ذلك أيضاً. التكامل المفترض هو استدعاء action=status حتى تتغير السلسلة.
تتضمن واجهة NotPanel v2 webhook.add وwebhook.list وwebhook.remove. كل تسليم يستخدم HMAC-SHA256 للجسم الخام، ويرتبط بختم زمني ويحمل حدثاً مسمى. هذا عقد، وليس لقطة لمفتاح في لوحة تحكم.
كيف تعرف لوحتك الفرعية أن الطلب اكتمل؟
اختر خيارًا. يُحفظ على هذا الجهاز فقط — ليست استطلاعًا مختلقًا.
Polling حلقة. Webhook حدث.
لماذا لا يُعد POST بلا توقيع webhook؟

عنوان webhook عام بطبيعته. من دون توقيع، يستطيع أي شخص يخمّنه إخبار نظامك بأن الطلب اكتمل. نوقّع الجسم الخام، ونرفق X-NotPanel-Signature وX-NotPanel-Timestamp وX-NotPanel-Event، ونرفض التسليم الأقدم من خمس دقائق. لا نسجل العناوين الخاصة أو المحلية.
التسليم يتم مرة واحدة على الأقل. لذلك يجب أن يكون المعالج idempotent. لا ندّعي التسليم مرة واحدة بالضبط؛ لا يفعل ذلك من يتحدث بصدق عن الشبكات. وصف التحقق موجود في دليل HMAC.
متى يظل polling صحيحاً؟
- تستخدم لوحة لا تملك توثيقاً لـ webhooks. وهذا ينطبق على معظمها.
- تحتاج إلى مسار بديل أثناء توقف endpoint الخاص بالـ webhook.
- تجري مطابقة لدفعة: استخدم orders= لما يصل إلى 100 معرّف، لا استدعاء لكل صف.
احترم X-RateLimit-Reset عند 429. لا تنشر JAP وCheapSMM هذه الترويسات؛ ستعرف أنك وصلت للحد عندما تُحظر. تسرد صفحة حدود الطلبات لدينا الطبقات الثلاث.
يسأل polling: «هل حدث شيء؟» ويقول webhook الموقّع: «حدث هذا، ويمكنك إثبات أننا نحن».
هذا هو عقد الأتمتة
اللوحة الفرعية التي تشير إلى صفحة /api منسوخة هي حلقة polling مبنية على الأمل. أما التي تشير إلى NotPanel فتستطيع تسجيل عنوان HTTPS واختيار الأحداث ولا تخصم أو تضيف في النظام اللاحق إلا بعد التحقق من التوقيع.
هذا ليس إحساساً بأن «لدينا ميزات أكثر». إنها قائمة قصيرة يمكنك فتحها بلا حساب: webhooks والأخطاء وadd idempotent والمقارنة. واجهة جديدة بعقد أقدم من النسخة المصورة.
action=webhook.add&url=https://your-server.example.com/notpanel-webhook&events=order.completed,order.refunded,balance.low
اربط هذا مع مقال إعادة المحاولة بعد timeout التي تفرض رسوماً مرتين . إعادة المحاولات والأحداث هما المكانان اللذان تتسرب فيهما الأموال من الواجهات المنسوخة.
الأسئلة الشائعة
هل أستخدم polling أم webhooks في لوحة SMM؟
استخدم webhooks الموقعة كمسار أساسي واحتفظ بـ polling بطيء متعدد الحالات كخطة بديلة. استخدم polling فقط عندما لا تحتوي وثائق اللوحة العامة على قسم webhooks، وهذا حال معظمها.
هل لدى JustAnotherPanel وCheapSMMPanel webhooks؟
لا تظهر في صفحات API العامة التي ينشرانها. كلاهما يوثق action=status؛ وإذا أضيفت لاحقاً فهي ليست ضمن العقد العام في تلك الصفحات.
ما أفضل لوحة SMM لأتمتة الموزع؟
التي تغطي دورة الموزع: add idempotent وأحداث الإكمال والاسترداد الموقعة، وأكواد HTTP حقيقية وحدود موثقة. حجم الكتالوج تصنيف مختلف.
هل webhooks غير الموقعة آمنة؟
لا. العنوان عام وأي شخص يخمّنه يستطيع تزوير الإكمال. اطلب HMAC للجسم الخام ونافذة زمنية ومقارنة بزمن ثابت.
هل يَعِد NotPanel بالتسليم مرة واحدة بالضبط؟
لا. التسليم مرة واحدة على الأقل، ويجب أن يكون المعالج idempotent. التسليم مرة واحدة بالضبط عبر الإنترنت العام ليس وعداً صادقاً.