تعيين رابط Webhook

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

POST
https://api.wawp.net/v2/webhook/set?access_token=YOUR_ACCESS_TOKEN&events=%5B%22message%22%2C+%22message.ack%22%2C+%22message.edited%22%5D&hmac=my-webhook-secret&instance_id=Your_Instance_ID&is_active=1&name=Production+CRM&retries=%7B%22delay%22%3A+2%2C+%22attempts%22%3A+15%7D&url=https%3A%2F%2Fmy-app.com%2Fwebhook

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

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

تسجيل الدخول
اختبار /v2/webhook/set
POST
POST

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

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

توصيات

  • اشترك فقط في الأحداث التي يحتاجها تطبيقك لتقليل استهلاك الباندويث والمعالجة.

  • استجب دائماً برمز HTTP 200 من نقطة Webhook الخاصة بك قبل معالجة الحدث في الخلفية.

  • استخدم سراً فريداً في باراميتر URL أو حقل hmac للتحقق من أن الطلبات قادمة من Wawp.

تعيين رابط Webhook: /v2/webhook/set

تتيح لك نقطة النهاية /v2/webhook/set تسجيل رابط Webhook واحد على نسخة الواتساب واختيار الأحداث التي سيستقبلها بشكل دقيق. إذا كان الرابط موجوداً مسبقاً، يتم تحديثه؛ وإذا لم يكن موجوداً، يتم إضافته لقائمة الروابط المرتبطة بالنسخة.

[!IMPORTANT] هذه الميزة متاحة حصرياً للمشتركين في الباقات المدفوعة (Unlimited). محاولة الوصول إليها من حساب مجاني ستُرجع خطأ 403 Forbidden مع رمز subscription_required.


🎯 متى تستخدم هذه النقطة؟

استخدم هذه النقطة عندما تريد:

  • ربط رابط خلفية جديد لاستقبال أحداث واتساب فورية.
  • تحديث رابط موجود دون المساس بالروابط الأخرى المرتبطة.
  • الاشتراك الانتقائي في فئات أحداث معينة لتقليل حمل السيرفر.

📦 جسم الطلب (Request Body)

  • url (مطلوب): رابط HTTPS متاح للعامة يقبل طلبات POST.
  • events (مطلوب): مصفوفة بأسماء الأحداث التي سيرسلها الـ Webhook.
  • is_active (اختياري): 1 لتفعيل الرابط أو 0 لتعطيله. الافتراضي 1.
  • retries (اختياري): كائن سياسة إعادة المحاولة يحتوي على delay (بالثواني) و attempts (عدد المحاولات). الافتراضي { delay: 2, attempts: 15 }.
  • hmac (اختياري): سلسلة سرية تُضاف إلى ترويسة X-Wawp-Signature للتحقق الأساسي.

🚀 الأحداث المتاحة

تتوافق هذه الأحداث مع الخيارات المتاحة في لوحة تحكم Wawp:

الفئةالأحداث
الرسائلmessage, message.any, message.ack, message.ack.group, message.waiting, message.revoked, message.edited, message.reaction, poll.vote, poll.vote.failed
المجموعاتgroup.join, group.leave, group.v2.join, group.v2.leave, group.v2.update, group.v2.participants
الجلسة والمكالماتsession.status, state.change, presence.update, chat.archive, call.received, call.accepted, call.rejected
التسمياتlabel.upsert, label.deleted, label.chat.added, label.chat.deleted
متقدمevent.response

📡 عينات الطلبات

cURL

curl -X POST "https://api.wawp.net/v2/webhook/set"   -H "Content-Type: application/json"   -d '{
    "access_token": "YOUR_ACCESS_TOKEN",
    "instance_id": "Your_Instance_ID",
    "url": "https://my-app.com/webhook",
    "name": "Production CRM",
    "events": ["message", "message.ack", "message.edited"],
    "is_active": 1,
    "retries": { "delay": 2, "attempts": 15 }
  }'

JavaScript (Fetch)

const res = await fetch('https://api.wawp.net/v2/webhook/set', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    access_token: 'YOUR_ACCESS_TOKEN',
    instance_id: 'Your_Instance_ID',
    url: 'https://my-app.com/webhook',
    events: ['message', 'message.ack', 'message.edited'],
    is_active: 1,
    retries: { delay: 2, attempts: 15 }
  })
});
const data = await res.json();
console.log(data);

🔁 ملاحظة حول Webhook النظام

