Meta Tech Provider

إرسال واستقبال WhatsApp من Python

الاستقبال عبارة عن مسار في إطار الويب لديك يجيب عن GET للتحقق من Meta ويقبل POST. والإرسال طلب HTTPS إلى Cloud API يتضمن معرّف رقم الهاتف والرمز المميز. لا نوفّر SDK، ولا تحتاج إلى تثبيت أي شيء.

2 handlers

طلب GET للتحقق من Meta وطلب POST للأحداث. هذا هو جانب الاستقبال.

24 hours

النافذة التي يمكنك خلالها إرسال نص حر بعد رسالة العميل.

131047

الخطأ الذي يظهر عند إرسال نص حر خارج هذه النافذة.

كيف تستقبل الرسائل في Python؟

باستخدام معالجين على مسار واحد، ضمن أي إطار تستخدمه حاليًا.

يجيب معالج GET عن عملية التحقق من Meta. ويقرأ hub.mode وhub.verify_token وhub.challenge من سلسلة الاستعلام، ويتحقق من الرمز مقابل رمزك، ثم يعيد التحدي في نص الاستجابة الخام. إعادة JSON هنا هي الخطأ الأكثر شيوعًا، وقد تفشل بصمت.

يستقبل معالج POST الأحداث. أعد 200 بسرعة ونفّذ العمل بعدها، لأن Meta تعتبر الاستجابة البطيئة فشلًا وستعيد المحاولة، ما يعني معالجة الرسالة نفسها مرتين. ضعها في قائمة انتظار، أو سلّمها إلى مهمة في الخلفية، بدلًا من معالجتها ضمن الطلب مباشرة.

تصل الرسائل مع معرّف رسالة wamid. ومن المفيد إزالة التكرار بالاعتماد عليه منذ البداية، لأن إعادة المحاولة أمر عادي وليست حالة استثنائية.

كيف ترسل؟

أرسل طلب POST واحدًا إلى endpoint الرسائل messages في Cloud API، باستخدام معرّف رقم الهاتف ورمز وصول من نوع bearer.

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

ما يتغير مع التوقيت هو نص الطلب. خلال 24 ساعة من آخر رسالة للعميل، ترسل كائن text. وخارجها، ترسل كائن template يحدد قالبًا معتمدًا ولغته. يعمل العميل الذي يعرف الشكل الأول فقط بشكل مثالي في الاختبار، ثم يفشل عند أول رسالة ليلية ويعيد الخطأ 131047.

ما الذي يحتاجه معالج الإنتاج beyond ذلك؟

ثلاثة أمور يسهل تجاوزها، لكن إضافتها لاحقًا مكلفة.

أزل التكرار بالاعتماد على معرّف الرسالة، لأن Meta تعيد المحاولة. وتحقق من توقيع الطلب إذا كان endpoint مكشوفًا للعامة، إذ يمكن لأي شخص يعرف عنوان URL لديك أن يرسل إليه. كذلك حدّد المدة منذ آخر رسالة من جهة الاتصال، حتى يختار مسار الإرسال بين text وtemplate دون تدخل بشري.

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

الأخطاء الشائعة

  • إعادة JSON من GET التحقق بدلًا من قيمة التحدي الخام.
  • معالجة الطلب مباشرة قبل إعادة 200. تعيد Meta محاولة الاستجابات البطيئة، فتتعامل مع الرسالة مرتين.
  • إرسال نص حر دون التحقق من النافذة. يعيد 131047 ويبدو كأن شيئًا لم يحدث.
إنجاز ذلك باستخدام EasyCoexistence

صِل الرقم عبر easycoexistence.com، واضبط وجهة webhook على مسارك، واقرأ معرّف رقم الهاتف وtoken من لوحة التحكم. يبدأ السعر من US$ 9 لكل رقم شهريًا، وينخفض إلى US$ 2 مع زيادة الحجم، مع أول 7 أيام مجانًا.

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

هل يوجد SDK لـ Python؟

ليس من جانبنا، ولا تحتاج إليه. إن API تابع لـ Meta وتوثّقه Meta، ويمكن الوصول إليه باستخدام أي مكتبة HTTP.

أي إطار ينبغي أن أستخدم؟

أي إطار. المطلوب مسار يجيب عن GET ويقبل POST، وهذا ما توفره كل أطر الويب في Python.

كيف أتجنب معالجة الرسالة مرتين؟

أزل التكرار بالاعتماد على معرّف رسالة wamid في الحمولة. تعيد Meta المحاولة تصميميًا، لذا فهذا متوقع وليس حالة نادرة.

هل يمكن للفريق مواصلة استخدام الهاتف؟

نعم. يحافظ Coexistence على عمل WhatsApp Business على الرقم نفسه، ويرى معالجك ما يرسله الفريق باعتباره حدث صدى.

تابع القراءة

هل أنت مستعد للبدء؟

أعد إعداد WhatsApp Coexistence خلال دقائق، وليس أشهر. يواصل التطبيق العمل على الهاتف.

ابدأ الفترة التجريبية المجانية

تم التحقق في

إرسال WhatsApp من Python