Rabt WhatsApp CRM
واجهة المطورين وWebhooks

أرسل رسائل، استقبل أحداثًا، ابنِ على بنية تحتية حقيقية.

واجهة REST لإرسال رسائل واتساب من أنظمتك الخاصة، وwebhooks خارجية موقّعة بـ HMAC مع ضمان تسليم دائم لكل حدث رسالة وحالة.

curl
curl -X POST https://rabtcrm.com/api/v1/send \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instanceName": "sales-line",
    "number": "201061711867",
    "type": "text",
    "message": "Your order #4021 has shipped."
  }'

واجهة REST وwebhooks تعمل فعليًا في الإنتاج منذ v3.10.0

واجهة REST
موقّعة بـHMAC
outbox دائم
تسليم مرة واحدة على الأقل
/v1/send

أرسل رسائل واتساب من كودك الخاص

endpoint واحد مصادَق عليه يرسل نصًا أو وسائط أو قوالب معتمدة من Meta من أي خلفية أو سكريبت أو تكامل تشغّله فعلاً — بدون الحاجة لـSDK منفصل، فقط طلب HTTP قياسي.

  • endpoint واحد بطلب POST للنص والوسائط وإرسال القوالب
  • مصادقة بمفتاح API محدد النطاق لفريقك
  • يعمل من أي لغة قادرة على إرسال طلب HTTP
curl — send a message
curl -X POST https://rabtcrm.com/api/v1/send \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instanceName": "sales-line",
    "number": "201061711867",
    "type": "text",
    "message": "Your order #4021 has shipped."
  }'
webhooks خارجية

احصل على إشعار لحظة حدوث أي شيء

اشترك بنقطة النهاية الخاصة بك في أحداث message.received وmessage.status. كل تسليم موقّع بـHMAC-SHA256 حتى تتحقق أنه جاء فعلاً من RABTCRM قبل الوثوق بالمحتوى.

  • أنواع أحداث message.received وmessage.status
  • توقيع HMAC-SHA256 في ترويسة X-RabtCRM-Signature لكل تسليم
  • معرّف X-RabtCRM-Delivery ثابت لإزالة التكرار في المحاولات المعادة
webhook.js — verify signature
import { createHmac } from "crypto";

// Verify an inbound webhook delivery from RABTCRM
function verifySignature(rawBody, signatureHeader, secret) {
  const expected =
    "sha256=" + createHmac("sha256", secret)
      .update(rawBody, "utf8")
      .digest("hex");

  return signatureHeader === expected;
}

app.post("/webhooks/rabtcrm", (req, res) => {
  const signature = req.headers["x-rabtcrm-signature"];
  const deliveryId = req.headers["x-rabtcrm-delivery"]; // dedupe key

  if (!verifySignature(req.rawBody, signature, WEBHOOK_SECRET)) {
    return res.status(401).send("invalid signature");
  }

  // req.body.event === "message.received" | "message.status"
  res.status(200).send("ok");
});
تسليم دائم

تسليم مرة واحدة على الأقل، مدعوم بـoutbox حقيقي

تُكتب أحداث webhook في outbox دائم وتُعاد المحاولة تلقائيًا إذا كانت نقطة النهاية الخاصة بك متوقفة مؤقتًا — لا تفقد أحداثًا بسبب انقطاع لحظي، ويمكن إرسال القوالب بنفس طريقة النص والوسائط.

  • نمط outbox دائم، وليس طلب HTTP يُرسل ويُنسى
  • إعادة محاولة تلقائية عند فشل التسليم
  • نفس endpoint الـ/v1/send يرسل القوالب والنص والوسائط
send_template.py
import requests

resp = requests.post(
    "https://rabtcrm.com/api/v1/send",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "instanceName": "sales-line",
        "number": "201061711867",
        "type": "template",
        "templateName": "order_confirmation",
        "templateLanguage": "en",
        "templateBodyVariables": ["4021", "3"],
    },
)

resp.raise_for_status()
print(resp.json())

ما الذي تحصل عليه

كل ما تقدمه واجهة المطورين ونظام webhooks

مبني على /v1/send ونظام webhooks الخارجي v3.10.0 — موقّع بـHMAC، دائم، مرة واحدة على الأقل.

واجهة إرسال الرسائل

أرسل نصًا أو وسائط أو قوالب معتمدة عبر endpoint REST واحد مصادَق عليه.

webhooks خارجية

اشترك في أحداث message.received وmessage.status على نقطة النهاية الخاصة بك.

تسليمات موقّعة بـHMAC

كل حمولة webhook موقّعة حتى تتحقق من صحتها قبل الوثوق بها.

outbox دائم وإعادة محاولة

يُعاد إرسال التسليمات الفاشلة تلقائيًا بدلاً من اختفائها بصمت.

مفاتيح API محددة النطاق

صادق بمفتاح محدد النطاق لفريقك، تُدار من الإعدادات.

HTTP قياسي، أي لغة

بدون الارتباط بـSDK معين — استدعِ الواجهة من curl أو JavaScript أو Python أو غيرها.

أسئلة شائعة

أسئلة شائعة عن واجهة المطورين وWebhooks

Qكيف أرسل رسالة واتساب برمجيًا؟

عبر طلب POST إلى /api/v1/send مع مفتاح API الخاص بك، اسم الاتصال، الرقم، ونوع الرسالة (نص، وسائط، أو قالب). راجع كود عينة curl أعلاه.

Qكيف أتحقق من صحة webhook وارد؟

كل webhook موقّع بـ HMAC-SHA256 في ترويسة X-RabtCRM-Signature. احسب نفس التوقيع من جسم الطلب الخام باستخدام سر Webhook الخاص بك وقارنه — راجع كود عينة JavaScript أعلاه.

Qماذا يحدث إذا فشل استقبال endpoint الخاص بي لحدث webhook؟

يستخدم RABTCRM نمط outbox دائم مع تسليم "مرة واحدة على الأقل" — تتم إعادة محاولة التسليم تلقائيًا. استخدم ترويسة X-RabtCRM-Delivery كمفتاح لإزالة التكرار في نظامك.

Qهل يمكنني إرسال قوالب معتمدة عبر الـAPI؟

نعم — استخدم type: "template" مع اسم القالب ولغته ومتغيرات النص، كما في كود عينة Python أعلاه.

ابدأ البناء على واجهة RABTCRM

ابدأ مجانًا واحصل على مفتاح API لـ/v1/send وwebhooks الخارجية.

بدون الحاجة لبطاقة ائتمان.