رسائل SMS من Contact Form 7 وTwilio لا تُرسل؟ الحل

رسائل SMS من Contact Form 7 وTwilio لا تُرسل؟ الحل

ظبّطت النموذج، حطّيت الـ Account SID والـ Auth Token، ضغطت «إرسال» — والموبايل ساكت. المشكلة دي بتوقف ناس كتير لأيام، والحقيقة إنها في الغالب واحدة من أربع حالات بس، وكل واحدة فيهم ليها فحص واضح ينفع تعمله في دقايق. الترتيب اللي تحت هو الترتيب اللي يوفّر عليك وقت، فامشي عليه من فوق لتحت ومتقفزش خطوة.

أولًا: افهم مسار البيانات

عندما يرسل الزائر النموذج (Form) مع تفعيل إشعارات SMS، يمر الطلب في أربع مراحل:

  1. الزائر يرسل النموذج.
  2. ووردبريس لتضيف له ميزة جديدة، مثل متجر أو نموذج تواصل أو تحسين للسيو، دون كتابة كود. اختر الإضافات الموثوقة المحدّثة، ولا…">الإضافة (Plugin) تقرأ بيانات الحقول.
  3. الإضافة ترسل طلب POST إلى واجهة برمجة التطبيقات (API) الخاصة بـ Twilio.
  4. Twilio تسلّم الرسالة إلى شركة الاتصالات.

العطل يحدث دائمًا في المرحلتين الأخيرتين، وأداة التشخيص الأولى عندك هي سجلات Twilio Console (Logs). هذا السجل يخبرك بثلاثة أشياء: هل وصل طلب أصلًا؟ ما كان نصّ الرسالة المُرسَل فعلًا؟ وما هي حالة التسليم النهائية؟

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

الحالة الأولى: تنسيق رقم الهاتف

ما ستراه: سجل الرسائل في الإضافة يقول «أُرسلت» ولا تصل رسالة. أو تظهر رسالة خطأ في التحقق.

السبب: Twilio تطلب الأرقام بتنسيق E.164، أي علامة زائد ثم رمز الدولة ثم الرقم كاملًا، بدون مسافات ولا شرطات ولا أقواس. الخطأ الأكثر شيوعًا هو إدخال الرقم المحلي كما نكتبه في الهاتف، فتقبله الإضافة وترفضه Twilio أو تفشل بصمت.

وهذه بالتحديد نقطة يقع فيها كثير من المطورين العرب، لأننا نكتب الأرقام بصفر البداية. الصفر ده لازم يتشال:

البلدالشكل المحليالشكل الصحيح لـ Twilio
مصر01012345678+201012345678
———
السعودية0512345678+966512345678
الإمارات0501234567+971501234567
الأردن0791234567+962791234567

ينطبق نفس الشرط على حقلين معًا: رقم المستلم (To) ورقم Twilio المُرسِل (From).

كيف تتحقق: أرسل رسالة اختبار من لوحة Twilio مباشرة إلى نفس الرقم. إذا وصلت من اللوحة ولم تصل من الإضافة، فالخلل في تنسيق الرقم داخل إعدادات الإضافة، لا في الحساب.

الحالة الثانية: الوسوم لا تُستبدل

ما ستراه: الرسالة تصل بشكل سليم إذا كان النص ثابتًا، لكنها لا تصل — أو تصل فارغة — بمجرد إضافة وسوم Contact Form 7 مثل [your-name] أو [your-message].

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

كيف تعالجها:

  • راجع سجل الرسائل داخل الإضافة. بعض الإضافات فيها تبويب SMS History يعرض النص المُرسَل فعلًا. إذا ظهر الوسم نفسه [your-name] بدلًا من الاسم، فالاستبدال هو العطل وليس الإرسال.
  • اختبر بأصغر نموذج ممكن. أنشئ نموذجًا فيه حقل نصي واحد، وضع وسمه في نص الرسالة، وأرسل. إذا لم يُستبدل الوسم في هذه الحالة البسيطة، فالمشكلة في الإضافة قطعًا.
  • تأكد من مطابقة الاسم حرفيًا. الوسم في نص الرسالة يجب أن يطابق اسم الحقل في النموذج تمامًا، وهذا الاسم حسّاس لحالة الأحرف.
  • راسل مطوّر الإضافة. هذا خلل معروف في بعض إضافات الربط، وقد تكون هناك نسخة مُصلَحة غير منشورة. أرسل له نسخة Contact Form 7 ونسخة الإضافة وصورة من السجل تُظهر الوسوم غير المُستبدلة.

