لدمج إشعارات واتساب مع قنوات سلاك أن يُحسّن تواصل الفريق بشكل ملحوظ من خلال إتاحة التحديثات الفورية من واتساب مباشرةً في مساحة عمل سلاك. في حين تُوفر خدمات الجهات الخارجية مثل Zapier وOnlizer وChatArchitect تكاملاً سلسًا، تُفضّل بعض الشركات تجنّب الاعتماد على جهات خارجية لأسباب مثل خصوصية البيانات أو التكلفة أو احتياجات التخصيص. يُقدّم هذا الدليل نهجًا مُفصّلًا ومحترفًا لإعداد إشعارات أحداث واتساب في قنوات سلاك دون الحاجة إلى خدمات خارجية، بالاستفادة من واجهة برمجة تطبيقات واتساب للأعمال وواجهة برمجة تطبيقات سلاك. ينصب التركيز على تحقيق تكامل آمن وقابل للتطوير والتخصيص، مُصمّم خصيصًا لتلبية احتياجات عملك.
لماذا يجب دمج WhatsApp مع Slack؟
قبل الخوض في الإعداد الفني، دعنا نستكشف سبب أهمية هذا التكامل:
- الاتصالات المركزية : دمج استفسارات العملاء أو تحديثات الفريق أو التنبيهات الهامة من WhatsApp في قناة Slack واحدة لتحقيق تعاون أفضل.
- الإشعارات في الوقت الفعلي : استقبل على الفور رسائل WhatsApp أو مشغلات الأحداث (على سبيل المثال، الرسائل الجديدة، وتحديثات الحالة) في Slack، مما يقلل من أوقات الاستجابة.
- عدم الاعتماد على طرف ثالث : تجنب التكاليف المتكررة، أو مخاوف خصوصية البيانات، أو القيود المفروضة من قبل المنصات الخارجية.
- إمكانية التخصيص : قم ببناء حل مصمم خصيصًا لسير العمل الخاص بك، مثل تصفية الرسائل ذات الأولوية العالية أو التوجيه إلى قنوات محددة.
يفترض هذا الدليل أن لديك صلاحية الوصول الإداري إلى حساب WhatsApp Business API، ومساحة عمل Slack، ومعرفة أساسية بالبرمجة (مثل Node.js أو Python). يستخدم الحل خطافات ويب، وواجهات برمجة تطبيقات، وخادمًا خفيف الوزن لإدارة التكامل.
المتطلبات الأساسية
لإعداد إشعارات WhatsApp في Slack دون الحاجة إلى خدمات خارجية، ستحتاج إلى:
- حساب API WhatsApp Business:
- حساب WhatsApp Business مسجل مع إمكانية الوصول إلى API.
- رقم هاتف تجاري تم التحقق منه.
- بيانات اعتماد واجهة برمجة التطبيقات (مفتاح واجهة برمجة التطبيقات، ومعرف رقم الهاتف، ورمز الوصول).
- مساحة عمل سلاك:
- أذونات إدارية أو مالكية لإنشاء تطبيقات Slack وإدارتها.
- قناة Slack مخصصة للإشعارات.
- بيئة التطوير:
- خادم أو منصة سحابية (على سبيل المثال، AWS، أو Heroku، أو خادم Node.js/Python محلي) لاستضافة منطق التكامل.
- المعرفة بواجهات برمجة التطبيقات REST وخطافات الويب وبرمجة النصوص الأساسية على جانب الخادم.
- أدوات:
- Node.js أو Python للبرمجة النصية.
- Ngrok (للاختبار المحلي لخطافات الويب).
- cURL أو Postman لاختبار واجهة برمجة التطبيقات.
دليل التكامل خطوة بخطوة
الخطوة 1: إعداد Webhook API لـ WhatsApp Business
تستخدم واجهة برمجة تطبيقات WhatsApp Business خطافات ويب لإخطار خادمك بالرسائل أو الأحداث الواردة. ستحتاج إلى تكوين نقطة نهاية خطاف ويب لتلقي هذه الأحداث.
- إنشاء نقطة نهاية Webhook:
أنشئ خادمًا بسيطًا باستخدام Node.js أو Python. على سبيل المثال، استخدم Express.js (Node.js) لإنشاء نقطة نهاية:
const express = require ( 'express' ); const app = express(); app.use(express.json());
app.post( '/webhook' , ( req, res ) => { console .log( 'تم استلام Webhook WhatsApp:' , req.body); res.status( 200 ).send( 'تم استلام Webhook' ); });
app.listen( 3000 , () => console .log( 'خادم يعمل على المنفذ 3000' ));
- قم بنشر هذا الخادم على عنوان URL عام (على سبيل المثال، باستخدام Heroku) أو استخدم Ngrok للاختبار المحلي لفضح المضيف المحلي الخاص بك على الإنترنت.
- تكوين WhatsApp Webhook:
- قم بتسجيل الدخول إلى بوابة Meta للمطورين (أو لوحة معلومات موفر واجهة برمجة تطبيقات WhatsApp Business الخاص بك).
- انتقل إلى إعدادات WhatsApp Business API.
- أضف عنوان URL لخطاف الويب الخاص بك (على سبيل المثال، https://your-server.com/webhook).
- قم بتعيين خطاف الويب للاستماع إلى الأحداث مثل الرسائل (للرسائل الواردة) أو الحالات (لتحديثات تسليم الرسائل).
قم بالتحقق من خطاف الويب من خلال تنفيذ نقطة نهاية التحقق (يتطلب Meta نقطة نهاية GET لتأكيد عنوان URL لخطاف الويب).
app.get( '/webhook' , ( req, res ) => { const verifyToken = 'YOUR_VERIFY_TOKEN' ; if (req.query[ 'hub.mode' ] === 'subscribe' && req.query[ 'hub.verify_token' ] === verifiedToken) { res.status( 200 ).send(req.query[ 'hub.challenge' ]); } else { res.status( 403 ).send( 'فشل التحقق' ); } });
- اختبار Webhook:
أرسل رسالة اختبار إلى رقم واتساب للأعمال الخاص بك وتأكد من استلام خادمك للرسالة. ستبدو الرسالة كالتالي:
{ "object" : "whatsapp_business_account" , "entry" : [{ "changes : [{ "value" : { "messages" : [{ "from" : "1234567890" , "text" : { "body" : "مرحبًا، هذا اختبار!" } }] } }] }] }
الخطوة 2: إنشاء تطبيق Slack لنشر الإشعارات
لإرسال أحداث WhatsApp إلى قناة Slack، ستحتاج إلى تطبيق Slack يتمتع بالأذونات اللازمة لنشر الرسائل.
- إنشاء تطبيق Slack:
- انتقل إلى api.slack.com/apps وانقر على "إنشاء تطبيق جديد".
- قم بتسمية تطبيقك (على سبيل المثال، "WhatsAppNotifier") وحدد مساحة العمل الخاصة بك على Slack.
- تحت "الأذونات"، أضف نطاق chat:write للسماح للتطبيق بنشر الرسائل.
- الحصول على رمز بوت:
- في إعدادات تطبيق Slack، انتقل إلى "OAuth والأذونات".
- قم بتثبيت التطبيق على مساحة العمل الخاصة بك وانسخ "رمز OAuth الخاص بمستخدم الروبوت" (يبدأ بـ xoxb-).
- اختبار النشر على Slack:
استخدم نقطة نهاية chat.postMessage في واجهة برمجة تطبيقات Slack لاختبار نشر رسالة. على سبيل المثال، في Node.js باستخدام حزمة @slack/web-api:
const { WebClient } = require ( '@slack/web-api' ); const slack = new WebClient( 'YOUR_SLACK_BOT_TOKEN' );
دالة async postToSlack ( channel, message ) { await slack.chat.postMessage({ channel : channel, text : message }); }
postToSlack( '#whatsapp-notifications' , 'اختبار الرسالة من WhatsApp!' );
- تأكد من دعوة الروبوت إلى قناة Slack المستهدفة (على سبيل المثال، /invite @WhatsAppNotifier).
الخطوة 3: ربط خطافات WhatsApp Webhooks بـ Slack
الآن، قم بدمج WebHook WhatsApp مع واجهة برمجة تطبيقات Slack لإعادة توجيه الإشعارات.
- تحليل حمولة WhatsApp Webhook:
قم بتعديل نقطة نهاية خطاف الويب الخاص بك لاستخراج المعلومات ذات الصلة (على سبيل المثال، رقم هاتف المرسل، نص الرسالة):
app.post( '/webhook' , async (req, res) => { const payload = req.body; if (payload.object === 'whatsapp_business_account' ) { const messages = payload.entry[ 0 ].changes[ 0 ].value.messages; if (messages && messages.length > 0 ) { const message = messages[ 0 ]; const sender = message.from; const text = message.text?.body || 'تم استلام رسالة غير نصية' ; const slackMessage = `رسالة WhatsApp جديدة من ${sender} : ${text} ` ; await postToSlack( '#whatsapp-notifications' , slackMessage); } } res.status( 200 ).send( 'تم استلام Webhook' ); });
- التعامل مع رسائل الوسائط:
إذا كانت رسالة WhatsApp تحتوي على وسائط (مثل الصور ومقاطع الفيديو)، فاسترد عنوان URL للوسائط باستخدام واجهة برمجة تطبيقات WhatsApp وقم بتحميله إلى Slack:
ثابت axios = يتطلب ( 'axios' );
دالة غير متزامنة handleMediaMessage ( رسالة، قناة slack ) { ثابت mediaId = message.image?.id || message.video?.id؛ إذا (معرف الوسائط) { ثابت mediaUrl = انتظار getMediaUrl(معرف الوسائط); ثابت mediaResponse = انتظار axios.get(mediaUrl، { الرؤوس : { التفويض : `حامل رمز وصول واتساب الخاص بك` }، نوع الاستجابة : 'تدفق'
}); انتظار slack.files.upload({ القنوات : قناة slack، الملف : بيانات الرد على الوسائط، اسم الملف : `whatsapp_media_ ${mediaId} `
}); } }
دالة async getMediaUrl ( mediaId ) { const response = await axios.get( `https://graph.facebook.com/v17.0/ $ {mediaId} ` , { headers : { Authorization : `Bearer YOUR_WHATSAPP_ACCESS_TOKEN` } }); return response.data.url; }
- النشر والاختبار:
- قم بنشر الخادم الخاص بك على منصة سحابية (على سبيل المثال، AWS EC2، Heroku).
- أرسل رسائل اختبار إلى رقم WhatsApp Business الخاص بك وتحقق من ظهورها في قناة Slack المحددة.
الخطوة 4: تعزيز التكامل
لتجعل التكامل أكثر قوة، ضع في اعتبارك الميزات المتقدمة التالية:
- تصفية الرسائل : أضف منطقًا لتصفية الرسائل بناءً على الكلمات الرئيسية أو المُرسِل أو الأولوية. على سبيل المثال، قم بإعادة توجيه الرسائل التي تحتوي على كلمة "عاجل" فقط إلى قناة Slack مُحددة.
- الاتصال ثنائي الاتجاه : يسمح لمستخدمي Slack بالرد على رسائل WhatsApp عن طريق إرسال رسائل إلى روبوت Slack، والذي يقوم بإعادة توجيهها عبر واجهة برمجة تطبيقات WhatsApp.
- معالجة الأخطاء : تنفيذ آليات إعادة المحاولة لمكالمات API الفاشلة وتسجيل الأخطاء في قناة Slack مخصصة.
- الأمان : قم بتأمين نقطة نهاية خطاف الويب لديك باستخدام المصادقة (على سبيل المثال، التحقق من توقيع خطاف الويب الخاص بـ WhatsApp) واستخدم متغيرات البيئة للبيانات الحساسة مثل رموز واجهة برمجة التطبيقات.
الخطوة 5: المراقبة والصيانة
- راقب صحة خطاف الويب : تأكد بانتظام من استقبال نقطة نهاية خطاف الويب للأحداث. استخدم أدوات مثل AWS CloudWatch أو آلية تسجيل بسيطة.
- تحديث إصدارات واجهة برمجة التطبيقات : قد يتم تحديث كلٍّ من واجهات برمجة تطبيقات واتساب وسلاك. راقب ميتا للمطورين ووثائق واجهة برمجة تطبيقات سلاك للاطلاع على التغييرات الجذرية.
- التوسع حسب الحاجة : إذا زاد حجم الرسائل، ففكر في موازنة التحميل أو تحسين أداء الخادم لديك.
التحديات والاعتبارات
- قيود واجهة برمجة تطبيقات واتساب : تخضع واجهة برمجة تطبيقات واتساب للأعمال لسياسات صارمة، مثل موافقات قوالب الرسائل وحدود السرعة. تأكد من الالتزام بها لتجنب تعليق حسابك.
- حدود معدل التراخي : واجهة برمجة تطبيقات Slack لها حدود معدل (على سبيل المثال، رسالة واحدة في الثانية لكل قناة). نفّذ عملية انتظار للإشعارات عالية الحجم.
- خصوصية البيانات : نظرًا لأنك تتعامل مع بيانات العملاء، فتأكد من الامتثال لقانون حماية البيانات العامة (GDPR) أو قانون خصوصية المستهلك في كاليفورنيا (CCPA) من خلال تأمين البيانات أثناء النقل وفي حالة السكون.
- تكاليف الصيانة : بدون خدمات الطرف الثالث، أنت مسؤول عن وقت تشغيل الخادم والتحديثات واستكشاف الأخطاء وإصلاحها.
خاتمة
يُعد دمج إشعارات واتساب مع قنوات سلاك دون الحاجة إلى خدمات خارجية طريقة فعّالة لتبسيط التواصل مع الحفاظ على التحكم الكامل في بياناتك وسير عملك. بالاستفادة من واجهة برمجة تطبيقات واتساب للأعمال وواجهة برمجة تطبيقات سلاك، يمكنك إنشاء حل مخصص يلبي احتياجات فريقك. مع أن هذا النهج يتطلب خبرة فنية وصيانة مستمرة، إلا أنه يوفر مرونةً ووفرًا لا مثيل لهما في التكاليف مقارنةً بمنصات الجهات الخارجية.