DEV Community

Cover image for أرسل رسائل SMS و WhatsApp بشكل أسرع باستخدام Sent.dm API
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

أرسل رسائل SMS و WhatsApp بشكل أسرع باستخدام Sent.dm API

الخلاصة / إجابة سريعة

توفر لك واجهة برمجة تطبيقات Sent.dm نقطة تكامل واحدة للمراسلة التجارية عبر الرسائل القصيرة (SMS) وواتساب. إذا قمت بإقران Sent مع Apidog، يمكنك تخزين بيانات الاعتماد الخاصة بك في بيئات، واختبار الطلبات دون كتابة نصوص مؤقتة، والتحقق من صحة حمولات الويب هوك، وتوثيق سير عمل المراسلة الخاص بك في مكان واحد.

جرّب Apidog اليوم

مقدمة

معظم مشاريع المراسلة تتعطل عند التفاصيل التشغيلية: واجهة API نفسها غالباً بسيطة، لكنك ستحتاج إلى مفاتيح API، وهوية مرسل، وقوالب، وأمان ويب هوك، وتنسيق قنوات، وطريقة فعّالة للاختبار دون إرسال رسائل حقيقية.

Sent.dm تقدم طبقة موحدة للمراسلة عبر SMS وواتساب، وتعالج التوجيه والتسليم خلف API واحدة. بناءً على وثائق Sent (مارس 2026)، توفر التحقق من الحساب، إعداد القنوات، إرسال القوالب، إدارة جهات الاتصال، أحداث ويب هوك، ومساحة عمل للاختبار.

💡 إذا أردت إعداد ذلك بسرعة، Apidog أداة قوية: استورد مرجع Sent API، أنشئ بيئات لمتغيرات x-api-key وx-sender-id، ابنِ سيناريوهات اختبار للرسائل والويب هوك، وشاركها مع فريقك.

ما الذي تحله واجهة برمجة تطبيقات Sent.dm

تم تصميم Sent.dm للفرق التي تحتاج الوصول إلى المستخدمين عبر أكثر من قناة دون بناء تكاملات منفصلة مع كل مزود. بدلاً من ربط SMS وواتساب وكتابة منطق خاص بكل قناة، توفر Sent منصة موحدة.

A screenshot showing the Sent.dm dashboard with an overview of messages sent, delivered, and failed, along with channel performance metrics.

من الوثائق الرسمية:

  • عنوان URL أساسي موحد للرسائل
  • مصادقة بالرأس عبر x-api-key
  • رأس x-sender-id لهوية المرسل
  • إرسال معتمد على القوالب
  • إدارة جهات الاتصال والجماهير
  • أحداث ويب هوك للتسليم والقوالب
  • توجيه ذكي وتجاوزات عبر طبقة المنصة

هذه العناصر أساسية لأي نظام مراسلة احترافي. تحتاج أيضاً إلى:

  • حمولة متناسقة
  • قوالب قابلة لإعادة الاستخدام بأمان
  • تتبع حالة الرسائل (تم التسليم/فشل/قائمة الانتظار)
  • اختبار دون كشف الأسرار
  • وثائق واضحة للفريق

التحدي العملي:

Application -> Message API -> Channel Rules -> Delivery Events -> Retry / Status Logic
Enter fullscreen mode Exit fullscreen mode

إذا كان كل جزء في مكان منفصل، يصبح التصحيح بطيئاً. الحل الأفضل: نمذجة كل التدفق في أداة مثل Apidog من البداية.

كيف تعمل واجهة برمجة تطبيقات Sent.dm

توفر Sent طبقة وسيطة ذكية بين تطبيقك وقنوات المراسلة. ترسل طلباً واحداً، وتختار Sent أفضل مسار بناءً على التوجيه وسياق المستلم وتوفر القناة.

1. إعداد الحساب والامتثال

ابدأ بإنشاء الحساب، تحقق من الهوية (KYC)، ثم إعداد العمل. هذه الخطوات إلزامية بسبب متطلبات الامتثال وسمعة المرسل.

2. إعداد القناة

اتبع الإرشادات لاختيار رقم هاتف وربط واتساب للأعمال. الأفضل استخدام نفس الرقم للـSMS وواتساب لتعزيز هوية العلامة التجارية.

3. القوالب

أنشئ قالب قبل إرسال أول طلب API؛ القوالب ليست اختيارية هنا بل جزء أساسي من المسار.

4. بيانات اعتماد واجهة برمجة التطبيقات

ستحتاج إلى متغيرين رئيسيين:

