أتمتة الإشعارات باستخدام بوتات المراسلة تجعل سير عمل التطوير أسرع وأكثر كفاءة. ستحصل على تنبيهات فورية عند اكتمال عمليات البناء، أو حدوث أخطاء، أو إتمام عمليات النشر. يوضح هذا الدليل كيفية إعداد بوتات ترسل رسائل آلية عبر webhooks على منصات المراسلة الشائعة. هل تحتاج إلى إشعار فريقك بنتائج CI/CD، أو تنبيهات الخادم، أو اكتمال العمليات؟ هذه التكاملات تجعل الأمر بسيطاً. نغطي هنا فقط المنصات التي تدعم البوتات بشكل مباشر. بعض تطبيقات المراسلة الآمنة تضع الخصوصية في المقام الأول ولا تدعم الأتمتة - وهذه مدرجة بشكل منفصل.
جدول المحتويات
- فهم أتمتة البوتات المبنية على Webhook
- أدلة تكامل بوتات المراسلة
- بوت Discord عبر Webhook
- بوت Slack عبر Webhook
- بوت Microsoft Teams عبر Webhook
- بوت Telegram
- بوت Mattermost عبر Webhook
- بوت Matrix/Element
- بوت WhatsApp Business
- بوت Facebook Messenger
- تطبيقات المراسلة بدون دعم سهل للبوتات
- مثال تطبيقي عملي
- الخلاصة
- الأسئلة الشائعة
فهم أتمتة البوتات المبنية على Webhook
تعمل البوتات المبنية على webhook وفق فكرة بسيطة: يرسل تطبيقك طلب HTTP POST إلى رابط URL معين، ثم تقوم منصة المراسلة بتسليم ذلك المحتوى إلى قناة أو مستخدم محدد.
يناسب هذا الأسلوب كثيراً من مهام الأتمتة:
- إشعارات البناء - تنبيه عند نجاح أو فشل عملية البناء مع تفاصيل الأخطاء
- تحديثات النشر - إخطار الفرق عند وصول الكود إلى بيئة الاختبار أو الإنتاج
- تنبيهات المراقبة - إرسال تحذيرات بشأن صحة الخادم أو انقطاع الخدمة
- التقارير المجدولة - تسليم ملخصات يومية للمقاييس أو حالة النظام
يتكون سير العمل الأساسي من ثلاث خطوات:
- إنشاء بوت أو رابط webhook على المنصة المستهدفة
- إعداد أداة الأتمتة (CI/CD أو نظام المراقبة أو سكريبت مخصص) لإرسال طلبات HTTP
- تنسيق payload الرسالة بما يتوافق مع متطلبات المنصة
يعتمد اختيار المنصة المناسبة أيضاً على ميزاتها الأمنية. لاطلاع أعمق على أمان المنصات، راجع الدليل الشامل لتطبيقات المراسلة في 2026.
أدلة تكامل بوتات المراسلة
فيما يلي أدلة خطوة بخطوة لكل منصة تدعم تكامل البوتات عبر webhook بشكل سهل ومباشر.
بوت Discord عبر Webhook
يتميز Discord بأحد أبسط إعدادات webhook. لا تحتاج إلى تطبيق بوت أو رموز مصادقة لإرسال الرسائل الأساسية.
الإعداد خطوة بخطوة
- فتح إعدادات السيرفر - انقر بزر الماوس الأيمن على اسم السيرفر واختر "Server Settings"
- الانتقال إلى التكاملات - انقر على "Integrations" في الشريط الجانبي الأيسر
- إنشاء Webhook - انقر على "Webhooks" ثم "New Webhook"
- ضبط إعدادات Webhook - أدخل اسماً للـ webhook (مثلاً "Build Bot")، واختر القناة، وأضف صورة رمزية اختيارياً
- نسخ رابط Webhook - انقر على "Copy Webhook URL" واحفظه في مكان آمن
إرسال الرسائل عبر Webhook
curl -X POST -H "Content-Type: application/json" \
-d '{"content": "✅ Build completed successfully!\n\nProject: MyApp\nBranch: main\nDuration: 3m 42s"}' \
https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN
مثال على Embed غني لإشعارات الأخطاء
curl -X POST -H "Content-Type: application/json" \
-d '{
"embeds": [{
"title": "❌ Build Failed",
"color": 15158332,
"fields": [
{"name": "Project", "value": "MyApp", "inline": true},
{"name": "Branch", "value": "feature/login", "inline": true},
{"name": "Error", "value": "```TypeError: Cannot read property of undefined```"}
],
"timestamp": "2026-01-15T10:30:00.000Z"
}]
}' \
YOUR_WEBHOOK_URL
التوثيق الرسمي: توثيق Discord Webhook
بوت Slack عبر Webhook
يستخدم Slack نظام Incoming Webhooks كجزء من منظومة Slack Apps. يدعم تنسيق رسائل غني ومرونة في استهداف القنوات.
الإعداد خطوة بخطوة
- إنشاء تطبيق Slack - اذهب إلى api.slack.com/apps وانقر على "Create New App"
- اختيار طريقة الإنشاء - اختر "From scratch" وأدخل اسماً للتطبيق (مثلاً "CI/CD Notifications")
- تفعيل Incoming Webhooks - اذهب إلى "Incoming Webhooks" في الشريط الجانبي وقم بتشغيله
- إضافة Webhook إلى مساحة العمل - انقر على "Add New Webhook to Workspace"
- اختيار القناة - حدد القناة المخصصة للإشعارات وانقر على "Allow"
- نسخ رابط Webhook - سيظهر رابط الـ webhook الخاص بك على الشاشة
إرسال الرسائل عبر Webhook
curl -X POST -H "Content-Type: application/json" \
-d '{"text": "✅ Deployment to production completed successfully!"}' \
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX
رسالة Block Kit للإشعارات التفصيلية
curl -X POST -H "Content-Type: application/json" \
-d '{
"blocks": [
{
"type": "header",
"text": {"type": "plain_text", "text": "🚨 Build Failed"}
},
{
"type": "section",
"fields": [
{"type": "mrkdwn", "text": "*Project:*\nMyApp"},
{"type": "mrkdwn", "text": "*Branch:*\nmain"},
{"type": "mrkdwn", "text": "*Error:*\n`Module not found`"}
]
}
]
}' \
YOUR_WEBHOOK_URL
التوثيق الرسمي: دليل Slack Incoming Webhooks
بوت Microsoft Teams عبر Webhook
يدعم Microsoft Teams نظام Incoming Webhooks لإشعارات القنوات، ويتم إعدادها من خلال نظام الموصلات (connectors).
الإعداد خطوة بخطوة
- فتح إعدادات القناة - اذهب إلى القناة المستهدفة وانقر على النقاط الثلاث (•••) بجانب اسم القناة
- اختيار الموصلات - انقر على "Connectors" (أو "Manage channel" ثم "Connectors" في الإصدارات الأحدث)
- البحث عن Incoming Webhook - ابحث عن "Incoming Webhook" وانقر على "Configure"
- تسمية الـ Webhook - أدخل اسماً (مثلاً "Build Alerts") وارفع صورة اختيارياً
- الإنشاء ونسخ الرابط - انقر على "Create" وانسخ رابط الـ webhook
إرسال الرسائل عبر Webhook
curl -X POST -H "Content-Type: application/json" \
-d '{"text": "✅ Build #1234 completed successfully on main branch"}' \
YOUR_TEAMS_WEBHOOK_URL
Adaptive Card للإشعارات الغنية
curl -X POST -H "Content-Type: application/json" \
-d '{
"type": "message",
"attachments": [{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{"type": "TextBlock", "size": "Large", "weight": "Bolder", "text": "❌ Build Failed"},
{"type": "FactSet", "facts": [
{"title": "Project:", "value": "MyApp"},
{"title": "Error:", "value": "Compilation failed"}
]}
]
}
}]
}' \
YOUR_TEAMS_WEBHOOK_URL
التوثيق الرسمي: Microsoft Teams Incoming Webhooks
بوت Telegram
يمتلك Telegram Bot API قوياً لإرسال الرسائل برمجياً. بدلاً من رابط webhook، ترسل الطلبات مباشرة إلى API الخاص بـ Telegram.
الإعداد خطوة بخطوة
- إنشاء بوت عبر BotFather - افتح Telegram وابحث عن
@BotFather - بدء بوت جديد - أرسل الأمر
/newbot - تسمية البوت - اتبع التعليمات لتحديد اسم العرض واسم المستخدم (يجب أن ينتهي بـ "bot")
- حفظ رمز API - سيمنحك BotFather رمزاً بهذا الشكل:
123456789:ABCdefGHIjklMNOpqrsTUVwxyz - الحصول على معرف المحادثة - أضف البوت إلى مجموعتك أو قناتك، أرسل رسالة، ثم زر
https://api.telegram.org/bot<TOKEN>/getUpdatesللعثور على معرف المحادثة
إرسال الرسائل عبر Bot API
curl -X POST \
"https://api.telegram.org/bot/sendMessage" \
-d "chat_id=" \
-d "text=✅ Build completed successfully!%0A%0AProject: MyApp%0ABranch: main" \
-d "parse_mode=HTML"
رسالة منسقة بـ HTML
curl -X POST \
"https://api.telegram.org/bot/sendMessage" \
-H "Content-Type: application/json" \
-d '{
"chat_id": "",
"text": "❌ Build Failed\n\nProject: MyApp\nBranch: main\nError: Module not found",
"parse_mode": "HTML"
}'
التوثيق الرسمي: Telegram Bot API
بوت Mattermost عبر Webhook
Mattermost هو بديل مفتوح المصدر لـ Slack. يوفر دعماً قوياً للـ webhook ويعمل بشكل ممتاز للتواصل الجماعي على الخوادم الذاتية.
الإعداد خطوة بخطوة
- الوصول إلى التكاملات - انقر على قائمة الهامبرغر، ثم "Integrations"
- إنشاء Incoming Webhook - اختر "Incoming Webhooks" ثم "Add Incoming Webhook"
- ضبط إعدادات Webhook - حدد عنواناً ووصفاً وقناة افتراضية
- الحفظ ونسخ الرابط - انقر على "Save" وانسخ رابط الـ webhook
إرسال الرسائل عبر Webhook
curl -X POST -H "Content-Type: application/json" \
-d '{"text": "✅ Build completed successfully!"}' \
https://your-mattermost-server.com/hooks/YOUR_WEBHOOK_ID
رسالة مع مرفق غني
curl -X POST -H "Content-Type: application/json" \
-d '{
"attachments": [{
"fallback": "Build Failed",
"color": "#FF0000",
"title": "❌ Build Failed",
"fields": [
{"short": true, "title": "Project", "value": "MyApp"},
{"short": true, "title": "Branch", "value": "main"},
{"short": false, "title": "Error", "value": "```Module not found```"}
]
}]
}' \
YOUR_WEBHOOK_URL
التوثيق الرسمي: Mattermost Incoming Webhooks
بوت Matrix/Element
Matrix هو بروتوكول مفتوح للتواصل اللامركزي. Element هو أشهر عميل له. لتكامل البوت، تستخدم Matrix Client-Server API.
الإعداد خطوة بخطوة
- إنشاء حساب البوت - سجل حساباً جديداً على Matrix مخصصاً للبوت على الخادم الخاص بك أو على matrix.org
- الحصول على رمز الوصول - سجل الدخول وابحث عن رمز الوصول في Element: الإعدادات - المساعدة والمعلومات - متقدم - رمز الوصول
- الحصول على معرف الغرفة - انضم إلى الغرفة المستهدفة بحساب البوت، ثم ابحث عن معرف الغرفة في إعدادات الغرفة - متقدم
- دعوة البوت إلى الغرفة - تأكد من أن حساب البوت قد انضم إلى الغرفة التي سيرسل فيها الرسائل
إرسال الرسائل عبر Matrix API
curl -X PUT \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"msgtype": "m.text", "body": "✅ Build completed successfully!"}' \
"https://matrix.org/_matrix/client/r0/rooms/YOUR_ROOM_ID/send/m.room.message/$(date +%s)"
رسالة منسقة بـ HTML
curl -X PUT \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"msgtype": "m.text",
"body": "Build Failed\nProject: MyApp\nError: Module not found",
"format": "org.matrix.custom.html",
"formatted_body": "❌ Build Failed
Project: MyApp
Error: Module not found
"
}' \
"https://matrix.org/_matrix/client/r0/rooms/YOUR_ROOM_ID/send/m.room.message/$(date +%s)"
نصيحة: لتطوير بوتات Matrix بشكل أسهل، جرب استخدام مكتبات مثل matrix-nio (Python) أو matrix-bot-sdk (JavaScript).
التوثيق الرسمي: مواصفات Matrix Client-Server API
بوت WhatsApp Business
يوفر WhatsApp واجهة Business API للمراسلة الآلية. تتطلب التحقق من هوية النشاط التجاري وهي أكثر تعقيداً في الإعداد مقارنة بالمنصات الأخرى.
الإعداد خطوة بخطوة
- إنشاء حساب Meta Business - زر business.facebook.com وأنشئ حساباً تجارياً
- إعداد WhatsApp Business - اذهب إلى developers.facebook.com، أنشئ تطبيقاً وأضف منتج WhatsApp
- ضبط رقم الهاتف - أضف رقم هاتف للبوت (تتوفر أرقام اختبارية لأغراض التطوير)
- الحصول على رمز الوصول - أنشئ رمز وصول دائم من لوحة تحكم التطبيق
- التحقق من النشاط التجاري - أكمل عملية التحقق قبل الإطلاق الرسمي
إرسال الرسائل عبر Cloud API
curl -X POST \
"https://graph.facebook.com/v17.0/YOUR_PHONE_NUMBER_ID/messages" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"to": "RECIPIENT_PHONE_NUMBER",
"type": "text",
"text": {"body": "✅ Build completed successfully!"}
}'
ملاحظة مهمة: يشترط WhatsApp استخدام قوالب رسائل معتمدة عند بدء المحادثات مع المستخدمين. يمكنك إرسال رسائل حرة فقط خلال 24 ساعة من آخر تفاعل للمستخدم. للإشعارات الآلية، أنشئ قوالب رسائلك واحصل على موافقة عليها أولاً.
التوثيق الرسمي: توثيق WhatsApp Cloud API
بوت Facebook Messenger
تحتاج بوتات Facebook Messenger إلى تطبيق Facebook وصفحة. يتم إرسال الرسائل عبر Send API.
الإعداد خطوة بخطوة
- إنشاء تطبيق Facebook - اذهب إلى developers.facebook.com وأنشئ تطبيقاً جديداً (اختر نوع "Business")
- إضافة منتج Messenger - في لوحة تحكم التطبيق، انقر على "Add Product" واختر Messenger
- ربط صفحة Facebook - اربط صفحة Facebook بتطبيقك (أنشئ واحدة إن لم تكن لديك)
- إنشاء رمز وصول الصفحة - في إعدادات Messenger، أنشئ رمز وصول لصفحتك
- الحصول على PSID - يجب على المستخدمين مراسلة صفحتك أولاً. التقط معرف الصفحة الخاص بهم (PSID) من أحداث الـ webhook
إرسال الرسائل عبر Send API
curl -X POST \
"https://graph.facebook.com/v17.0/me/messages" \
-H "Content-Type: application/json" \
-d '{
"recipient": {"id": "USER_PSID"},
"message": {"text": "✅ Build completed successfully!"},
"access_token": "YOUR_PAGE_ACCESS_TOKEN"
}'
ملاحظة: يفرض Facebook Messenger قواعد صارمة على المراسلة الآلية. لا يمكن للبوتات إرسال رسائل ترويجية إلا خلال 24 ساعة من آخر تفاعل للمستخدم. للإشعارات خارج هذه النافذة الزمنية، تقدم بطلب للحصول على وسوم رسائل محددة أو استخدم ميزة الإشعار لمرة واحدة.
التوثيق الرسمي: توثيق منصة Facebook Messenger
تطبيقات المراسلة بدون دعم سهل للبوتات
تطبيقات المراسلة التالية تضع الخصوصية والأمان في المقام الأول، مما يعني أن تكامل البوتات عبر webhook إما غير ممكن أو غير عملي:
- Signal - لا يوجد Bot API رسمي. يركز Signal على التشفير التام بين الطرفين ويتجنب ميزات الأتمتة التي قد تضعف الأمان.
- Session - تطبيق مراسلة لامركزي بدون بنية تحتية للبوتات. تصميمه المبني على توجيه البصل (onion routing) يجعل المراسلة الآلية غير عملية.
- Briar - تطبيق مراسلة نظير إلى نظير مصمم للناشطين والصحفيين. غياب البنية التحتية للخادم يعني عدم دعم الـ webhook.
- Wire - يوفر بعض ميزات API للمؤسسات، لكن لا يوجد نظام webhook بسيط للإشعارات الآلية.
- Wickr - موجه للمؤسسات بدون Bot API عام. تتطلب الأتمتة إصدار Wickr Enterprise مع تكامل مخصص.
- SimpleX - مصمم بدون معرفات للمستخدمين، مما يجعل تكامل البوتات غير متوافق مع بنيته المعمارية.
- Threema - يوفر Threema Gateway للشركات، لكنه خدمة مدفوعة تتطلب عقوداً - وليس إعداد webhook بسيطاً.
- Viber - يمتلك Bot API، لكنه يتطلب موافقة على حساب تجاري وهو مبني لخدمة العملاء وليس لإشعارات المطورين.
- LINE - يوفر Messaging API، لكنه يتطلب التحقق من حساب تجاري وهو معقد لحالات الاستخدام البسيطة للإشعارات.
- WeChat - يوفر Official Account API، لكنه يتطلب تسجيل تجاري في الصين وموافقة حكومية.
إذا كنت تفضل هذه التطبيقات للتواصل الآمن، فكر في دمجها مع منصة مدعومة لأغراض الأتمتة. يمكنك أيضاً قراءة دليلنا حول الحفاظ على الرسائل الخاصة آمنة حقاً.
مثال تطبيقي عملي
إليك مثالاً كاملاً بـ Node.js يرسل إشعارات البناء إلى منصات متعددة في نفس الوقت:
const axios = require('axios');
const notifiers = {
discord: async (message, webhookUrl) => {
await axios.post(webhookUrl, { content: message });
},
slack: async (message, webhookUrl) => {
await axios.post(webhookUrl, { text: message });
},
telegram: async (message, token, chatId) => {
await axios.post(`https://api.telegram.org/bot${token}/sendMessage`, {
chat_id: chatId,
text: message,
parse_mode: 'HTML'
});
},
teams: async (message, webhookUrl) => {
await axios.post(webhookUrl, { text: message });
}
};
async function notifyBuildResult(success, project, branch, error = null) {
const emoji = success ? '✅' : '❌';
const status = success ? 'succeeded' : 'failed';
let message = `${emoji} Build ${status}\n\nProject: ${project}\nBranch: ${branch}`;
if (error) message += `\nError: ${error}`;
const notifications = [
notifiers.discord(message, process.env.DISCORD_WEBHOOK),
notifiers.slack(message, process.env.SLACK_WEBHOOK),
notifiers.telegram(message, process.env.TELEGRAM_TOKEN, process.env.TELEGRAM_CHAT_ID),
notifiers.teams(message, process.env.TEAMS_WEBHOOK)
];
await Promise.allSettled(notifications);
}
// الاستخدام في pipeline الـ CI/CD الخاص بك
notifyBuildResult(false, 'MyApp', 'main', 'Module not found: @utils/helper');
النقاط الرئيسية:
- Discord وSlack وMattermost هي الأسهل في الإعداد - فقط أنشئ رابطاً واستخدمه
- Telegram يحتاج إلى رمز بوت ومعرف محادثة، لكنه يوفر موثوقية عالية وتنسيقاً ممتازاً
- Microsoft Teams يستخدم Adaptive Cards للإشعارات الغنية
- Matrix/Element يتطلب إعداداً أكثر تعقيداً لكنه مثالي للبيئات ذاتية الاستضافة
- WhatsApp وFacebook Messenger لديهما قواعد وسياسات مراسلة أكثر صرامة
- تطبيقات المراسلة المركزة على الخصوصية لا تمتلك Bot APIs بشكل مقصود لحماية أمان المستخدمين
الخلاصة
إعداد إشعارات البوتات عبر webhook عبر منصات المراسلة يضيف أتمتة قوية إلى سير عمل التطوير لديك. Discord وSlack هما الأسهل للبدء - فقط استخدم رابط webhook بسيطاً. Telegram موثوق وسهل الإعداد. لفرق المؤسسات، يتناسب Microsoft Teams وMattermost بشكل جيد مع الأدوات الموجودة. يمنحك Matrix خياراً ذاتي الاستضافة وصديقاً للخصوصية مع وصول كامل إلى الـ API.
ابدأ بمنصة واحدة. اختبر سير عمل الإشعارات. ثم أضف قنوات أخرى حسب الحاجة. أمثلة الكود أعلاه جاهزة للاستخدام الفوري. خطوتك التالية هي إنشاء webhook على المنصة التي اخترتها وإرسال أول رسالة آلية - لن يستغرق ذلك أكثر من 10 دقائق.
الأسئلة الشائعة
Discord هو الأسهل. أنشئ webhook في إعدادات القناة وستحصل على رابط يمكنك إرسال طلبات POST إليه فوراً. لا حاجة لرموز أو إنشاء تطبيق أو تحقق. Slack أيضاً بسيط، لكنه يتطلب إنشاء تطبيق Slack أولاً.
لا. تطبيقات المراسلة المركزة على الخصوصية مثل Signal وSession وBriar وSimpleX لا تمتلك Bot APIs. هذا قرار مقصود لحماية خصوصية المستخدمين. تركز هذه التطبيقات على التشفير التام بين الطرفين وتقليل جمع البيانات، وهو ما لا يتوافق مع المراسلة الآلية. للإشعارات، استخدم منصة مدعومة بجانب تطبيق المراسلة الآمن للمحادثات الخاصة.
نعم، تعامل مع روابط الـ webhook كما تتعامل مع كلمات المرور. أي شخص يملك الرابط يمكنه إرسال رسائل إلى قناتك. خزّنها في متغيرات البيئة، ولا تضمّها أبداً في نظام التحكم بالإصدارات، وأعد توليدها إذا تعرضت للاختراق. بعض المنصات مثل Slack تتيح لك إنشاء رابط webhook جديد عند الحاجة.
الـ Webhooks أحادية الاتجاه: ترسل رسالة إلى رابط وتظهر في القناة. أما Bot APIs فهي ثنائية الاتجاه: يمكنك إرسال الرسائل واستقبالها والرد عليها. للإشعارات البسيطة مثل تنبيهات البناء أو المراقبة، تكفي الـ Webhooks تماماً. أما للبوتات التي ترد على أوامر المستخدمين، فتحتاج إلى Bot API كاملة مع endpoint للـ webhook على خادمك.
معظم المنصات لديها حدود لمعدل الإرسال. Discord يسمح بـ 30 رسالة في الدقيقة لكل webhook. Slack لديه حدود مماثلة. استخدم قوائم انتظار الرسائل مع التراجع الأسي (exponential backoff) لإعادة المحاولة. للأحجام الكبيرة، اجمع أحداثاً متعددة في رسالة واحدة أو استخدم واجهات API الجماعية الخاصة بالمنصة حيثما كانت متاحة.