إذا كان الـ url المُرسل يطابق Webhook النظام للنسخة (https://app.wawp.net/api/webhook/{token})، فسيتم مزامنة فلتر الأحداث أيضاً إلى قاعدة بيانات Wawp لكي تعكس لوحة التحكم والصندوق الوارد نفس الإعدادات.

البارامترات

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

محتوى الطلب

يرسل كـ JSON
string

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

مثال:
string

مفتاح الوصول الخاص بك

مثال:
string

رابط HTTPS عام يستقبل طلبات POST

مثال:
array

مصفوفة بأسماء الأحداث المراد الاشتراك فيها

مثال:
string

اسم عرضي اختياري للـ Webhook (مثلاً: 'Production CRM'، 'Staging Bot')

مثال:
number

1 لتفعيل الرابط، 0 لتعطيله. الافتراضي 1.

مثال:
object

سياسة إعادة المحاولة: delay بالثواني و attempts بعدد المحاولات

مثال:
string

مفتاح سري اختياري للتحقق من توقيع الطلبات

مثال:

أمثلة الكود

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

1const baseUrl = "https://api.wawp.net";
2const endpoint = "/v2/webhook/set";
3const params = new URLSearchParams({
4 "instance_id": "Your_Instance_ID",
5 "access_token": "YOUR_ACCESS_TOKEN"
6}).toString();
7const body = {
8 "url": "https://my-app.com/webhook",
9 "name": "Production CRM",
10 "events": [
11 "message",
12 "message.ack",
13 "message.edited"
14 ],
15 "is_active": "1",
16 "retries": {
17 "delay": 2,
18 "attempts": 15
19 },
20 "hmac": "my-webhook-secret"
21};
22
23fetch(`${baseUrl}${endpoint}${params ? '?' + params : ''}`, {
24 method: "POST",
25 headers: { "Content-Type": "application/json" },
26 body: JSON.stringify(body)
27})
28 .then(async (response) => {
29 if (response.ok) {
30 const data = await response.json();
31 console.log("Success:", data);
32 return data;
33 }
34
35 // Error Handling
36 if (response.status === 400) {
37 console.error("Error 400: طلب غير صالح - معاملات مطلوبة مفقودة");
38 }
39 if (response.status === 400) {
40 console.error("Error 400: طلب غير صالح (تنسيق XML)");
41 }
42 if (response.status === 400) {
43 console.error("Error 400: طلب غير صالح (نص عادي)");
44 }
45 if (response.status === 401) {
46 console.error("Error 401: غير مصرح - مفتاح الوصول غير صالح أو مفقود");
47 }
48 if (response.status === 401) {
49 console.error("Error 401: غير مصرح (تنسيق XML)");
50 }
51 if (response.status === 404) {
52 console.error("Error 404: غير موجود - الجلسة غير موجودة");
53 }
54 if (response.status === 404) {
55 console.error("Error 404: غير موجود (تنسيق XML)");
56 }
57 if (response.status === 500) {
58 console.error("Error 500: خطأ في الخادم الداخلي - فشل غير متوقع");
59 }
60 if (response.status === 500) {
61 console.error("Error 500: خطأ في الخادم الداخلي (HTML)");
62 }
63 if (response.status === 502) {
64 console.error("Error 502: بوابة غير صالحة - فشل الاتصال بالخادم الرئيسي");
65 }
66 if (response.status === 502) {
67 console.error("Error 502: بوابة غير صالحة (تنسيق XML)");
68 }
69
70 const errorText = await response.text();
71 console.error(`Error ${response.status}: ${errorText}`);
72 })
73 .catch((error) => console.error("Network Error:", error));
عينات تفاعلية
Ln 73, Col 1javascript

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

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

Success - Webhook Set or Updated
النوع:
application/json
string *
string *
object *

Example

{
"status": "success",
"message": "Webhook set successfully.",
"webhook": {
  "url": "https://my-app.com/webhook",
  "events": {
    "0": "message",
    "1": "message.ack",
    "2": "message.edited"
    },
  "is_active": 1,
  "enabled": true,
  "retries": {
    "delay": 2,
    "attempts": 15
    }
  }
}
طلب غير صالح - معاملات مطلوبة مفقودة
غير مصرح - مفتاح الوصول غير صالح أو مفقود
غير موجود - الجلسة غير موجودة
خطأ في الخادم الداخلي - فشل غير متوقع
بوابة غير صالحة - فشل الاتصال بالخادم الرئيسي
الموضوع السابقنظرة عامة على الويب هوك (Webhooks)
الموضوع التاليتحديث Webhook

Command Palette

Search for a command to run...