كيفية إعادة توجيه الرسائل النصية إلى نقطة نهاية webhook API؟

دليل 5 دقيقة قراءة
انسخ الرابط مشاركة

إجابة سريعة: يمكن لـ Forward SMS إرسال رسائلك النصية إلى أي نقطة نهاية HTTP كـ webhook بصيغة JSON. أنشئ وجهة Webhook في التطبيق، أدخل عنوان URL لنقطة النهاية، وأعد إعداد أتمتة Shortcuts. ستتلقى نقطة النهاية الخاصة بك طلب POST يحتوي على محتوى الرسالة والمرسل والطابع الزمني.

ما هي إعادة توجيه الرسائل النصية عبر Webhook؟

إعادة توجيه الرسائل النصية عبر Webhook ترسل رسائلك النصية تلقائياً إلى أي نقطة نهاية HTTP تتحكم بها. على عكس التكاملات الخاصة بالمنصات (Slack، Discord، Teams)، تمنحك webhooks تحكماً كاملاً في كيفية معالجة الرسائل. هذا مثالي للمطورين الذين يبنون تكاملات مخصصة أو أنظمة تسجيل أو سير عمل أتمتة.

عند وصول رسالة، يرسل Forward SMS طلب POST إلى نقطة النهاية الخاصة بك مع حمولة JSON منظمة تحتوي على محتوى الرسالة ومعلومات المرسل والبيانات الوصفية.

لماذا تستخدم Webhooks

تقدم Webhooks مرونة لا يمكن للتكاملات الجاهزة مطابقتها:

  • أتمتة مخصصة: تفعيل أي سير عمل عند تلقي رسالة نصية - تحديث قواعد البيانات، إرسال إشعارات، تشغيل البرامج النصية، أو التكامل مع أي خدمة
  • تسجيل البيانات: تخزين جميع الرسائل الواردة في قاعدة بياناتك الخاصة للامتثال أو التحليلات أو النسخ الاحتياطي
  • توجيه متعدد الخدمات: معالجة الرسائل بمنطقك الخاص لتوجيهها إلى وجهات مختلفة بناءً على المحتوى أو المرسل
  • الأدوات الداخلية: بناء ميزات مدعومة بالرسائل النصية في لوحات التحكم والأدوات الداخلية الخاصة بك
  • تكامل IoT: ربط تنبيهات الرسائل النصية بأنظمة IoT الخاصة بك أو أتمتة المنزل أو بنية المراقبة

تنسيق حمولة Webhook

عند إعادة توجيه رسالة، تتلقى نقطة النهاية الخاصة بك طلب POST مع حمولة JSON التالية:

{
  "timestamp": "2025-01-31T14:30:00Z",
  "content": "Your verification code is 123456",
  "sender": "+1234567890",
  "contact": "Bank of Example"
}

حقول الحمولة

| الحقل | النوع | الوصف | |-------|------|-------------| | timestamp | string | طابع زمني بتنسيق ISO 8601 عند إعادة توجيه الرسالة | | content | string | محتوى الرسالة النصية | | sender | string | رقم هاتف المرسل (إذا كان متاحاً) | | contact | string | اسم جهة الاتصال من دفتر العناوين الخاص بك (إذا تم المطابقة) |

إعداد إعادة التوجيه عبر Webhook

الخطوة 1: تحميل Forward SMS

حمّل Forward SMS من App Store.

الخطوة 2: إنشاء وجهة Webhook

افتح التطبيق، انقر على "إضافة وجهة"، واختر "Webhook". أدخل عنوان URL لنقطة النهاية. يجب أن يكون العنوان HTTPS للأمان.

الخطوة 3: اختبار نقطة النهاية

استخدم زر "إرسال رسالة اختبارية" للتحقق من أن نقطة النهاية تتلقى webhook بشكل صحيح. تحقق من سجلات الخادم للتأكد من وصول الحمولة.

الخطوة 4: إعداد أتمتة Shortcuts

اتبع دليل إعداد Shortcuts لإنشاء الأتمتة التي تفعّل إعادة توجيه الرسائل.

أمثلة التنفيذ

إليك أمثلة للتعامل مع webhook بلغات مختلفة:

Node.js (Express)

const express = require('express');
const app = express();

app.use(express.json());

