إعادة تشغيل الجلسة

إعادة تشغيل محرك الواتساب وحل التعليق.

POST
https://api.wawp.net/v2/session/restart?access_token=YOUR_ACCESS_TOKEN&instance_id=Your_Instance_ID

تسجيل الدخول مطلوب

سجل الدخول لاستبدال المعرفات (Instance ID) ورمز الوصول (Access Token) بمعلومات حسابك الحقيقي لاختبار ال API مباشرة.

تسجيل الدخول
اختبار /v2/session/restart
POSTGET

لا توجد معاملات استعلام مطلوبة

هذه النهاية الطرفية لا تتوقع بيانات في الرابط.

توصيات

  • استخدم هذا الخيار كخطوة أولى لاستكشاف الأخطاء قبل حذف النسخة.

  • انتظر 30 ثانية على الأقل بعد إعادة التشغيل قبل إرسال الرسائل.

آلية الاستعادة الذاتية: إتقان نقطة النهاية /v2/session/restart

تعد نقطة النهاية /v2/session/restart أداة "إعادة التشغيل الناعم" (Soft Reboot) المتخصصة لنسخة واتساب الخاصة بك. في العالم المعقد لأتمتة واتساب - حيث يعد تذبذب الشبكة، وانقطاع اتصال WebSocket، وفقدان تزامن المحرك أمراً شائعاً - تعتبر استراتيجية إعادة التشغيل المنفذة جيداً هي الفارق بين تكامل هش ونظام اتصالات بمستوى المؤسسات.


تشريح عملية إعادة التشغيل

عند استدعاء restart، يقوم Wawp بتنفيذ تتابع ذري (Atomic) لعملية "إيقاف وتشغيل" داخل بنيتنا التحتية السحابية:

  1. إغلاق المحرك: يتم إرسال إشارة لعملية جسر واتساب النشطة لغلق اتصالاتها بشكل نظيف وحفظ حالة المصادقة الحالية في وحدة التخزين الدائمة.
  2. تطهير البيئة: يتم مسح الذاكرة المؤقتة (Caches) وذاكرة التخزين المؤقت للحاوية المعزولة لحل أي تسرب في الذاكرة أو عمليات معلقة.
  3. تشغيل المحرك: يتم إطلاق عملية جسر جديدة باستخدام مفاتيح المصادقة المحفوظة مسبقاً.
  4. الاستئناف: يحاول المحرك تلقائياً إعادة إنشاء المصافحة المشفرة مع خوادم واتساب.

أفضل الممارسات الاستراتيجية

1. نمط "الاستشفاء الآلي" (Auto-Healing)

لا تنتظر حتى يلاحظ العميل وجود مشكلة. يجب أن يراقب تطبيقك حالة تسليم الرسائل الصادرة.

  • سير عمل الاستعادة: إذا اكتشفت ثلاثة أخطاء متتالية في "فشل إرسال الرسالة" أو إذا أظهرت نقطة النهاية /v2/session/info حالة FAILED، فقم بتفعيل /v2/session/restart تلقائياً. إعادة تشغيل واحدة تحل ما يقرب من 85% من مشاكل الاتصال العابرة.

2. نافذة الاستقرار لمدة 30 ثانية

على الرغم من أن API تعيد رسالة نجاح (200 OK) بشكل فوري تقريباً، إلا أن المصافحة الداخلية تستغرق وقتاً.

  • إجراء المطور: نفذ "فترة هدوء" بعد إعادة التشغيل. نوصي بالانتظار لمدة 30 ثانية على الأقل قبل استئناف حملات الرسائل المؤتمتة عالية الكثافة. هذا يسمح للمحرك بمزامنة سجل الرسائل بالكامل واستقرار اتصال WebSocket.

3. تجنب "حلقة إعادة التشغيل" (Restart Loop)

من الأخطاء الشائعة إعادة تشغيل النسخة كل بضع ثوانٍ إذا كانت لا تعمل.

  • الحد المسموح: إذا لم تؤدِ إعادة التشغيل إلى نقل الجلسة لحالة WORKING خلال 60 ثانية، فلا تقم بإعادة التشغيل مرة أخرى فوراً. بدلاً من ذلك، افحص استجابة /v2/session/info. إذا أظهرت SCAN_QR_CODE، فهذا يعني أن المستخدم قد سجل خروجه من تطبيق الهاتف، ولن ينفع أي قدر من إعادة التشغيل - يجب عليهم مسح رمز QR مرة أخرى.

حالات استخدام معيارية

أ- "نبض" الصيانة

بالنسبة للبوتات الهامة (مثل أنظمة تنبيهات البنوك التي تعمل 24/7)، قم بجدولة إعادة تشغيل أسبوعية خلال فترات انخفاض حركة المرور (مثلاً: الأحد الساعة 3 فجراً). هذا يضمن تشغيل المحرك دائماً بموارد متجددة ويمسح أي تراكم لذاكرة المدى الطويل.

ب- المزامنة بعد التحديث

إذا قمت بتحديث إعدادات النسخة عالية المستوى (مثل تغيير رابط الويب هوك أو إضافة بروكسي جديد)، فإن restart هي أنظف طريقة لضمان تحديث كافة إعدادات المكتبة الأساسية وتطبيقها في كامل البيئة.