x-sender-id: YOUR_SENDER_ID
x-api-key: YOUR_API_KEY
Enter fullscreen mode Exit fullscreen mode

تحقق دائماً من متطلبات الرؤوس عبر مساحة العمل وإصدار النقطة النهائية.

5. طلب الرسالة

مثال على الطلب:

POST https://api.sent.dm/v2/messages/phone
Enter fullscreen mode Exit fullscreen mode

حمولة JSON:

{
 "phoneNumber": "RECIPIENT_PHONE_NUMBER",
 "templateId": "TEMPLATE_ID"
}
Enter fullscreen mode Exit fullscreen mode

التركيز الأول: إعداد الإرسال عبر القوالب بشكل صحيح ثم توسيع سير العمل بعد مراقبة السلوك.

أرسل أول طلب واجهة برمجة تطبيقات Sent.dm

ابنِ الطلب الأول بطريقة يسهل اختبارها وصيانتها.

مثال cURL

curl -X POST "https://api.sent.dm/v2/messages/phone" \
 -H "x-sender-id: YOUR_SENDER_ID" \
 -H "x-api-key: YOUR_API_KEY" \
 -H "Content-Type: application/json" \
 -d '{
 "phoneNumber": "RECIPIENT_PHONE_NUMBER",
 "templateId": "TEMPLATE_ID"
 }'
Enter fullscreen mode Exit fullscreen mode

مثال JavaScript

const response = await fetch("https://api.sent.dm/v2/messages/phone", {
 method: "POST",
 headers: {
   "x-sender-id": process.env.SENT_SENDER_ID,
   "x-api-key": process.env.SENT_API_KEY,
   "Content-Type": "application/json"
 },
 body: JSON.stringify({
   phoneNumber: process.env.TEST_PHONE_NUMBER,
   templateId: process.env.SENT_TEMPLATE_ID
 })
});