app.post('/webhook/sms', (req, res) => {
  const { timestamp, content, sender, contact } = req.body;

  console.log(`Received SMS from ${sender}: ${content}`);

  // Process the message (save to database, trigger automation, etc.)

  res.status(200).json({ received: true });
});

app.listen(3000);

Python (Flask)

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/webhook/sms', methods=['POST'])
def handle_sms():
    data = request.json

    sender = data['sender']
    content = data['content']

    print(f"Received SMS from {sender}: {content}")

    # Process the message

    return jsonify({'received': True}), 200

if __name__ == '__main__':
    app.run(port=3000)

PHP

<?php
$payload = json_decode(file_get_contents('php://input'), true);

$sender = $payload['sender'];
$content = $payload['content'];
$timestamp = $payload['timestamp'];

error_log("Received SMS from $sender: $content");

// Process the message

http_response_code(200);
echo json_encode(['received' => true]);
?>

Ruby (Sinatra)

require 'sinatra'
require 'json'

post '/webhook/sms' do
  payload = JSON.parse(request.body.read)

  sender = payload['sender']
  content = payload['content']

  puts "Received SMS from #{sender}: #{content}"

  # Process the message

  content_type :json
  { received: true }.to_json
end

اعتبارات الأمان

استخدم HTTPS

استخدم دائماً نقاط نهاية HTTPS لتشفير حمولة webhook أثناء النقل. يتطلب Forward SMS بروتوكول HTTPS لعناوين URL الخاصة بـ webhook.

تعامل مع الأخطاء بشكل صحيح

يجب أن تُرجع نقطة النهاية الخاصة بك رمز حالة 2xx لتأكيد الاستلام. إذا تلقى Forward SMS استجابة خطأ، سيسجل الفشل.

استكشاف الأخطاء وإصلاحها

Webhook لا يتلقى الرسائل

  • تحقق من العنوان: تأكد من أن عنوان URL لنقطة النهاية صحيح ويمكن الوصول إليه من الإنترنت
  • تحقق من HTTPS: يجب أن يستخدم العنوان HTTPS وليس HTTP
  • تحقق من قواعد جدار الحماية: يجب أن يقبل خادمك طلبات POST الواردة
  • اختبر نقطة النهاية: استخدم زر الاختبار في التطبيق للتحقق من الاتصال

وصول الرسائل ببطء

  • تحقق من أتمتة Shortcuts: تأكد من أن الأتمتة تعمل دون الحاجة إلى تأكيد
  • تحديث التطبيق في الخلفية: فعّل هذا لـ Forward SMS في إعدادات iOS
  • مشاكل الشبكة: يحتاج كل من iPhone والخادم إلى اتصالات إنترنت مستقرة

الحمولة لا تُحلَّل

  • Content-Type: يستخدم الطلب Content-Type: application/json
  • تحليل JSON: تأكد من أن خادمك يحلل جسم JSON بشكل صحيح
  • ترميز الأحرف: الرسائل مشفرة بـ UTF-8

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

هل يمكنني إعادة التوجيه إلى نقاط نهاية webhook متعددة؟

نعم، أنشئ وجهات Webhook متعددة في Forward SMS. يمكن أن يكون لكل وجهة عنوان URL مختلف لنقطة النهاية، وستتلقى جميعها الرسائل المُعاد توجيهها.

ماذا يحدث إذا كانت نقطة النهاية معطلة؟

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

هل هناك حد لمعدل webhooks؟

لا يوجد حد معدل اصطناعي من Forward SMS. تُعاد توجيه الرسائل بأسرع ما تصل ويمكن لنقطة النهاية معالجتها.

هل يمكنني تصفية الرسائل التي يتم إعادة توجيهها؟

حالياً، تُعاد توجيه جميع الرسائل التي تفعّل أتمتة Shortcuts. يمكنك تنفيذ منطق التصفية في نقطة نهاية webhook الخاصة بك لتجاهل الرسائل غير المرغوب فيها.

هل يمكنني استخدام HTTP بدلاً من HTTPS؟

لا، لأسباب أمنية يتطلب Forward SMS نقاط نهاية HTTPS. هذا يضمن تشفير بيانات رسائلك أثناء النقل.

أيقونة Forward SMS

Forward SMS

أعد توجيه الرسائل النصية تلقائيًا إلى البريد الإلكتروني وSlack وTeams وDiscord

التنزيل من App Store