استكشاف الأخطاء وإصلاحها (Troubleshooting)

انقطاع الطوابير النشطة

تعمل إعادة التشغيل كـ "إيقاف قسري" لطابور الرسائل الداخلي. إذا كان لديك 500 رسالة قيد المعالجة للتسليم، فسيتم مسحها من الذاكرة المؤقتة. تأكد من أن منطق حملتك يمكنه التعامل مع "الاستئناف" من حيث توقف عن طريق تتبع معرفات الرسائل في قاعدة بياناتك الخاصة.

التعليق في حالة "STARTING" بعد إعادة التشغيل

يحدث هذا عادة بسبب تعارض مع العملية السابقة. انتظر 15 ثانية وجرب إعادة تشغيل واحدة أخرى. إذا استمرت المشكلة، استخدم أمر /v2/session/stop، انتظر 5 ثوانٍ، ثم استدعِ /v2/session/start لإعادة ضبط دورة الحياة بالكامل.


ملخص الوظائف:

  • تنفيذ إعادة تشغيل ذرية للمحرك المعزول.
  • حل 85% من مشاكل الاتصال وفقدان التزامن العابرة.
  • الحفاظ على جميع بيانات الجلسة وسجل مسح QR.
  • تحديث موارد الحاوية دون الحاجة لتفاعل المستخدم.

البارامترات

قم بتهيئة المعاملات المطلوبة للتفاعل مع نقطة النهاية هذه. جميع وسائط الاستعلام والبيانات مدرجة أدناه مع تفاصيلها.

محتوى الطلب

يرسل كـ JSON
string

معرف النسخة الفريد

مثال:
string

مفتاح الوصول

مثال:

أمثلة الكود

استخدم أمثلة الكود الجاهزة لدمج واجهة برمجة التطبيقات (API) في مشروعك بسرعة وكفاءة. اختر لغة البرمجة والمكتبة التي تفضلها.

1const baseUrl = "https://api.wawp.net";
2const endpoint = "/v2/session/restart";
3const params = new URLSearchParams({
4 "instance_id": "Your_Instance_ID",
5 "access_token": "YOUR_ACCESS_TOKEN"
6}).toString();
7
8
9fetch(`${baseUrl}${endpoint}${params ? '?' + params : ''}`, {
10 method: "POST",
11 headers: { "Content-Type": "application/json" },
12
13})
14 .then(async (response) => {
15 if (response.ok) {
16 const data = await response.json();
17 console.log("Success:", data);
18 return data;
19 }
20
21 // Error Handling
22 if (response.status === 400) {
23 console.error("Error 400: طلب غير صالح - معاملات مطلوبة مفقودة");
24 }
25 if (response.status === 400) {
26 console.error("Error 400: طلب غير صالح (تنسيق XML)");
27 }
28 if (response.status === 400) {
29 console.error("Error 400: طلب غير صالح (نص عادي)");
30 }
31 if (response.status === 401) {
32 console.error("Error 401: غير مصرح - مفتاح الوصول غير صالح أو مفقود");
33 }
34 if (response.status === 401) {
35 console.error("Error 401: غير مصرح (تنسيق XML)");
36 }
37 if (response.status === 404) {
38 console.error("Error 404: غير موجود - الجلسة غير موجودة");
39 }
40 if (response.status === 404) {
41 console.error("Error 404: غير موجود (تنسيق XML)");
42 }
43 if (response.status === 500) {
44 console.error("Error 500: خطأ في الخادم الداخلي - فشل غير متوقع");
45 }
46 if (response.status === 500) {
47 console.error("Error 500: خطأ في الخادم الداخلي (HTML)");
48 }
49 if (response.status === 502) {
50 console.error("Error 502: بوابة غير صالحة - فشل الاتصال بالخادم الرئيسي");
51 }
52 if (response.status === 502) {
53 console.error("Error 502: بوابة غير صالحة (تنسيق XML)");
54 }
55
56 const errorText = await response.text();
57 console.error(`Error ${response.status}: ${errorText}`);
58 })
59 .catch((error) => console.error("Network Error:", error));
عينات تفاعلية
Ln 59, Col 1javascript

الردود المتوقعة

استكشف كافة الردود والنتائج المحتملة من الخادم. قمنا بتوثيق كل كود حالة (Status Code) مع أمثلة للبيانات لتسهيل معالجة الأخطاء والنجاح.

Success - Reboot Initiated
النوع:
application/json
string *
string *
object *

Example

{
"name": "wawp-84729105",
"status": "STARTING",
"config": {
  "webhooks": {
    },
  "proxy": null
  }
}
طلب غير صالح - معاملات مطلوبة مفقودة
غير مصرح - مفتاح الوصول غير صالح أو مفقود
غير موجود - الجلسة غير موجودة
خطأ في الخادم الداخلي - فشل غير متوقع
بوابة غير صالحة - فشل الاتصال بالخادم الرئيسي
الموضوع السابقإيقاف الجلسة
الموضوع التاليتسجيل الخروج من الجلسة

Command Palette

Search for a command to run...