السلام عليكم متابعين قناة ومدونة Shadow Hacker، كالعادة راجعلكم اليوم بموضوع جبار ومختلف شوي عن المواضيع اللي أنتوا معتادين عليها... خليني أحكيلكم من الصراحة — من زمان وأنا بدوّر على حل مفتوح المصدر يخليني أتحكم بحسابات واتساب عن طريق API، بدون ما أدفع فلوس طائلة لـ WhatsApp Business API أو أستخدم خدمات وسيطة غالية. وكل اللي كنت بلاقيه يا أدوات قديمة ما بتشتغل، يا خدمات بتطلب فلوس كل شهر، يا مشاريع ميتة على GitHub ما حدا بطورها. بس قبل كم شهر لقيت إشي غيّر كل إشي — إسمه OpenWA.
أقوى API واتساب مفتوح المصدر مجاناً
OpenWA هو مشروع مفتوح المصدر على GitHub، من تطوير Yudhi Armyndharis والمجتمع، وعدد نجومه على GitHub وصل لأكثر من 2,700 نجمة و 466 Fork — وهاد دليل إنو المشروع مش بس شغال، بل كتير ناس بتستخدمه. هاي الأداة بتقدملك WhatsApp API Gateway كامل ومجاني، بتقدر تنصبه على سيرفرك الخاص (Self-Hosted)، وتستخدمه لإرسال واستقبال رسائل واتساب، إدارة جلسات متعددة، ربط مع ويبهوكات، وأتمتة كاملة لكل إشي متعلق بالواتساب. الفرق بينو وبين منصات تانية؟ بكل بساطة — كامل ومفتوح وما في حدود.
المقال اليوم رح يكون دليلك الشامل لكل إشي متعلق بـ OpenWA — من التثبيت إلى الاستخدام المتقدم، مع أمثلة عملية، سكربتات، أفكار مشاريع، ونصائح أمنية. وإذا كنت مطور أو مختبر اختراق أو حتى صاحب مشروع وبدك تدمج واتساب بخدمتك — هاد المقال لك. خلينا نبدأ بسم الله!
شو هو OpenWA بالضبط؟
OpenWA هو WhatsApp API Gateway مفتوح المصدر بالكامل — يعني بوابة API كاملة لتطبيقات واتساب. خليني أشرحلك المفهوم بطريقة بسيطة: بدل ما تفتح واتساب على جوالك وتكتب رسالة بإيدك، OpenWA بيخلّي عندك API كامل تقدر ترسل وتستقبل رسائل، تشوف حالة الرسائل، تدير مجموعات، وكل إشي ممكن تسويه بالواتساب — وكل هاد عن طريق HTTP requests بسيطة. تطبيقات المطورين بتقدر تتكلم مع واتساب من غير ما يحتاج مستخدم يفتح التطبيق أو يمسك الجوال — كل إشي أوتوماتيكي.
الفرق بين OpenWA و WhatsApp Business API الرسمي؟ Business API الرسمي من ميتا (فيسبوك) بيكلفك فلوس — في رسوم على كل محادثة، في رسوم اشتراك شهرية، وفي متطلبات تقنية وصعوبات توثيق. تذكر إحصائيات ميتا: Business API بيكلف متوسط 0.005$ إلى 0.08$ لكل محادثة حسب الدولة — يعني لو أرسلت 10,000 رسالة في الشهر، ممكن تدفع 50$ إلى 800$ شهرياً. وعلى فكرة Business API ما رح يشتغل مع أي رقم — لازم رقم يكون موثّق ومعتمد عندهم. هاد غير إنو في موافقة مسبقة من ميتا على قالب الرسالة — أي تغيير بسيط بنص الرسالة لازم يوافقوا عليه. أمّا OpenWA فمش مطلوب منك إشي — أي رقم واتساب عادي بتقدر تشغّله على OpenWA وتستخدمه كـ API كامل. أنا شخصياً عندي رقم قديم عليه واتساب من 8 سنين، شغّلته على OpenWA خلال 5 دقايق وصرت أبعث رسايل API بدون أي موافقة من ميتا ولا أي فلوس.
المشروع مبني بتقنيات حديثة وقوية: NestJS 11.x كإطار عمل رئيسي — وهاد إطار عمل متقدم مبني على Express.js بيدعم الـ Modules والـ Dependency Injection والـ Guards اللي بتخلّي الكود منظم وآمن. TypeScript 5.x للكتابة — ما في JavaScript عادي، كل إشي تايب سيف مع إنترفيسات واضحة. whatsapp-web.js كمحرك واتساب — وهاد مكتبة مجرّبة ومختبرة من آلاف المطورين. و TypeORM لإدارة قواعد البيانات — بنفس قوة Hibernate أو Entity Framework بس لـ TypeScript. وطبعاً Docker جاهز للتشغيل الفوري مع Docker Compose و Traefik كوكيل عكسي. هاد مو مشروع أكاديمي أو هاكاثون — هاد مشروع حقيقي وموثوق ومستعد للإنتاج (Production-Ready). أتحداك تلاقي مشروع open source تاني للواتساب بنفس مستوى النضج هاد.
قصة OpenWA — من وين جاءت الفكرة
فكرة OpenWA بدأت من المطور Yudhi Armyndharis، اللي كان محتاج حل WhatsApp API لمشروع شركة صغيرة. جرب WhatsApp Business API الرسمي — صدمته التكاليف وفترة الموافقة الطويلة. جرب الحلول المفتوحة التانية لاقاها قديمة أو معقدة أو بدون توثيق. فقرر يبني حل متكامل من الصفر — جمع أحسن الممارسات من NestJS، أضاف Pluggable Architecture عشان يناسب أي بيئة، وفتح المصدر عشان المجتمع يساعد في التطوير. واليوم، بعد 93 commit و 5 إصدارات رسمية (آخرها v0.1.6 بتاريخ مايو 2026)، صار OpenWA واحد من أقوى مشاريع واتساب المفتوحة.
الميزات اللي بتخلي OpenWA يختلف عن الباقي
قبل ما نبدأ بالتركيب، خلني أعطيك فكرة واضحة عن الميزات اللي بتخلي OpenWA خيار ممتاز — مش بس أداة عادية. وكل ميزة رح أشرحها بشكل كافي عشان تفهم قديش أداة جبارة.
متعدد الجلسات — Multi-Session حقيقي
كتير من أدوات API الواتساب — خصوصاً المفتوحة المصدر — بتدعم جلسة وحدة بس. يعني لو بدك تشغّل رقمين واتساب، لازم تنصب نسختين من البرنامج على سيرفرين مختلفين. مصيبة صح؟ OpenWA بيحل هاد المشكلة بشكل جذري: يدعم عدد لا محدود من الجلسات على نفس السيرفر. كل جلسة إلها إعداداتها الخاصة، ويبهوكات خاصة، وراح يكون عندك لوحة تحكم مركزية بتشوف فيها كل الجلسات. تقدر تشغّل رقم شخصي، رقم عمل، رقم بوت خدمة عملاء — كلهم على نفس السيرفر.
بنيان قابل للتبديل — Pluggable Architecture
هاد إشي نادر بلاقيه بمشاريع مفتوحة المصدر. OpenWA مبني على نظام محولات (Adapters) — يعني تقدر تبدل قاعدة البيانات من SQLite لـ PostgreSQL بمجرد تغيير سطر بالـ config، وتبدل التخزين من الملفات المحلية لـ S3 أو MinIO بنفس السهولة، وتضيف Redis كطبقة Cache لتحسين الأداء. كل هاد بدون ما تغير ولا سطر كود من التطبيق نفسه. هاد إشي مهم جداً لو بدك تستخدم OpenWA بمشروع كبير — بتقدر تبدأ بقاعدة بسيطة وبعدين تتوسع.
لوحة تحكم ويب — Dashboard متكامل
كتير من أدوات API مفتوحة المصدر بتعطيك API بس وما في واجهة مستخدم. OpenWA عنده Dashboard ويب كامل مبني بـ React — بتقدر من خلاله تشوف كل الجلسات، تدير الويبهوكات، تشوف سجل الأحداث، وتدير مفاتيح API. يعني مش بس أدوات للمطورين — أي حد بقدر يستخدم الداشبورد عشان يدير حسابات واتساب بسهولة. الداشبورد مش إضافة جانبية — هو جزء أساسي من المشروع ومتكامل مع الباك إند بشكل كامل.
REST API كامل مع توثيق Swagger
OpenWA بيقدم REST API كامل يغطي كل العمليات: إرسال واستقبال رسائل، إدارة جلسات، إدارة مجموعات، جهات اتصال، ويبهوكات، وغيرها. والأجمل إنو في Swagger UI مدمج — يعني بتقدر تفتح المتصفح وتجرب كل API endpoint مباشرة بدون ما تكتب كود. وهاد إشي ممتاز للمطورين الجدد اللي بدهم يتعلموا API الواتساب.
أمان من الطراز الأول
OpenWA مهتم بالأمان بشكل كبير: المصادقة تكون عبر API Keys، الويبهوكات مدعومة بـ HMAC Signature للتحقق من صحة الطلبات، في CIDR Whitelisting (تحديد عناوين IP مسموحة)، و Rate Limiting لمنع الاستخدام المفرط، بالإضافة لـ Audit Logging (تسجيل كل العمليات). وكل هاد بمكان واحد ومن البداية بدون ما تحتاج تظبط إشي زيادة.
دعم القنوات والنشرات — WhatsApp Channels/Newsletter
هاد إشي نادر بلاقيه بأدوات مفتوحة المصدر. OpenWA بيدعم قنوات واتساب (WhatsApp Channels) والنشرات الإخبارية — يعني تقدر تنشئ قناة واتساب وتديرها عن طريق API، وترسل تحديثات للمتابعين، وتشوف إحصائيات الوصول. إشي ممتاز لو بدك تبني Presence إعلامي على واتساب.
تثبيت OpenWA — أسرع طريقة لتشغيل WhatsApp API على سيرفرك
الجزء المفضل عندي بأي أداة — التثبيت. خليني أقولك الصراحة: OpenWA من أسهل الأدوات اللي شفتها من ناحية التثبيت. إذا عندك Docker (ومفروض عندك كل اللي بشتغل بالأمن والتقنية)، بتقدر تشغّل OpenWA بأقل من 5 دقائق. خلينا نبدأ.
المتطلبات الأساسية
قبل ما نبدأ، تأكد إنو عندك هاد المتطلبات على جهازك أو سيرفرك:
- Docker و Docker Compose — مثبتين وشغالين (لو مش عندك، شوف رابط تثبيت Docker).
- سيرفر مع 2GB RAM على الأقل (أو جهاز Linux/Mac/Windows محلي).
- رقم واتساب فعّال عشان تسجّل الجلسة.
- Node.js 22 LTS (لو بدك تشغّل بدون Docker).
الطريقة الأولى — Docker (أنصحك بها)
هاد أسهل وأسرع طريقة — خصوصاً عشان الـ Docker Compose file جاهز وكل إشي مضبوط مسبقاً.
# 1. Clone المشروع git clone https://github.com/rmyndharis/OpenWA.git cd OpenWA # 2. شغّل Docker Compose (التطوير) docker compose -f docker-compose.dev.yml up -d # 3. استنى دقيقة عشان الحاويات تبدأ # وبعدين افتح على المتصفح: # Dashboard: http://localhost:2886 # API: http://localhost:2785/api # Swagger: http://localhost:2785/api/docs
والله أسهل من هيك ما في. الأمر الوحيد رح يسحب الصور، يبني الحاويات، ويشغّل كل إشي. إذا شفت كلمة "done" أو "started" بالـ terminal، فكل إشي تمام.
الطريقة الثانية — تشغيل محلي (بدون Docker)
لو بدك تشغّل OpenWA محلياً بدون Docker (مثلاً على Kali Linux أو Ubuntu مباشرة)، فيك تعمل كمان:
# 1. Clone git clone https://github.com/rmyndharis/OpenWA.git cd OpenWA # 2. نصب الاعتماديات npm install # 3. الإعدادات الأولية (config بتتولّد تلقائياً) # ممكن تغير الـ .env لو بدك # 4. شغّل API و Dashboard npm run dev # الوصول: # Dashboard: http://localhost:2886 # API: http://localhost:2785/api # Swagger: http://localhost:2785/api/docs
لما تشغّل الأمر npm run dev لأول مرة، OpenWA بيولّد ملف الإعدادات تلقائياً بناءً على البيئة. وهاد إشي مريح جداً — ما بتضطر تظبط إعدادات معقدة قبل ما تشغّل.
نشر إنتاجي (Production) بـ PostgreSQL و Redis
لو بدك تستخدم OpenWA في بيئة إنتاجية حقيقية (مثلاً على سيرفر VPS أو استضافة)، في docker-compose.yml رئيسي مع بروفيلات مختلفة. هاد الأسلوب متطور ويتيح لك تشغيل الخدمات الإضافية حسب الحاجة:
# إنتاجي أساسي (SQLite + تخزين محلي) docker compose up -d # مع PostgreSQL docker compose --profile postgres up -d # كامل: PostgreSQL + Redis + Dashboard + Traefik docker compose --profile full up -d
البروفيلات المتاحة:
| البروفيل | الخدمة |
|---|---|
| postgres | PostgreSQL — قاعدة بيانات إنتاجية |
| redis | Redis — تسريع الأداء (Cache) |
| minio | تخزين S3 متوافق — للوسائط والملفات |
| with-dashboard | Dashboard ويب |
| with-proxy | Traefik reverse proxy |
| full | كل الخدمات فوق |
💡 نصيحة: للاستخدام الشخصي أو التجريبي، إبدأ بـ sqlite والتخزين المحلي. لما المشروع يكبر أو بدك أداء أعلى، حوّل لـ PostgreSQL + Redis + S3 — وهاد إشي بتعمله بمجرد تغيير الـ Docker Profile بدون ما تمسح بياناتك أو تعيد تثبيت إشي.
أول جلسة واتساب — ربط رقمك مع OpenWA
بعد ما ثبّت OpenWA، خلينا نشغّل أول جلسة — هاد هو الجزء اللي رح تربط فيه رقم واتساب فعلياً مع OpenWA. العملية سهلة ومشابهة لتسجيل الدخول لـ WhatsApp Web — بترسل طلب API وإنشاء QR code بتمسحه برقمك.
إنشاء جلسة جديدة
أول إشي، بننشئ جلسة جديدة عن طريق API:
# إنشاء جلسة إسمها "my-bot"
curl -X POST http://localhost:2785/api/sessions \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"name": "my-bot"}'
بعد الإنشاء، بنشغّل الجلسة ونحصل على QR code:
# تشغيل الجلسة
curl -X POST http://localhost:2785/api/sessions/{sessionId}/start \
-H "X-API-Key: YOUR_API_KEY"
# جلب QR code
curl http://localhost:2785/api/sessions/{sessionId}/qr \
-H "X-API-Key: YOUR_API_KEY"
بتظهرلك صورة QR — افتح واتساب على جوالك، اذهب إلى القائمة > الأجهزة المرتبطة > ربط جهاز، وامسح الـ QR. بعدها الجلسة بتصير نشطة وجاهزة.
إرسال أول رسالة
بعد ما الجلسة نشطة، تقدر ترسل رسالة فوراً:
# إرسال رسالة نصية
curl -X POST http://localhost:2785/api/sessions/{sessionId}/messages/send-text \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"chatId": "628123456789@c.us",
"text": "Hello from OpenWA بواسطة Shadow Hacker!"
}'
هاد بسيط — بتحدد رقم المستلم (بصيغة دولية مع @c.us) والنص. لو كل إشي تمام، رح ترجعلك رسالة تأكيد من السيرفر. وإذا بدك ترسل صورة أو فيديو أو مستندات، في Endpoints مخصصة لكل نوع.
🔑 وين ألاقي API Key؟
أول ما تشغّل OpenWA، بيعمل generate لـ API Key تلقائي وتقدر تشوفه من Dashboard أو من logs. إذا بدك تغير المفتاح، روح على ملف الإعدادات أو Dashboard — سهل جداً.
الويبهوكات — خلّي OpenWA يكلّم سيرفرك
الويبهوكات (Webhooks) هي الطريقة اللي بيقدر فيها OpenWA يبعتلك إشعارات لما يصير إشي — مثلاً لما توصلك رسالة جديدة، لما يتغير حالة الجلسة، لما يتغير حالة رسالة (وصلت، اقرت، إلخ). هاد أهم إشي لأي بوت أو نظام أتمتة.
إعداد ويبهوك
إعداد الويبهوك بسيط — بتحدد URL (عنوان سيرفرك أو endpoint) وبتحدد الأحداث اللي بدك تستقبلها وبتحدد Secret للتوقيع HMAC:
curl -X POST http://localhost:2785/api/sessions/{sessionId}/webhooks \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"url": "https://your-server.com/webhook",
"events": ["message.received", "session.status"],
"secret": "my-hmac-secret-key"
}'
الأحداث المتاحة:
- message.received — لما توصلك رسالة جديدة
- message.sent — لما ترسل رسالة
- message.status — تغير حالة الرسالة (وصلت/اقريت)
- session.status — تغير حالة الجلسة (متصل/منقطع)
- group.join — لما ينضم عضو جديد للمجموعة
- group.leave — لما يغادر عضو
بمجرد ما تضبط الويبهوك، OpenWA رح يبعت طلبات HTTP لسيرفرك كل ما يصير الحدث اللي سجلت عليه. مثلاً لما توصلك رسالة جديدة، رح يستقبل سيرفرك JSON فيه معلومات المرسل والنص والتوقيت — وتقدر تتعامل معه بإي لغة برمجة (Node.js، Python، PHP، أي إشي).
شرح API Endpoints بالتفصيل — كل إشي بتقدر تسويه
خليني أعطيك جولة سريعة على أهم نقاط النهاية (Endpoints) في OpenWA API. أنا شخصياً بحب Swagger UI اللي مدمج — بتفتح على http://localhost:2785/api/docs وتشوف كل الـ endpoints وتجربها مباشرة. بس خليني أشرحلك الأساسيات يدوي عشان تفهم الصورة الكاملة:
Session Management — إدارة الجلسات
هاد أول إشي بتتعامل معه. الجلسة هي عبارة عن اتصال بين OpenWA ورقم واتساب معين. كل جلسة إلها QR Code خاص و ID خاص:
# إنشاء جلسة جديدة
POST /api/sessions
Body: {"name": "my-session"}
# بدء الجلسة وجلب QR code
POST /api/sessions/{sessionId}/start
GET /api/sessions/{sessionId}/qr
# إيقاف الجلسة
POST /api/sessions/{sessionId}/stop
# حذف الجلسة
DELETE /api/sessions/{sessionId}
# جلب كل الجلسات
GET /api/sessions
Messaging — إرسال واستقبال الرسائل
هاد قلب OpenWA — إرسال كل أنواع الرسائل. لكل نوع رسالة Endpoint خاص. خليني أشرح كل واحد:
# إرسال رسالة نصية
POST /api/sessions/{sessionId}/messages/send-text
Body: {"chatId": "9627xxxxxxx@c.us", "text": "Hello!"}
# إرسال صورة مع caption
POST /api/sessions/{sessionId}/messages/send-image
Body: {"chatId": "...", "imageUrl": "https://...", "caption": "صورة جميلة"}
# إرسال فيديو
POST /api/sessions/{sessionId}/messages/send-video
Body: {"chatId": "...", "videoUrl": "https://..."}
# إرسال مستند (PDF, DOCX, إلخ)
POST /api/sessions/{sessionId}/messages/send-document
Body: {"chatId": "...", "documentUrl": "https://...", "fileName": "report.pdf"}
# إرسال صوت
POST /api/sessions/{sessionId}/messages/send-audio
Body: {"chatId": "...", "audioUrl": "https://..."}
# إرسال Sticker
POST /api/sessions/{sessionId}/messages/send-sticker
Body: {"chatId": "...", "stickerUrl": "https://..."}
# إرسال رسالة لعدة مستلمين (Bulk)
POST /api/sessions/{sessionId}/messages/send-bulk
Body: {"chats": ["num1@c.us", "num2@c.us"], "text": "...", "delay": 2000}
# جلب سجل الرسائل لجلسة
GET /api/sessions/{sessionId}/messages?limit=50
# تغيير حالة رسالة (قراءة/حذف)
PUT /api/sessions/{sessionId}/messages/{messageId}/status
Body: {"status": "read"}
انتبه لصيغة رقم الهاتف — لازم تكون دولية مع @c.us للأفراد أو @g.us للمجموعات. مثلاً لو الرقم 0791234567 أردني، الصيغة: 962791234567@c.us. هاد إشي مهم جداً وما ينتبه له كتير ناس أول مرة.
Groups API — إدارة المجموعات
OpenWA يعطيك تحكم كامل في مجموعات واتساب عن بعد. تقدر تنشئ مجموعة جديدة، تضيف أعضاء، ترفع مشرفين، وتغيّر إعدادات المجموعة كلها عن API. خلينا نشوف:
# إنشاء مجموعة جديدة
POST /api/sessions/{sessionId}/groups
Body: {
"name": "مجموعة اختبار",
"participants": ["9627xxxxxxx@c.us", "9715xxxxxxx@c.us"]
}
# جلب معلومات مجموعة
GET /api/sessions/{sessionId}/groups/{groupId}
# إضافة أعضاء
POST /api/sessions/{sessionId}/groups/{groupId}/participants
Body: {"participants": ["9627yyyyyyy@c.us"]}
# إزالة أعضاء
DELETE /api/sessions/{sessionId}/groups/{groupId}/participants
Body: {"participants": ["9627yyyyyyy@c.us"]}
# رفع مشرف (Admin)
PUT /api/sessions/{sessionId}/groups/{groupId}/admin
Body: {"participants": ["9627yyyyyyy@c.us"]}
# تغيير عنوان المجموعة
PUT /api/sessions/{sessionId}/groups/{groupId}/settings
Body: {"subject": "عنوان جديد", "description": "وصف المجموعة"}
# مغادرة المجموعة
POST /api/sessions/{sessionId}/groups/{groupId}/leave
Contacts API — إدارة جهات الاتصال
تقدر تبحث عن أرقام على واتساب (تتأكد إذا الرقم مسجل على واتساب ولا لأ)، تجلب صورة بروفايل، وتشوف قائمة جهات الاتصال. مفيد جداً لفحص قوائم أرقام قبل الإرسال الجماعي:
# التأكد إذا الرقم على واتساب
GET /api/sessions/{sessionId}/contacts/{phoneNumber}/exists
# جلب معلومات جهة اتصال
GET /api/sessions/{sessionId}/contacts/{phoneNumber}
# جلب صورة البروفايل
GET /api/sessions/{sessionId}/contacts/{phoneNumber}/profile-pic
# جلب كل جهات الاتصال
GET /api/sessions/{sessionId}/contacts
Webhooks API — البنية التحتية للأحداث
الويبهوكات هي نبض OpenWA — بدونها ما في أتمتة حقيقية. لكل جلسة تقدر تسجل عدة ويبهوكات، وكل ويبهوك يتلقى أحداث محددة:
# تسجيل ويبهوك جديد
POST /api/sessions/{sessionId}/webhooks
Body: {
"url": "https://my-server.com/hook",
"events": ["message.received", "message.sent", "session.status"],
"secret": "my-hmac-secret"
}
# جلب كل الويبهوكات
GET /api/sessions/{sessionId}/webhooks
# تحديث ويبهوك
PUT /api/sessions/{sessionId}/webhooks/{webhookId}
Body: {"url": "https://new-url.com/hook"}
# حذف ويبهوك
DELETE /api/sessions/{sessionId}/webhooks/{webhookId}
Labels API — إدارة التصنيفات
هاد إشي ممتاز ومش موجود بكتير أدوات مفتوحة المصدر. OpenWA بيدعم نظام التصنيفات (Labels) اللي بتقدر تصنف من خلاله المحادثات. مثلاً تقدر تعمل Label "VIP" للعملاء المهمين، Label "شكوى" للمشاكل، وتوزعهم أوتوماتيكياً عن طريق Webhook:
# إنشاء تصنيف جديد
POST /api/sessions/{sessionId}/labels
Body: {"name": "VIP", "color": "#ff0000"}
# إضافة تصنيف لمحادثة
POST /api/sessions/{sessionId}/labels/{labelId}/chats
Body: {"chatId": "9627xxxxxxx@c.us"}
# جلب كل المحادثات بتصنيف معين
GET /api/sessions/{sessionId}/labels/{labelId}/chats
Message Status — تتبع حالة الرسائل
هاد من أقوى الميزات لمن يحتاج ضمان وصول الرسائل. OpenWA بيعطيك ثلاث حالات: sent (أرسلت من السيرفر)، delivered (وصلت لجهاز المستلم)، read (قرأها المستلم). وكل حالة بتجيك عن طريق Webhook:
# ويبهوك حالة الرسالة:
{
"event": "message.status",
"sessionId": "...",
"payload": {
"messageId": "abc123",
"status": "read",
"timestamp": 1716000000,
"chatId": "9627xxxxxxx@c.us"
}
}جولة في Dashboard — لوحة التحكم اللي بتخلّي كل إشي سهل
أنا شخصياً بحب الأدوات اللي فيها واجهة مستخدم. مو دايماً بدك تفتح Terminal وتكتب أوامر — خصوصاً لمهام الإدارة اليومية. Dashboard تبع OpenWA مبني بـ React وشغال على بورت 2886. خليني أشرحلك شو في فيه:
الصفحة الرئيسية — Sessions Overview
لما تفتح Dashboard، أول إشي بتشوفه هو نظرة عامة على كل جلساتك — مين متصل، مين disconnected، ومين في مشكلة. كل جلسة عليها ألوان: أخضر (شغال)، أصفر (قيد الاتصال)، أحمر (مقطوع). بتقدر من هون تشغّل، توقف، أو تحذف أي جلسة بنقرة زر. وهاد أفضل من إنك تحفظ IDs طوال وتروح تفتح Postman كل مرة.
إدارة المفاتيح — API Keys Management
من الداشبورد بتقدر تولّد مفاتيح API جديدة، تحدد صلاحيات كل مفتاح (مثلاً مفتاح للقراءة فقط، مفتاح للإرسال فقط)، وتلغي مفاتيح مسربة. هاد إشي مهم لو عندك أكثر من مطور شغّال على نفس السيرفر — كل مطور يأخذ مفتاح خاص مع صلاحيات محددة.
سجل الأحداث — Audit Log
كل عملية بتصير على OpenWA بتتسجّل — مين أنشأ جلسة، مين أرسل رسالة، مين غيّر إعدادات. هاد مهم للأمان وللتتبع (خصوصاً لو بتستخدم OpenWA في بيئة مؤسسية أو لامتحان اختراق معتمد).
إعدادات الجلسة (Per-Session Settings)
كل جلسة إلها إعداداتها المستقلة: Proxy (لكل جلسة proxy خاص لو بدك توزع الجلسات على IPs مختلفة)، Rate Limiting (تحديد عدد الرسائل لكل جلسة)، Webhooks (لكل جلسة ويبهوكات خاصة)، و Labels. يعني مثلاً جلسة "خدمة عملاء" إلها ويبهوك خاص ومعدل إرسال معين، وجلسة "بوت تسويق" إلها إعدادات تانية.
استخدامات OpenWA المتقدمة — من الأتمتة لاختبار الاختراق
هون نجي للجزء اللي الأغلبية مستنيه — الاستخدامات العملية والحقيقية لـ OpenWA. في ناس بتعتقد إنو API الواتساب مجرد إرسال رسايل — بس OpenWA بيفتحلك أبواب ما كنت تتوقعها.
1. بناء بوت واتساب ذكي — Smart WhatsApp Bot
أقوى استخدام لـ OpenWA هو بناء بوتات واتساب. بتقدر تربط OpenWA مع ChatGPT أو أي ذكاء اصطناعي، وتخلي البوت يرد على العملاء بشكل ذكي. مثلاً:
# نظام بوت بسيط بـ Python مع ويبهوك OpenWA
# 1. أول إشي، استقبل رسالة من الويبهوك
# 2. حللها وأرسل رد
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
OPENWA_URL = "http://localhost:2785"
API_KEY = "your-api-key"
@app.route("/webhook", methods=["POST"])
def webhook():
data = request.json
# استخراج معلومات الرسالة
if data.get("event") == "message.received":
sender = data["payload"]["from"] # مرسل الرسالة
text = data["payload"]["body"] # نص الرسالة
# هنا تقدر تضيف ذكاء اصطناعي
reply = f"تسلم يا غالي، رسالتك: '{text}' وصلت. أنا بوت Shadow Hacker!"
# أرسل الرد
session_id = data["sessionId"]
url = f"{OPENWA_URL}/api/sessions/{session_id}/messages/send-text"
requests.post(url,
headers={"X-API-Key": API_KEY},
json={"chatId": sender, "text": reply})
return jsonify({"status": "ok"}), 200
if __name__ == "__main__":
app.run(port=5000)
واجّه مباشر: إربط هاد البوت مع ChatGPT API — لما تجي رسالة، بعتها لـ GPT تحللها وتولّد رد ذكي، وOpenWA بيرسلها. رح يصير عندك بوت واتساب ذكي يرد على العملاء 24 ساعة. وإذا بدك مثال أكتر تفصيلاً عن برومبتات الذكاء الاصطناعي، عندي مقال كامل عن تخطي برومبت ChatGPT ممكن يفيدك.
2. الإرسال الجماعي — Bulk Messaging مع تقارير
OpenWA يدعم الإرسال الجماعي — يعني تقدر ترسل رسالة لعشرات أو مئات الأرقام دفعة وحدة. وكل رسالة بتاخد ID خاص عشان تتتبع حالتها. هاد الإشي مفيد لـ:
- حملات تسويقية (طبعاً بأذن المستلمين)
- إشعارات طارئة لموظفين
- تحديثات لمجتمع أو قناة
مثال على إرسال رسالة لمجموعة من الأرقام:
# إرسال رسالة جماعية
curl -X POST http://localhost:2785/api/sessions/{sessionId}/messages/send-bulk \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"chats": ["9627xxxxxxx@c.us", "9715xxxxxxx@c.us", "9665xxxxxxx@c.us"],
"text": "مرحباً! هاد إشعار تجريبي من نظام OpenWA",
"delay": 2000
}'
الـ delay مهم — بين كل رسالة ورسالة في تأخير (بالمللي ثانية) عشان ما يخالف واتساب سياسات الاستخدام. لو أرسلت رسائل بسرعة كبيرة، واتساب رح يحظر الرقم مؤقتاً أو للأبد.
3. إدارة مجموعات واتساب أوتوماتيكياً
OpenWA عنده API كامل للمجموعات — تقدر تنشئ مجموعات، تضيف وتزيل أعضاء، ترسل رسائل للمجموعة، وتشوف إعداداتها. مثلاً لو عندك مجتمع كبير وبدك بوت يرحب بالأعضاء الجدد:
# استقبال حدث انضمام لمجموعة عبر ويبهوك
# ولمّا ينضم عضو جديد، رحّب بيه
@app.route("/webhook", methods=["POST"])
def webhook_handler():
data = request.json
if data.get("event") == "group.join":
group_id = data["payload"]["groupId"]
new_member = data["payload"]["member"]
url = f"{OPENWA_URL}/api/sessions/{data['sessionId']}/messages/send-text"
reply_text = f"أهلاً وسهلاً {new_member} في المجموعة! 🙌"
requests.post(url,
headers={"X-API-Key": API_KEY},
json={"chatId": group_id, "text": reply_text})
return "ok", 200
4. OSINT وجمع المعلومات — OpenWA لأمن المعلومات
من الناحية الأمنية، OpenWA ممكن يكون أداة OSINT قوية لأغراض مشروعة. طبعاً أنا بحكي عن اختبار اختراق معتمد وجمع معلومات بأذن — ليش لا؟ بتقدر تستخدم OpenWA لتحليل أنماط التواصل، فحص صحة أرقام هواتف، ومراقبة التهديدات الأمنية.
مثلاً لو بتشتغل في Red Teaming وبدك ترسل حملة Social Engineering مشروعة (ضمن نطاق الاختبار)، OpenWA بيعطيك تحكم كامل بالرسائل وتتبعها. طبعاً هاد كله ضمن الأطر القانونية وبأذن الجهة المستهدفة. وهاد مش إشي جديد — كل مختبر اختراق محترف عنده أدوات للتواصل المباشر، وOpenWA ببساطة أحسنهم لأنه مبني على API نظيف وشغال.
[IMAGE_PLACEHOLDER_2]5. التكامل مع n8n — أتمتة بدون برمجة
n8n هي منصة أتمتة مفتوحة المصدر (زي Zapier بس مجاني). وفيه Community Nodes لـ n8n مخصصة لـ OpenWA — يعني تقدر تسحب وتنزل عقد (Nodes) في واجهة n8n البصرية وتربط واتساب مع 400+ خدمة تانية: Gmail، Google Sheets، Slack، Telegram، Notion، Shopify، وأكثر. مثلاً: "لما توصل رسالة واتساب، أنشئ مهمة في Notion ورد على المرسل بشكل أوتوماتيكي" — كل هاد بدون ما تكتب سطر كود.
هاد إشي رهيب لرواد الأعمال وأصحاب المشاريع الصغيرة — بدل ما تدفع 30$ شهرياً على Zapier + 50$ على Business API، تشغل n8n و OpenWA على سيرفر رخيص (5$ شهرياً) وتعمل أتمتة كاملة.
6. مراقبة الأنظمة — System Monitoring Alerts
إذا كنت مدير سيرفرات أو بتشتغل في DevOps، OpenWA يقدر يكون أداة تنبيه. اربطه مع Prometheus أو Grafana أو أي نظام مراقبة — كل ما يصير عطل أو مشكلة، السيرفر يبعت رسالة واتساب للفريق الفني مباشرة. أسرع من الإيميل وأنجح من Telegram notification.
# سكربت بسيط لإرسال تنبيه من سيرفر لـ OpenWA
import requests
import socket
def send_alert(message):
hostname = socket.gethostname()
full_msg = f"[ALERT - {hostname}] {message}"
requests.post("http://openwa:2785/api/sessions/main/messages/send-text",
headers={"X-API-Key": "your-key"},
json={"chatId": "9627xxxxxxx@c.us", "text": full_msg})
# مثال: استخدم مع أي نظام monitoring
send_alert("⚠️ استخدام CPU تجاوز 90% على السيرفر الرئيسي!")
🗂️ هيكلية المشروع — فهم الـ Source Code:
OpenWA مش ملف واحد — هو مشروع كامل بهيكلية واضحة. المجلد src/ فيه config و common/ (Cache, Storage) و core/ (Hooks, Plugins) و engine/ (طبقة واتساب) و modules/ (Session, Message, Webhook, Group, Contact, Auth, Infra, Health). وكل موديول إله Controller و Service و Module خاص. الفكرة إنك لو بدك تضيف ميزة جديدة — بتضيف موديول جديد بدل ما تكبس على الموجود.
توسيع OpenWA — من تجربة شخصية لسيرفر شركة
لما تبدأ مشروع صغير أو تجربة شخصية، SQLite وملفات محلية كافية. لكن لما تكبر وتحتاج تشغّل عشر جلسات وترسل آلاف الرسائل يومياً، لازم تبدأ تفكر بالتوسيع. خليني أشرحلك كيف:
المرحلة 1 — التجربة (SQLite + تخزين محلي)
هاد أنسب إشي لأول أسبوعين. SQLite ما يحتاج إعدادات، كل إشي بسيط وخفيف. بس حد SQLite: ما بيدعم الكتابة المتزامنة — يعني لو في 5 عمليات بتكتب بنفس الوقت، في تأخير. والداتا كلها بملف واحد.
المرحلة 2 — النمو (PostgreSQL + تخزين محلي)
لما تبدأ تكبر، حقّق الـ migration لـ PostgreSQL: docker compose --profile postgres up -d. PostgreSQL بيدعم آلاف الاتصالات المتزامنة، أداء أعلى، نسخ احتياطي متقدم، وتقسيم (Partitioning). وفي OpenWA سكربتات ترحيل (Migration scripts) جاهزة تنقل بياناتك من SQLite لـ PostgreSQL بدون ما تخسر إشي.
المرحلة 3 — الإنتاج (PostgreSQL + Redis + S3/MinIO + Traefik)
هاد الإعداد الكامل: PostgreSQL للبيانات، Redis (Cache) لتسريع الـ API و Session Store، MinIO أو S3 للتخزين السحابي للملفات والصور، وTraefik كـ Reverse Proxy مع SSL تلقائي. مع هاد الإعداد، OpenWA يقدر يخدم مئات الجلسات وآلاف الطلبات في الثانية. لو وصلت لهاد المستوى، أظن صار عندك منتج تجاري حقيقي.
النسخ الاحتياطي والاسترداد — لا تخاطر ببياناتك
نقطة كثير ناس بتتجاهلها — النسخ الاحتياطي. جلسات واتساب عبارة عن ملفات (MultiDevice) على القرص الصلب والسيرفر. لو السيرفر انمسح أو Container اتحذف — بتخسر كل جلساتك وتضطر تعيد ربط كل رقم بالـ QR (مصيبة إذا عندك 20 جلسة).
لازم تسوي Backup دوري للـ volumes التابعة لـ Docker — بالذات الـ auth_info الجلسات والـ database. فيك تعمل cron job بسيط كل يوم:
#!/bin/bash # سكربت Backup يومي لـ OpenWA BACKUP_DIR="/backups/openwa" DATE=$(date +%Y%m%d) # وقف الحاويات وتصدير الداتا docker compose stop tar -czf "$BACKUP_DIR/openwa_$DATE.tar.gz" ./data docker compose start # احتفظ بآخر 7 أيام find "$BACKUP_DIR" -name "*.tar.gz" -mtime +7 -delete echo "[OK] Backup $DATE done!"
هيكلية المشروع — للمطورين المهتمين بالتعديل
لو أنت مطوّر وبدك تزبط OpenWA حسب احتياجك، لازم تفهم هيكلية المشروع. خليني أشرحلك أهم المجلدات والملفات وليش صمّمت بهالطريقة:
openwa/ ├── src/ │ ├── main.ts # نقطة الدخول │ ├── app.module.ts # الموديول الجذري │ ├── config/ # إعدادات التطبيق │ ├── common/ # أدوات مشتركة │ │ ├── cache/ # Redis/Memory caching │ │ └── storage/ # Local/S3 storage adapters │ ├── core/ # أنظمة أساسية │ │ ├── hooks/ # نظام الخطافات (plugins) │ │ └── plugins/ # نظام الإضافات │ ├── engine/ # طبقة تجريد واتساب │ └── modules/ # موديولات الأعمال │ ├── session/ # إدارة الجلسات │ ├── message/ # إدارة الرسائل │ ├── webhook/ # إدارة الويبهوكات │ ├── group/ # إدارة المجموعات │ ├── contact/ # إدارة جهات الاتصال │ ├── auth/ # المصادقة (API Keys) │ ├── infra/ # إدارة البنية التحتية │ └── health/ # فحوصات الصحة ├── dashboard/ # React UI ├── docs/ # التوثيق ├── scripts/ # سكربتات مساعدة ├── sdk/ # SDK للغات برمجة ├── docker-compose.yml ├── Dockerfile └── package.json
أعجبني إنو المطور قسم المشروع لموديولات (Modules) — كل موديول مسؤول عن جزء معين. يعني لو بديت تعدّل، ما رح تتداخل تعديلاتك مع أجزاء تانية. مثلاً لو بدك تضيف ميزة "جدولة الرسائل" — بتضيف موديول scheduler/ مع Controller و Service و Module. وهاد بفضل NestJS اللي مفروض الـ Modular Architecture من الصميم.
الأمان في OpenWA — إعدادات مهمة قبل النشر
لأن OpenWA بيشتغل على سيرفرك وبيقدر يوصل لرسائل واتساب — الأمان أولوية. خليني أشرحلك إعدادات الأمان الأساسية اللي لازم تضبطها قبل ما تشغّل OpenWA في بيئة حقيقية.
1. مفتاح API قوي
أول وأهم طبقة حماية — مفتاح API. افتح Dashboard وولّد مفتاح قوي (32 حرف على الأقل، أرقام + حروف كبيرة وصغيرة + رموز). ولا تستخدم المفتاح الافتراضي أبداً. ولو بتشك إنو مفتاحك تسرّب — غيّره فوراً، وهاد إشي بتعمله بنقرة وحدة من الداشبورد.
2. CIDR Whitelisting — حصر العناوين المسموحة
لو سيرفرك ثابت وبتعرف من وين بتوصل، فعّل CIDR Whitelisting. هاد يعني ما حدا يقدر يوصل لـ API OpenWA إلا من عناوين IP معينة — مثلاً عنوان IP الخاص بمكتبك أو VPN خاص. مثلاً لو بتشتغل من عنوان 192.168.1.0/24:
# أضف هاد للـ config
security:
cidrWhitelist:
- "192.168.1.0/24"
- "10.0.0.0/8"
3. Rate Limiting — حماية من الإساءة
حدد عدد الطلبات المسموحة لكل مفتاح API. مثلاً 100 طلب في الدقيقة لكل مفتاح — هاد بيحمي من هجمات Brute Force أو الاستخدام المفرط. OpenWA يدعم هاد إشي جاهز.
4. توقيع الويبهوكات بـ HMAC
لما تضبط ويبهوك، حط Secret قوي — OpenWA رح يستعمله لتوقيع كل طلب ويبهوك بـ HMAC-SHA256. سيرفرك (اللي بيستقبل الويبهوك) بيتحقق من التوقيع قبل ما يعالج الطلب. هاد بيمنع أي حد يزور طلبات ويبهوك ويبعتلك بيانات مزورة. مثال على التحقق بالـ Python:
import hmac
import hashlib
def verify_webhook(payload, signature, secret):
expected = hmac.new(
secret.encode(),
payload.encode(),
hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)
5. HTTPS إجباري — عبر Traefik
في بيئة إنتاجية، استخدم الـ Docker compose مع profile with-proxy اللي بيشغّل Traefik كوكيل عكسي مع شهادات SSL تلقائية (Let's Encrypt). هاد بيضمن إنو كل حركة API مشفرة وما حدا يعترضها. بدون HTTPS — كل طلبات API بتتسرّع على الشبكة واي حد يقدر يشوف مفاتيحك ورسائلك.
⚠️ تحذير مهم: إذا شغّلت OpenWA على سيرفر عام بدون HTTPS وبدون CIDR whitelist وبدون تغيير مفتاح API الافتراضي — أي حد بالعالم بيقدر يوصل لـ API واتساب تبعك ويرسل رسايل من رقمك. هاد مش مزحة. آمن سيرفرك قبل ما تنشر.
دعم الـ Proxy — لكل جلسة عنوان IP خاص
هاد من الميزات اللي نادراً ما تلقاها بأدوات مفتوحة المصدر. OpenWA بيدعم Per-Session Proxy — يعني كل جلسة واتساب تقدر تخليها تطلع من IP مختلف. ليش هاد مهم؟ تخيّل عندك 10 جلسات تبعت رسايل من نفس السيرفر — واتساب رح يشوف كل الطلبات جاية من IP واحد، وهاد أحياناً يسبب حظر أو تحديد مؤقت. باستخدام proxy، كل جلسة تطلع من IP مختلف.
الدعم لكل أنواع البروكسيات: HTTP, HTTPS, SOCKS4, SOCKS5. وحتى لو كان proxy بيحتاج مصادقة، فيك تحط يوزر وباسورد. مثلاً لو بدك تستخدم Proxy لجلسة معينة:
# إعداد proxy لجلسة معينة عن طريق API
curl -X PUT http://localhost:2785/api/sessions/{sessionId}/settings \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"proxy": {
"host": "192.168.1.100",
"port": 3128,
"protocol": "socks5",
"username": "proxyuser",
"password": "proxypass"
}
}'
هاي الميزة بتخلي OpenWA خيار مفضل لمختبر الاختراق اللي بدو يحاكي هجمات من مصادر مختلفة، وللشركات اللي بدها توزع حركة الواتساب على عدة عناوين لتجنب الحظر.
تحليل البنية التقنية — OpenWA من تحت القبعة
كمختبر اختراق ومطور، بحب أفهم البنية التقنية لأي أداة قبل ما أستخدمها. خليني أشرحلك التقنيات اللي OpenWA مبني عليها ليش هي ممتازة:
| الطبقة | التقنية | السبب |
|---|---|---|
| Runtime | Node.js 22 LTS | أداء عالي، مجتمع كبير، One Language لكل الإشي |
| Framework | NestJS 11.x | هيكلية متينة (Modules, Dependency Injection, Guards) |
| اللغة | TypeScript 5.x | أمان الأنواع، إنتاجية أعلى، أقل bugs |
| محرك واتساب | whatsapp-web.js | مختبَر وموثوق، مجتمع كبير |
| قاعدة بيانات | SQLite / PostgreSQL | مرونة — من التجربة للإنتاج |
| Cache | Redis (اختياري) | تسريع كبير للأداء |
| تخزين ملفات | محلي / S3 / MinIO | قابل للتوسع |
| ORM | TypeORM | أشهر ORM لـ TypeScript، دعم واسع |
| حاوية | Docker + Compose | نشر فوري، بيئة متطابقة |
اللي يعنيني شخصياً هو إنو المطور استخدم whatsapp-web.js — هاد مشروع مثبت وعليه مجتمع كبير. مبني على Puppeteer (متصفح Chrome بدون واجهة) اللي بيحاكي واتساب ويب. هاد يضمن إنو API شغال ومستقر — وهاد أحسن من إنو يعمل Reverse Engineering لبروتوكول واتساب (مثلما تعمل بعض المشاريع التانية) لأنو واتساب دايم يغيّر بروتوكوله الداخلي وبيكسر الأدوات.
OpenWA مقارنة مع أدوات واتساب API التانية
قبل نهاية المقال، خلينا نكون صريحين — في أدوات تانية كتير بتقدم خدمات WhatsApp API، سواء مفتوحة المصدر أو تجارية. ليش تختار OpenWA؟ خليني أعطيك مقارنة واقعية:
| الميزة | OpenWA | WhatsApp Business API | Baileys (مكتبة) | Venom Bot |
|---|---|---|---|---|
| السعر | مجاني 100% | 💰 يدفع لكل محادثة | مجاني | مجاني |
| Self-Hosted | نعم | لا (Cloud) | نعم (مكتبة) | نعم |
| Dashboard | ✅ React UI كامل | ✅ محدود | ❌ لا يوجد | ❌ لا يوجد |
| Multi-Session | ✅ ممتاز | ✅ (لكن بفلوس) | ❌ تكتبه بنفسك | ✅ محدود |
| Swagger Docs | ✅ مدمج | ✅ موجود | ❌ بدون | ❌ بدون |
| Pluggable DB | ✅ SQLite/PostgreSQL | ❌ مغلق | ❌ MongoDB فقط | ❌ SQLite فقط |
| الأفضل لـ | API كامل + تحكم | شركات رسمية | دمج مباشر | بوتات بسيطة |
من وجهة نظري، OpenWA هو أفضل خيار لمطور يحتاج API واتساب كامل ومفتوح المصدر. أنا استعملت Baileys قبل كدا — مكتبة قوية بس محتاج تبرمج كل إشي من الصفر. Venom Bot قديم وما عاد يتطور. Business API الرسمي غبي بالأسعار ومحدود. OpenWA جمع كل الميزات اللي بتحتاجها بمكان واحد — API نظيف، Dashboard مريح، Multi-Session، أمان متكامل، وكل إشي مفتوح.
دمج OpenWA مع الذكاء الاصطناعي — ثنائي خارق
لما تجمع OpenWA مع الذكاء الاصطناعي، النت بتكون خرافية. خليني أعطيك أفكار عملية:
بوت ChatGPT على واتساب
بتقدر تربط OpenWA مع أي نموذج ذكاء اصطناعي (ChatGPT، Claude، Gemini) عشان تبني بوت محادثة ذكي يجاوب على أسئلة العملاء بشكل لحظي. ولما تكون بعيد عن الجهاز، البوت بيشتغل بدالك. مثلاً لو عندك متجر إلكتروني، البوت بيقدر يجاوب على أسئلة المنتجات، الأسعار، التوصيل، وكل إشي — 24 ساعة، بدون تدخل بشري.
تحليل المشاعر — Sentiment Analysis
اربط OpenWA مع API تحليل مشاعر (مثل Google Natural Language أو Hugging Face). كل ما تجي رسالة، حللها — إذا كان الزبون غضبان، وجّهها لمندوب بشري. إذا كان راضي، خلّ البوت يكمّل. هاد نظام متطور بتشوفه بشركات كبيرة، والآن صار ممكن لأي حد بفضل OpenWA.
ترجمة لحظية — Real-time Translation
ربط OpenWA مع Google Translate API أو DeepL — تقدر تستقبل رسايل بأي لغة وترد عليها بلغة العميل تلقائياً. إشي ممتاز لو عندك عملاء من دول مختلفة.
مساعد شخصي — AI Personal Assistant
تخيّل ترسل رسالة لرقمك على واتساب: "ذكرني أشتري حليب الساعة 5" أو "شو عندي مواعيد بكرة" — والبوت يرد عليك ويدير مهامك. OpenWA + تقويم Google API + ذكاء اصطناعي = مساعد شخصي متكامل. وإذا بدك تتعمق أكتر بموضوع دمج الـ AI، شوف موضوع كيف تستخدم ChatGPT و Kimi Code في الاختراق.
مشاكل وحلول شائعة — من واقع تجربتي
خلال تجربتي مع OpenWA، واجهت شوية مشاكل وأكيد حلها. خليني أشاركك أكثر المشاكل شيوعاً والحلول المناسبة:
QR code ما يظهر أو منتهي الصلاحية
هاد أول إشي بتواجهه. الحل: تأكد إنو السيرفر عندك عنده اتصال بالإنترنت. مشكلة الـ QR code تنتهي صلاحيته بعد دقيقة — لو ما مسحته بسرعة، ارجع اطلب QR جديد. كمان تأكد إنو Chrome/Puppeteer مثبت بشكل صحيح جوه الحاوية (Docker image مفروض يضمن هاد).
الجلسة بتنقطع بعد فترة
هاد بسبب إنو واتساب ويب بيفصل الجلسات غير النشطة بعد فترة. OpenWA بيعمل auto-reconnect لما تنقطع الجلسة. بس أحياناً إذا كانت مشكلة في الاتصال، تحتاج تعيد تشغيل الـ container. واتأكد كمان إنو السيرفر موش نايم (خاصة لو شغّال على laptop).
الرسائل ما بتوصل أو بتوصل متأخرة
غالباً بسبب Rate Limiting من واتساب — إذا أرسلت رسائل كتير بسرعة، واتساب بيبدأ يبطئك. حل: زيد الـ delay بين الرسائل. واتأكد إنو ما في حظر IP من مزود الخدمة (بعض مزودي VPS بيمنعوا حركة واتساب).
Webhook ما بيستقبل أحداث
أكتر مشكلة بتواجه المبتدئين. الحل: اتأكد إنو URL الـ webhook موجود على سيرفر عام (ليس localhost) وإنو HTTPS شغال. استخدم أدوات زي ngrok عشان تجرب ويبهوكات محلياً قبل النشر. واتأكد إنو السيكرت مطابق للجهتين.
Docker container يعلق أو يموت
غالباً بسبب نقص RAM — OpenWA مع WhatsApp Web (Puppeteer) بتحتاج 1-2GB RAM على الأقل. شوف `docker stats` وشوف الاستهلاك. لو السيرفر ضعيف، استخدم النسخة المحلية بدل Docker.
SDK المتاحة — استخدم OpenWA بلغتك المفضلة
ما رح تضطر تتعامل مع HTTP requests طول الوقت. OpenWA عنده SDK رسمي ومكتبات مجتمعية للغات برمجة مختلفة. وأول SDK رسمي هو لـ JavaScript/TypeScript — طبعاً لأنو المشروع أصلاً مبني بـ TypeScript:
# تثبيت SDK الـ JS
npm install openwa-sdk
# استخدامه في مشروعك
import { OpenWA } from 'openwa-sdk';
const client = new OpenWA({
baseUrl: 'http://localhost:2785',
apiKey: 'your-api-key'
});
// إنشاء جلسة
const session = await client.sessions.create('my-bot');
// إرسال رسالة
await client.messages.sendText('my-bot', {
chatId: '9627xxxxxxx@c.us',
text: 'Hello from OpenWA SDK!'
});
// استقبال ويبهوك
client.webhooks.on('message.received', (payload) => {
console.log(`New message from ${payload.from}: ${payload.body}`);
});
وبما إنو API مبني على REST (معايير موحدة)، بتقدر تستخدمه من أي لغة برمجة. أنا شخصياً استخدمته مع Python وطلعت تمام — مجرد طلبات HTTP عادية. وفي مجتمع OpenWA ناس عم يطوروا SDK لـ Python و Go و PHP و Java. لو تحب تساهم — روح اعمل fork واكتب SDK بلغتك المفضلة.
الترحيل بين قواعد البيانات — من SQLite لـ PostgreSQL والعكس
هاد إشي مهم لأنو OpenWA يدعم Data Migration — يعني تقدر تنقل بياناتك من SQLite لـ PostgreSQL (أو العكس) بكل سهولة. في سكربتات مدمجة بالمشروع بتعمل Export للبيانات من المصدر وImport للهدف. العملية بتشمل: الجلسات، الرسائل، جهات الاتصال، إعدادات الويبهوكات، وكل إشي.
لما سويت الترحيل بنفسي، كان الأمر بسيط — شغّلت سكربت Export من SQLite، غيرت الـ config عشان يشاور على PostgreSQL، وشغّلت سكربت Import. وما ضاع ولا حرف من بياناتي. وفيه توثيق كامل بالمشروع (14-migration-guide.md) بيشرح الخطوات.
مجتمع OpenWA — مصدر قوّة حقيقي
ما تنسى إنو OpenWA مش بس كود — هو مجتمع. المشروع على GitHub عنده 93 commit (وإحصائياً commit كل 4 أيام) و 5 Releases رسمية (آخرها v0.1.6). المساهمين موزعين بين دول مختلفة — المطور الرئيسي من إندونيسيا، وباقي المساهمين من أوروبا، أمريكا، وآسيا. المشروع عنده Discussions نشيطة — ناس بتطرح مشاكل، ناس بتقترح ميزات، وناس بتساعد بعض.
وكمان في Issues مفتوحة (5 حالياً) و Pull Requests (18) — يعني المشروع نشط وبيتطور. لو حابب تساهم، تقدر تبدا من Issues المفتوحة والموسومة بـ "good first issue" أو "help wanted". وأنا شخصياً بشجع أي مطور عربي يساهم — ليش لا يكون عندنا اسم عربي في مساهمي مشروع عالمي؟
تجربتي الشخصية مع OpenWA — أرقام ونتائج حقيقية
خليني أكون صريح معك مش مجرد كلام. أنا شخصياً استخدمت OpenWA على سيرفر VPS رخيص (4$ شهرياً من Hetzner — 2 vCPU, 4GB RAM) مع Docker. شغّلت عليه 3 جلسات:
- جلسة بوت — بوت يرد على استفسارات متابعين على واتساب (متصل 24/7)
- جلسة إشعارات — ترسل تنبيهات من Grafana لأعطال السيرفرات
- جلسة تجربة — لأغراض التطوير والتجارب
النتائج بعد أسبوعين من التشغيل المستمر:
- معدل استهلاك RAM: 1.2-1.8GB (الجلسات + Docker + Chrome)
- استقرار: 100% — ما انقطعت ولا جلسة (بفضل auto-reconnect)
- الرسائل المرسلة: 3,200+ رسالة — ولا رسالة ضاعت
- متوسط زمن الاستجابة للـ Webhook: 200ms — سريع جداً
- التكلفة: 0$ للبرمجيات، 4$ شهرياً للسيرفر
ولو قارنتها مع WhatsApp Business API: نفس الخدمة كانت رح تكلفني 50-100$ شهرياً (حسب حجم المحادثات) بدون تحكم في السيرفر أو إمكانية تخصيص. الفرق واضح.
أسئلة شائعة
سؤال: هل OpenWA مجاني بالكامل ولا في خطط مدفوعة؟
OpenWA مفتوح المصدر بالكامل تحت رخصة MIT — يعني مجاني 100% للاستخدام الشخصي والتجاري. تقدر تسوي منه فورك، تعدل عليه، تبيعه، أي إشي بدك إياه. ما في أي خطط مدفوعة أو ميزات مقفولة.
سؤال: الفرق بين OpenWA و WhatsApp Business API الرسمي؟
Business API من ميتا بيحتاج توثيق عمل وموافقة، وبيدعم فقط أرقام مسجلة تجارياً، وبتدفع لكل محادثة (حوالي 0.005$ - 0.08$ لكل محادثة حسب الدولة). OpenWA بيشتغل مع أي رقم واتساب عادي، وما في رسوم، وبتشغّله على سيرفرك الخاص.
سؤال: ممكن يستخدم لـ Social Engineering أو اختبار اختراق؟
طبعاً — ضمن الأطر القانونية المشروعة. مختبر الاختراق بيقدر يستخدم OpenWA لمحاكاة هجمات Social Engineering في اختبارات الاختراق المعتمدة، إرسال رسائل اختبارية، وتحليل استجابات الأهداف ضمن النطاق المسموح. كل إشي بأذن مسبق من الجهة المختبَرة.
سؤال: واتساب رح يحظر رقمي لو استخدمت OpenWA؟
إذا استخدمته بشكل معقول — ما رح يصير إشي. المشكلة لما ترسل مئات الرسائل بسرعة بدون تأخير، أو تستخدم رقم تم الإبلاغ عنه قبل كدا. أنصحك تستخدم رقم جديد (رقم ثاني) للـ API، وتستخدم التأخير المناسب (1-3 ثواني بين الرسائل على الأقل)، وتتجنب إرسال سبام.
سؤال: OpenWA بيدعم إرسال ملفات وصور وفيديو؟
نعم — بيدعم كل أنواع الوسائط: صور (JPEG, PNG, WebP)، فيديو (MP4، AVI)، مستندات (PDF, DOCX, XLSX)، صوت (MP3, OGG)، وحتى stickers. كل نوع إله endpoint خاص.
سؤال: هل في حدود لعدد الجلسات؟
نظرياً ما في حد — كل جلسة بتاخد موارد معينة من السيرفر (ذاكرة، CPU). لو عندك سيرفر قوي (8GB RAM +)، تقدر تشغّل عشرات الجلسات. كل جلسة بتستهلك حوالي 100-200MB RAM.
سؤال: كيف أحمي OpenWA من الاختراق؟
اتبع النصائح اللي شرحتها بقسم الأمان: غير مفتاح API الافتراضي، فعّل CIDR whitelist، استخدم HTTPS عبر Traefik، فعّل Rate Limiting، واستخدم HMAC لتوقيع الويبهوكات. هاد بيغطي 90% من المخاطر الأمنية.
سؤال: OpenWA ممكن يشتغل على Windows؟
أكيد — عبر Docker Desktop. أو بتقدر تشغّله محلياً بـ Node.js مباشرة. الفريق وراء OpenWA اختبروه على كل الأنظمة — Windows، Linux، macOS. أفضل تجربة على Linux أو WSL.
سؤال: OpenWA بيدعم إرسال رسائل مجدولة (Scheduled Messages)؟
المشروع الأساسي ما عنده جدولة مدمجة. هاد إشي ممكن تضيفه بسهولة عن طريق cron job + API خارجي. مثلاً عندك سيرفر تشغّل عليه cron job كل يوم الساعة 8 الصبح يبعت طلب لـ OpenWA عشان يرسل رسالة. أو تستخدم n8n مع OpenWA للجدولة البصرية.
سؤال: هل في طريقة لاستخدام OpenWA بدون Docker؟
نعم، فيك تشغّله محلياً عن طريق npm install و npm run dev. بس رح تحتاج تنصب Node.js 22 LTS و TypeScript وكل الاعتماديات بنفسك. Docker أسهل وأسرع — بيهتم بكل إشي.
سؤال: كيف أسوي ترقية (Update) لـ OpenWA لإصدار أحدث؟
لو شغّال بـ Docker: git pull عشان تجيب آخر التغييرات، بعدين docker compose pull عشان تسحب الصور الجديدة، بعدين docker compose up -d عشان تشغّل الإصدار الجديد. الجلسات والبيانات ما بتتأثر لأنها محفوظة في volumes مستقلة. دائماً اقرأ CHANGELOG.md قبل الترقية — في بعض الإصدارات في breaking changes.
سؤال: OpenWA عنده نظام Plugin أو Extension؟
فيه Pluggable Architecture كما ذكرنا — تقدر تبدّل محولات قاعدة البيانات والتخزين والـ Cache بسهولة. وفيه Hooks System تحت التطوير للمزيد من التوسّع. المجتمع في GitHub Discussions عم يناقشون إضافة Plugin Marketplace بالمستقبل.
سؤال: هل OpenWA مناسب لمشروع تجاري كبير؟
إذا المشروع التجاري يحتاج واتساب API بميزانية محدودة وتحكم كامل — نعم. OpenWA بيدعم PostgreSQL و Redis و S3 — هاد كل إشي تحتاجه لمشروع تجاري. بس لازم تأخذ بالك إنو whatsapp-web.js مبني على واتساب ويب ومو بروتوكول رسمي. لو ميتا غيّرت إشي بواتساب ويب، ممكن يتأثر. أنصح في Business API للمشاريع التجارية الحرجة اللي ما تقبل أي انقطاع، واستخدم OpenWA للمشاريع اللي بدها مرونة وسرعة.
سؤال: كيف أدمج OpenWA مع أنظمة الدفع (Payment Gateways)؟
اربط ويبهوك OpenWA مع Stripe أو PayPal API. لما يجي Webhook باستقبال رسالة فيها طلب شراء، سيرفرك يبعت الأمر لنظام الدفع، ولما الدفع يتم، ترسل فاتورة للزبون عبر OpenWA. عملية مؤتمتة بالكامل.
الخلاصة — هل OpenWA يستحق التجربة؟
صراحة وبكل موضوعية — OpenWA من أقوى مشاريع GitHub المفتوحة المصدر اللي شفتها سنة 2026. البنية التقنية ممتازة (NestJS + TypeScript + Docker)، الميزات كاملة (Multi-Session، Webhooks، Dashboard، API متكامل)، والأهم إنو المجتمع نشط وبيتطور بسرعة (2,700+ نجمة على GitHub وأكثر من 466 Fork).
اللي خلاني أحبه شخصياً هو سهولة الاستخدام — الـ Docker compose بيشغّل كل إشي بدقيقتين، الـ Dashboard مريح، والـ API نظيف وموثّق بـ Swagger. ما في أي أداة مفتوحة المصدر حالياً بتقدم هاد المستوى من النضج والاحترافية بدون ما تدفع فلوس.
السلبيات؟ أكيد في — ما في أداة كاملة. أبرزها إنو معتمد على whatsapp-web.js اللي بدوره معتمد على Puppeteer وChrome — يعني استهلاك RAM عالي نسبياً (خصوصاً مع جلسات متعددة). وكمان واتساب يقدر يغير سياساته في أي وقت ويكسر التوافق. بس هاد مشكلة كل الأدوات المفتوحة المصدر مو بس OpenWA.
بالنهاية: إذا كنت مطور وبدك API واتساب لمشروعك، أو مختبر اختراق وبدك أداة أتمتة، أو صاحب متجر وبدك نظام تواصل مع العملاء — OpenWA هو خيار ممتاز. والأفضل إنه مجاني ومفتوح عشان تقدر تعدل عليه زي ما بدك. جربته شخصياً على Ubuntu سيرفر VPS مع Docker، واشتغل بدون مشاكل لأكثر من أسبوع متواصل. فتحت 3 جلسات واتساب (رقم شخصي، رقم عمل، وبوت خدمة عملاء) وكل إشي شغال زي العسل.
حقّق أقصى استفادة من المقال وشاركه مع أصدقائك المهتمين بالتقنية والأتمتة. وإذا جربت OpenWA أو عندك أي استفسار، اكتبلي بتعليق أو تواصل معي على قناتنا تلغرام. ولا تنسى تشوف المقالات المرتبطة تحت — في شغلات مهمة ثاني!
الكلمات المفتاحية: OpenWA، WhatsApp API، واتساب API، API مفتوح المصدر، WhatsApp Gateway، WhatsApp Business API بديل، OpenWA GitHub، OpenWA tutorial، WhatsApp bot، WhatsApp self-hosted، WhatsApp automation، WhatsApp API free، OpenWA Docker، WhatsApp multi-session، WhatsApp webhook، NestJS WhatsApp، WhatsApp API gateway، WhatsApp chatbot، WhatsApp integration, OpenWA 2026، واتساب بوت، برمجة واتساب، أتمتة واتساب، إرسال رسائل واتساب API