تنبيه خاص بالعربية: إذا كان الحقل يحتوي نصًا عربيًا، فالرسالة تُرسل بترميز Unicode، وهذا يقلّص طول الرسالة الواحدة من 160 حرفًا إلى 70 حرفًا فقط. رسالة عربية طويلة تُقسم إلى عدة رسائل وتُحاسب كعدة رسائل. اختبر بنص عربي حقيقي لا بنص إنجليزي، وراجع عدد الأجزاء في سجل Twilio.

الحالة الثالثة: إعداد حساب Twilio

ما ستراه: لا يظهر أي سجل في Twilio على الإطلاق. النموذج يُرسل بنجاح، وTwilio لم تستلم شيئًا.

السبب: الإضافة تفشل في المصادقة، أو الرقم غير مهيأ لإرسال الرسائل.

الخطوات بالترتيب:

  1. تحقق من بيانات الاعتماد. افتح لوحة Twilio وانسخ الـ Account SID والـ Auth Token من جديد والصقهما في الإضافة. المسافة الزائدة في نهاية النسخ سبب متكرر ومملّ.
  2. تحقق من قدرات الرقم. من Phone Numbers ← Manage ← Active Numbers، تأكد أن الرقم لديه قدرة SMS. أرقام الصوت فقط لن ترسل رسائل أبدًا.
  3. تحقق من قيود الحساب التجريبي. الحساب التجريبي يرسل فقط إلى أرقام موثّقة. أضف رقم المستلم إلى قائمة الأرقام الموثقة أو قم بترقية الحساب.
  4. تحقق من متطلبات شركة الاتصالات في بلد المستلم. إذا كنت ترسل لأرقام أمريكية، تحتاج تسجيل A2P 10DLC مكتملًا وإلا حجبت الشركات رسائلك. أما في مصر والخليج فالشرط العملي المعتاد هو اسم مُرسِل (Sender ID) معتمد لدى المزوّد، والرسائل التسويقية لها قواعد أكثر تشددًا من الرسائل التشغيلية. اسأل مزوّدك عن متطلباته قبل أن تفترض أن العطل تقني.

الحالة الرابعة: خطأ صريح من الـ API

ما ستراه: رمز خطأ محدد داخل إعدادات الإضافة بعد تفعيل عرض الأخطاء، أو في سجلات Twilio.

السبب: Twilio ترجع لك بالضبط ما هو الخطأ — لكنك لا تراه إلا إذا فعّلت العرض.

رمز الخطأمعناهالحل
21604رقم المستلم مطلوبأضف رقم المستلم في إعدادات الإضافة
———
14101قيمة «To» غير صحيحةراجع تنسيق الرقم، ووثّق الرقم إن كان الحساب تجريبيًا
أي خطأ 4XXخطأ عام في الـ APIابحث عن الرمز تحديدًا في توثيق أخطاء Twilio

الخطوة العملية: فعّل خيار Show Error Message في إعدادات الإضافة، أرسل النموذج مرة أخرى، وانسخ نص الخطأ حرفيًا وابحث عنه في توثيق Twilio. رمز الخطأ يوفّر عليك ساعة تخمين.

قائمة التشخيص السريعة

امشِ على هذا الترتيب في كل مرة تفشل رسالة:

#الخطوةماذا تخبرك
1راجع سجلات Twilio Consoleهل أُرسل طلب أصلًا؟ إذا لا، فالعطل في ووردبريس
———
2راجع سجل الرسائل في الإضافةما النص الذي أُرسل فعلًا؟ هل استُبدلت الوسوم؟
3فعّل عرض الأخطاءما رمز الخطأ الصريح؟
4اختبر بقيم ثابتة بدون وسوميفصل مشكلة الوسوم عن مشكلة الإعداد
5تحقق من تنسيق الرقم+ ثم رمز الدولة ثم الرقم بدون صفر
6تحقق من قيود الحساب التجريبيهل الرقم موثّق؟

في Elementor: نفس الفكرة بدون إضافة وسيطة

