SocialHook
الوثائق/البدء السريع
البدء

دليل البدء السريع

شغّل SocialHook في 5 دقائق. اربط أول حساب منصة Meta وابدأ استقبال webhooks بعدة أسطر من الكود.

الوقت المقدر: 5 دقائق
1

أنشئ حساب SocialHook الخاص بك

سجّل في socialhook.io — لا تحتاج بطاقة ائتمان

بعد التسجيل، ستصل إلى لوحة التحكم. من هنا يمكنك ربط حسابات Meta وضبط رابط webhook وعرض سجلات التسليم. يتضمن حسابك مفتاحًا سريًا لتوقيع جميع payloads الـ webhook.

2

اربط حساب منصة Meta

سجّل الدخول بـ OAuth إلى Facebook أو Instagram أو WhatsApp

انقر على ربط بجانب المنصة التي تريد استخدامها. ستُعاد توجيهك إلى تدفق OAuth الخاص بـ Meta. لا يخزّن SocialHook كلمة مرور Meta أبدًا.

Facebook: اربط صفحة تديرها
Instagram: يتطلب حساب Instagram Business
WhatsApp: يتطلب رقم WhatsApp Business
3

اضبط رابط webhook الخاص بك

الصق نقطة النهاية وأنشئ مفتاحًا سريًا

في لوحة التحكم، اذهب إلى إعدادات Webhook والصق رابط POST لخادمك. أنشئ مفتاحًا سريًا — ستستخدمه للتحقق من توقيعات الـ payload.

للتطوير المحلي، استخدم ngrok لكشف localhost الخاص بك:

shell
npx ngrok http 3000
4

اضبط التحقق من التوقيع

تحقق من كل payload قبل المعالجة

كل تسليم يتضمن رأس X-SocialHook-Signature. تحقق منه قبل معالجة أي payload:

node.js
const crypto = require('crypto')

function verifySignature(rawBody, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex')
  return signature === expected
}

app.post('/webhook', express.raw({ type: '*/*' }), (req, res) => {
  const sig = req.headers['x-socialhook-signature']

  if (!verifySignature(req.body, sig, process.env.SOCIALHOOK_SECRET)) {
    return res.status(401).send('Unauthorized')
  }

  const payload = JSON.parse(req.body)
  // ... handle payload
  res.sendStatus(200)
})
5

عالج الأحداث الواردة

حلّل payloads الـ webhook وتصرف بناءً عليها

بعد التحقق، حلّل JSON payload ووجّه بناءً على حقل event:

node.js
const { platform, event, message, from } = payload

switch (event) {
  case 'message.received':
    console.log(`[${platform}] Message from ${from}: ${message.body}`)
    // Route to AI, CRM, n8n, etc.
    await handleInboundMessage(payload)
    break

  case 'conversation.started':
    // New conversation — create a CRM lead, send welcome message
    await createLead({ platform, from, timestamp: payload.timestamp })
    break

  default:
    console.log('Unhandled event:', event)
}

res.sendStatus(200) // Always respond 200
مهم: أعد دائمًا حالة 200 فورًا. إذا استغرق خادمك أكثر من 10 ثوانٍ للرد، سيعتبر SocialHook التسليم فاشلًا وسيعيد المحاولة.

أنت جاهز 🎉

أرسل رسالة اختبار إلى رقم WhatsApp أو صفحة Facebook أو حساب Instagram المتصل. يجب أن ترى تسليمًا يظهر في سجلات لوحة تحكم SocialHook وPOST يصل إلى خادمك خلال 50ms.