مكتبة Python

إرسال رسائل SMS وواتساب ورموز OTP بلغة Python عبر المكتبة الرسمية

envoisms هي مكتبة Python الرسمية من EnvoiSMS.ma. نفّذ pip install envoisms، وأنشئ EnvoiSMSClient بمفتاح API الخاص بك، ثم أرسل رسائل SMS وواتساب ورموز التحقق من سكربت أو من عرض Django أو خدمة FastAPI.

send.py (SDK envoisms, Python)
# pip install envoisms import os from envoisms import EnvoiSMSClient, EnvoiSMSError client = EnvoiSMSClient(api_key=os.getenv("ENVOISMS_API_KEY"), max_retries=3, timeout=20) try: response = client.send( to="+212600000000", message="Votre commande #1042 est confirmée.", from_sender="MonBusiness", # Sender ID validé, ou omis ) # Idempotency-Key ajouté : un nouvel essai ne facture jamais deux fois print(f"Message ID: {response['id']}") except EnvoiSMSError as e: print(f"Échec ({e.status_code} {e.code}): {e}") # OTP géré : envoi puis vérification otp = client.send_otp(to="+212600000000", brand="MonBusiness", code_length=6, expiry=600) check = client.check_otp(session_id=otp["session_id"], code="492018") print(check.get("verified"))
● Routes locales MarocIAM • Inwi • Orange
https://api.envoisms.ma/v1
توجيه محلي
Maroc Telecom (IAM) • Inwi • Orange
إشعارات تسليم حقيقية DLR
توقيع HMAC-SHA256
تسعير واضح بالدرهم
dès 0,60 MAD/SMS • 5 MAD offerts

التثبيت وأول رسالة SMS

pip install envoisms، ثم ‎client = EnvoiSMSClient(api_key=os.getenv("ENVOISMS_API_KEY")). تعيد ‎client.send(to="+212600000000", message="…", from_sender="MonBusiness")‎ معرّف الرسالة، الذي تتابعه عبر get_message() وتجده في الويب هوك.

  • from envoisms import EnvoiSMSClient
  • from_sender: اسم المرسل المعتمد، أو احذفه لاستعمال المرسل الافتراضي
  • send_bulk(messages=[...], from_sender=...) للإرسال الجماعي؛ وlist_messages(limit=50, offset=0) لآخر عمليات الإرسال

إرسال آمن عند الإعادة والأخطاء

يحمل كل استدعاء send() وsend_bulk() مفتاح Idempotency-Key — مولَّدًا، أو مرّر idempotency_key= — فلا تُفوتر إعادة المحاولة بعد انتهاء المهلة الرسالة نفسها مرتين أبدًا. ويعيد العميل محاولة ردود 5xx وأخطاء الشبكة حتى max_retries مرة (2 افتراضيًا) بمهلة متزايدة، ثم يرمي EnvoiSMSError مع الخاصيتين status_code وcode.

  • EnvoiSMSClient(api_key=..., max_retries=3, timeout=20)
  • except EnvoiSMSError as e: e.status_code, e.code

SMS أم واتساب، والانتقال التلقائي

SMS افتراضيًا: تصل إلى كل الهواتف المغربية دون أي إعداد غير مفتاح API. أما channel="whatsapp" فترسل من رقم WhatsApp Business الخاص بك المربوط بالمنصة — 403 WHATSAPP_NOT_CONNECTED بدونه، و400 OUT_OF_24H_WINDOW للنص الحر خارج نافذة 24 ساعة، ولا خصم في الحالتين. خارج النافذة مرّر قالبًا معتمدًا. وcascade=True تعيد الرسالة إلى SMS إذا تعذر الوصول إلى الرقم أو لم يكن لديه واتساب.

  • template={"name": "order_shipped", "language": "fr", "variables": ["89240"]}
  • اترك channel على "sms" لأي نص عادي إلى زبون

OTP والويب هوك والحساب

تعيد ‎client.send_otp(to=..., brand="MonBusiness", code_length=6, expiry=600)‎ معرّف session_id؛ وتعيد ‎client.check_otp(session_id=..., code=...)‎ الحقل verified؛ وتقرأ get_otp_session() الجلسة دون استهلاك محاولة. وتتحقق ‎EnvoiSMSClient.verify_webhook_signature(raw_body=..., signature_header=..., secret=...)‎ من الترويسة X-EnvoiSMS-Signature على جسم الطلب الخام.

  • send_otp(..., channel="whatsapp"): رمز عبر واتساب من المرسل المشترك، دون ربط
  • get_balance() وlist_packs() وcreate_topup(amount_mad=200, payment_method="stripe")
  • analytics(days=30) وcreate_api_key() وcreate_optout()

كل ما تحتاج معرفته عن مكتبة Python.

هل تعمل المكتبة مع Django وFlask وFastAPI؟
نعم. العميل كائن Python عادي: استدعه من عرض أو مهمة أو سكربت. وللويب هوك، مرّر جسم الطلب الخام (request.body في Django) إلى verify_webhook_signature() قبل الوثوق بالمحتوى.
كيف أرسل رمز OTP عبر واتساب من Python؟
client.send_otp(to=..., brand=..., channel="whatsapp"). يمر الرمز عبر المرسل المشترك لـ EnvoiSMS: لا حاجة لربط رقم واتساب الخاص بك.
كيف أختبر دون إرسال رسائل حقيقية؟
أنشئ العميل بمفتاح Sandbox من نوع env_test_: يُعاد تنفيذ مسار الإرسال كاملًا — التحقق والتسعير والويب هوك — دون أي تسليم أو خصم.

ابدأ التكامل مع مكتبة Python الآن

أنشئ حسابك في أقل من دقيقتين. احصل فوراً على رصيد 5 دراهم مجاناً لاختبار الـ API.