لو أنت على استضافة تشتغل بـ القالب كاملًا والنماذج والنوافذ المنبثقة.">Elementor Pro أو JetEngine، عندك طريق أنضف من إضافة ربط خارجية:

  • Elementor Pro Forms فيه إجراء Webhook يرسل بيانات النموذج إلى أي رابط. تربطه بخدمة أتمتة أو بنقطة نهاية لوحة التحكم. عليها تعتمد تطبيقات الموبايل والمواقع المنفصلة…">REST API خاصة بك، ومنها تنادي Twilio أو المزوّد المحلي.
  • JetFormBuilder من ومنشئ الاستعلامات مع Elementor.">JetEngine وJetSmartFilters وJetFormBuilder وJetWooBuilder. تعمل مع Elementor ومحرر الكتل وتُباع منفردة أو كحزمة.">Crocoblock فيه إجراء Webhook وإجراء Call Hook، فتستطيع تشغيل دالة PHP خاصة عند كل إرسال — أي تحكم كامل في شكل الطلب المُرسَل ورقمه ونصه.

الميزة العملية هنا أنك ترى الخطأ في سجل الموقع بنفسك بدلًا من انتظار ما تعرضه إضافة وسيطة. والعيب أنك تكتب كود الطلب بنفسك. القاعدة: إذا كان الربط بسيطًا ويعمل، أبقِ الإضافة؛ وإذا دخلت في دوامة أخطاء صامتة، انتقل إلى Webhook وتحكّم في الطلب بيدك.

بعد ما تشتغل: نموذج واحد وأكثر من جهة

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

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

الخلاصة

خمس حقايق تحفظهم وتخلّص الموضوع ده: الأرقام لازم تكون E.164 بعلامة زائد ورمز الدولة وبدون صفر البداية، والوسوم اختبرها لوحدها بنص ثابت الأول، والحساب التجريبي بيبعت لأرقام موثقة بس، والنص العربي بياخد 70 حرف مش 160، وسجلات Twilio هي أول مكان تبص فيه مش آخر مكان.

ولو موقعك تجاري وبتعتمد على الرسايل في تأكيد الأوردرات، خُد خطوة زيادة: خلّي عندك تنبيه بريد كنسخة احتياطية جانب الـ SMS. الرسايل بتفشل لأسباب خارجة عن إيدك عند شركات الاتصالات، والعميل اللي مستني تأكيد مش بيفرق معاه سبب الفشل.

مرجع المقال (بالإنجليزية): CF7 to Twilio SMS Not Sending After Form Submit: A Complete Troubleshooting Guide
المقال ده مش ترجمة حرفية: متكيّف للقارئ العربي ومضاف عليه سياق ووردبريس وElementor وJetEngine.

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

لماذا يعمل نموذج Contact Form 7 ولا تصل رسالة SMS؟

لأن إرسال الرسالة مرحلة منفصلة عن حفظ النموذج. النموذج ينجح أولًا، ثم تُرسل الإضافة طلبًا إلى Twilio. أي خطأ في الرقم أو بيانات الحساب أو الوسوم يوقف الرسالة دون أن يظهر أي خطأ للزائر.

ما هو تنسيق E.164 وكيف أكتب رقمًا مصريًا به؟

علامة زائد ثم رمز الدولة ثم الرقم بدون صفر البداية وبدون مسافات أو شرطات. رقم مصري مثل 01012345678 يُكتب +201012345678، والسعودي 0512345678 يُكتب +966512345678.

أرسل من حساب Twilio تجريبي ولا تصل الرسائل، لماذا؟

الحسابات التجريبية في Twilio ترسل فقط إلى أرقام موثّقة مسبقًا في لوحة التحكم. أضف رقم المستلم لقائمة الأرقام الموثقة، أو قم بترقية الحساب.

الوسوم مثل ‎[your-name]‎ تظهر كما هي في الرسالة، ما الحل؟

هذا يعني أن استبدال الوسوم يفشل قبل الإرسال. اختبر بنموذج بسيط فيه حقل واحد، وراجع سجل الرسائل في الإضافة؛ إذا ظهر الوسم نفسه في السجل فالخلل في الإضافة وليس في Twilio.

هل هناك بديل محلي لـ Twilio للرسائل في مصر والخليج؟

نعم، هناك مزودون إقليميون مثل SMSMisr وVictory Link في مصر وUnifonic في الخليج، وغالبًا تكون تكلفة الرسالة المحلية أقل ومعدل الوصول أفضل. لكن معظمهم يحتاج تسجيل اسم مُرسِل (Sender ID) قبل التشغيل، فاسأل المزود عن المتطلبات قبل الربط.

هل أحتاج تسجيل A2P 10DLC؟

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

اترك تعليقاً