if (!response.ok) {
 throw new Error(`Sent request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);
Enter fullscreen mode Exit fullscreen mode

مثال Python

import os
import requests

response = requests.post(
 "https://api.sent.dm/v2/messages/phone",
 headers={
   "x-sender-id": os.environ["SENT_SENDER_ID"],
   "x-api-key": os.environ["SENT_API_KEY"],
   "Content-Type": "application/json",
 },
 json={
   "phoneNumber": os.environ["TEST_PHONE_NUMBER"],
   "templateId": os.environ["SENT_TEMPLATE_ID"],
 },
 timeout=30,
)

response.raise_for_status()
print(response.json())
Enter fullscreen mode Exit fullscreen mode

الرد الناجح يعيد HTTP 200 وmessageId — التقط هذه القيمة في اختبار Apidog، سجلات التطبيق، وسير العمل.

اختبر واجهة برمجة تطبيقات Sent.dm في Apidog

Apidog ليس مجرد مشغل طلبات. يمكنك إدارة الطلب والمتغيرات والتأكيدات والوثائق في مكان واحد.

A screenshot of the Apidog interface, showing a request builder on the left with environment variables and a response panel on the right with test results.

الخطوة 1: أنشئ بيئة Sent

أنشئ بيئة بمتغيرات مثل:

base_url = https://api.sent.dm
sender_id = YOUR_SENDER_ID
api_key = YOUR_API_KEY
template_id = YOUR_TEMPLATE_ID
test_phone = RECIPIENT_PHONE_NUMBER
Enter fullscreen mode Exit fullscreen mode

الفوائد:

  1. أسرار الإنتاج لا تظهر في الأمثلة.
  2. التبديل بين بيئات الاختبار والإنتاج أسرع.
  3. يمكن لكل عضو فريق استخدام مجموعته وقيمه.

الخطوة 2: أنشئ الطلب مرة واحدة

  • الأسلوب: POST
  • عنوان URL: {{base_url}}/v2/messages/phone
  • العناوين:
    • x-sender-id: {{sender_id}}
    • x-api-key: {{api_key}}
    • Content-Type: application/json
  • الجسم:
{
 "phoneNumber": "{{test_phone}}",
 "templateId": "{{template_id}}"
}
Enter fullscreen mode Exit fullscreen mode

هكذا يصبح الطلب قابلاً للفحص والمشاركة من قبل الفريق.

الخطوة 3: أضف التأكيدات

أضف اختبارات في Apidog للتحقق من النجاح:

pm.test("Status is 200", function () {
 pm.response.to.have.status(200);
});

pm.test("Response contains a messageId", function () {
 const json = pm.response.json();
 pm.expect(json.messageId).to.exist;
});
Enter fullscreen mode Exit fullscreen mode

الخطوة 4: حوّلها إلى سيناريو

قم بتوسيع الاختبار إلى سيناريو عمل:

  1. أرسل رسالة
  2. خزّن messageId
  3. استعلم عن الحالة النهائية (إذا متاح)
  4. قارن أحداث الرسائل المستلمة من الويب هوك

الخطوة 5: أضف أمثلة الويب هوك

أضف أمثلة محفوظة لأحداث الويب هوك:

{
 "field": "message.status",
 "messageId": "msg_123",
 "status": "delivered",
 "channel": "whatsapp"
}
Enter fullscreen mode Exit fullscreen mode

هذا يساعد الفرق على توثيق الحقول والتأكد من المعالجة الصحيحة.

الخطوة 6: انشر الوثائق الداخلية

انشر مرجعاً داخلياً يشمل:

  • العناوين المطلوبة
  • أمثلة الحمولات
  • استجابات الأخطاء
  • أمثلة ويب هوك
  • ملاحظات البيئة

تعامل مع القوالب وجهات الاتصال والويب هوكس بالطريقة الصحيحة

نجاح أول طلب ليس الهدف النهائي. الإنتاجية تتطلب تنظيم القوالب، وجهات الاتصال، وأمان الويب هوك.

القوالب

  • احتفظ بمعرفات القوالب في متغيرات البيئة أو ملفات التكوين
  • صنف القوالب حسب الغرض/اللغة/الحالة
  • افصل قوالب الاختبار عن الحملات الفعلية
  • وثق علاقة القوالب بمسارات المستخدمين

جهات الاتصال

  • حدد مصدر الحقيقة (تطبيقك أم Sent)
  • طبّع أرقام الهواتف بشكل موحد
  • وثق حالة الاشتراك/الموافقة لكل جهة اتصال
  • وضّح ماذا يحدث عند تغيير قناة الاتصال

الويب هوكس

تحقق من توقيع HMAC-SHA256 عبر رؤوس:

  • x-webhook-signature
  • x-webhook-id
  • x-webhook-timestamp

نافذة زمنية للحماية من إعادة التشغيل: 5 دقائق.

مثال Express:

import crypto from "crypto";
import express from "express";

const app = express();

app.post("/webhooks/sent", express.raw({ type: "*/*" }), (req, res) => {
 const signature = req.header("x-webhook-signature");
 const webhookId = req.header("x-webhook-id");
 const timestamp = req.header("x-webhook-timestamp");
 const secret = process.env.SENT_WEBHOOK_SECRET;
 const rawBody = req.body.toString("utf8");

 const signedContent = `${webhookId}.${timestamp}.${rawBody}`;
 const expected = crypto
   .createHmac("sha256", Buffer.from(secret.replace(/^whsec_/, ""), "base64"))
   .update(signedContent)
   .digest("base64");

 if (signature !== `v1,${expected}`) {
   return res.status(401).send("Unauthorized");
 }

 const event = JSON.parse(rawBody);
 console.log("Received webhook event:", event.field);

 return res.sendStatus(200);
});
Enter fullscreen mode Exit fullscreen mode

استخدم Apidog لتوثيق حمولات الويب هوك وتسهيل التوافق بين فرق الباكند والفورنتند.

لماذا يتناسب Apidog مع سير العمل هذا

Sent.dm تعالج طبقة المراسلة. Apidog يضيف طبقة سير العمل التعاوني حولها.

المهمة Sent.dm Apidog
إرسال رسائل SMS وواتساب نعم لا، يختبر فقط
إدارة القوالب وإعداد المرسل نعم توثيق/تحقق
اختبار الطلبات المصادق عليها أساسي متقدم (بيئات، تأكيدات، سيناريوهات)
مشاركة وثائق API وثائق المنصة وثائق قابلة للمشاركة والفرق
تصحيح تدفق الطلب/الاستجابة جزئي قوي ومتكرر
بناء سيناريوهات اختبار مركزة على المراسلة أفضل لتدفق API متعدد الخطوات

إذا كنت تقيّم Sent للمراسلة، Apidog يغطي تصميم واختبار وتوثيق واجهات API بشكل تعاوني.

ثلاث حالات استخدام أساسية:

  • تدريب مطورين متعددين عبر مجموعة طلبات مشتركة
  • تمكين ضمان الجودة من اختبار API دون كتابة سكريبتات
  • اختبار تغييرات الإصدارات أو القوالب أو الويب هوك بشكل متكرر

نصائح متقدمة وأخطاء شائعة

أفضل الممارسات

  1. احتفظ ببيانات الاعتماد على جانب الخادم فقط.
  2. تتبع messageId في سجلات التطبيق والدعم.
  3. افصل قوالب الاختبار عن الإنتاج.
  4. تحقق من كل ويب هوك قبل المعالجة.
  5. استخدم بيئات Apidog لعزل بيانات الاعتماد.

الأخطاء الشائعة التي يجب تجنبها

  1. اعتبار HTTP 200 هو نهاية دورة حياة الرسالة.
  2. ترميز معرفات القوالب بشكل ثابت في أكثر من خدمة.
  3. إهمال إعداد هوية المرسل حتى اللحظة الأخيرة.
  4. إهمال تطبيع أرقام الهواتف.
  5. اختبار بيانات اعتماد حقيقية في سكريبتات غير مشتركة.

مؤشرات استكشاف الأخطاء

إذا لم يعمل الطلب:

  1. تحقق من صلاحية ونشاط x-api-key.
  2. تأكد أن نقطة النهاية والإصدار متطابقان مع حسابك.
  3. تحقق من ضرورة x-sender-id.
  4. القالب معتمد ومتاح للقناة؟
  5. رقم الهاتف بتنسيق صحيح؟

Apidog يجعل مقارنة الطلبات الفاشلة والناجحة أسرع.

بدائل ومقارنات Sent.dm

الخيار القوة المفاضلة
مقدمو خدمة SMS/واتساب مباشرة تحكم كامل أعمال تكامل وصيانة أكثر
حزمة اتصالات مثل Twilio نظام بيئي واسع مزيد من تعقيد تنسيق القنوات
Sent.dm سير عمل موحد وتجريد القناة اعتماد على منصة Sent
Sent.dm + Postman اختبار مألوف وثائق وتصميم متجزئة
Sent.dm + Apidog مراسلة موحدة + اختبار وتوثيق قوي وتعاون أداتان بدلاً من واحدة

أفضل إعداد ليس دوماً أداة واحدة، بل منصة تسليم + طبقة تعاون API قوية. إذا كنت تستخدم Postman، سبب النظر لـApidog هو البيئات والتوثيق والتأكيدات وسير العمل في مكان واحد.

الخلاصة

Sent.dm تقدم واجهة موحدة للرسائل القصيرة وواتساب. المكسب الأهم ليس فقط إرسال رسالة، بل اختبار وبناء سير عمل حول القوالب، هوية المرسل، جهات الاتصال، والويب هوك.

لتحرك أسرع: ابداً ببناء أول طلب Sent في Apidog، أضف تأكيدات لـmessageId، ووثق عقد الويب هوك في نفس مساحة العمل. هذا أفضل من الاعتماد على سكريبتات مشتتة ومعرفة فردية.

الأسئلة الشائعة

ما هو استخدام واجهة برمجة تطبيقات Sent.dm؟

تُستخدم Sent.dm للمراسلة التجارية عبر SMS وواتساب من خلال تكامل واحد. تدعم إعداد المرسل، القوالب، جهات الاتصال، ومعالجة الأحداث عبر ويب هوك.

هل تدعم Sent.dm واتساب والرسائل القصيرة في واجهة واحدة؟

نعم. Sent تقدم API موحدة تجرد تعقيدات القنوات. توصي باستخدام نفس الرقم عبر SMS وواتساب.

ما هي العناوين المطلوبة لطلبات Sent.dm؟

x-api-key مصادقة أساسية، وغالباً تحتاج أيضاً x-sender-id. تحقق من إصدار نقطة النهاية في حسابك.

هل أحتاج إلى قوالب قبل إرسال الرسائل؟

نعم، دليل Sent يطلب إنشاء قالب ثم استخدام templateId لإرسال أول رسالة.

كيف أختبر Sent.dm دون كتابة سكريبتات؟

Apidog مناسبة: خزّن بيانات الاعتماد كمتغيرات بيئة، احفظ الطلبات، أضف التأكيدات، ابنِ سيناريوهات، ووثق الويب هوك وشارك مع الفريق.

كيف أؤمن ويب هوكس Sent.dm؟

تحقق من توقيع HMAC، صحة الطابع الزمني، وعالج الأحداث بشكل متطابق. استخدم رؤوس التحقق الموصى بها في الوثائق.

هل Sent.dm كافية لوحدها لسير عمل فريق API؟

تغطي منصة المراسلة فقط. ستحتاج أداة تعاونية للاختبار والتوثيق والتحقق المتكرر — هنا تبرز قيمة Apidog.


روابط Apidog

Apidog

Top comments (0)