Skip to content

About

Python examples for the Payam Resan SMS web service - one runnable file per API method

Topics

Resources

Contributing

Stars

4 stars

Watchers

1 watching

Forks

Repository files navigation

پیام رسان

نمونه‌کدهای Python وب‌سرویس پیام رسان

اتصال به وب‌سرویس پنل پیامکی پیام رسان با Python
یک فایل قابل اجرا به‌ازای هر متد سرویس، بدون هیچ وابستگی

API Python Dependencies License

فارسی · English

دنبال زبان دیگری هستید؟ همین نمونه‌ها برای زبان‌های دیگر هم در github.com/Mojeshahr هست.


شروع سریع

git clone https://github.com/Mojeshahr/python-sms-webservice.git
cd python-sms-webservice

export PAYAM_RESAN_API_KEY='123456-XXXXXXXXXXXXXXX'
export PAYAM_RESAN_SENDER='30004040'

python3 examples/v3/account-info.py

نه نصبی لازم است و نه محیط مجازی. نمونه‌ها فقط از کتابخانه استاندارد پایتون استفاده می‌کنند، یعنی urllib و json.

با account-info.py شروع کنید: چیزی ارسال نمی‌کند، اعتباری مصرف نمی‌کند، و اگر جواب داد یعنی کلید و اتصال هر دو سالم‌اند.

کدام متد را انتخاب کنم

برای ارسال متن آزاد در محیط عملیاتی، send-bulk.py. کلید را از نشانی بیرون نگه می‌دارد و برای هر گیرنده شناسه پی‌گیری می‌پذیرد.

برای رمز یک‌بارمصرف، send-token-single.py. ارسال متن آزاد برای این کار مناسب نیست؛ قالب باید از قبل تأیید شده باشد.

برای گزارش تحویل، status-by-user-trace-id.py، به‌شرطی که هنگام ارسال شناسه خودتان را فرستاده باشید.

متدها

نمونه متد کار
account-info.py AccountInfo اعتبار و خطوط فعال
send.py Send ارسال ساده با GET
send-bulk.py SendBulk یک متن به چند گیرنده، با شناسه پی‌گیری
send-multiple.py SendMultiple متن جدا برای هر گیرنده
token-list.py TokenList فهرست قالب‌ها
send-token-single.py SendTokenSingle ارسال قالب به یک شماره
send-token-single-get.py SendTokenSingle همان، با GET
send-token-multi.py SendTokenMulti یک قالب، چند گیرنده
status-by-id.py StatusById وضعیت با شناسه سامانه
status-by-user-trace-id.py StatusByUserTraceId وضعیت با شناسه خودتان
get-inbox.py GetInbox پیامک‌های رسیده

استفاده در پروژه خودتان

این مخزن یک بسته pip نیست. سه راه دارید.

۱. نمونه را کپی کنید

نمونه‌ها عمداً به هیچ چیز این مخزن وابسته نیستند، پس کپی‌کردن فایل داخل پروژه شما کافی است. فقط دو متغیر محیطی را تعریف کنید.

۲. فقط شکل درخواست را بردارید

اگر در پروژه‌تان requests یا httpx دارید، لایه urllib نمونه را نبرید. از هر فایل فقط بدنه درخواست و بررسی پاسخ را بردارید:

import os
import requests

response = requests.post(
    "https://api.sms-webservice.com/api/V3/SendBulk",
    json={
        "ApiKey": os.environ["PAYAM_RESAN_API_KEY"],
        "Sender": 30004040,
        "Text": "کد تأیید شما ۱۲۳۴۵۶ است",
        "Recipients": [{"Destination": 9121112222, "UserTraceId": 1001}],
    },
    timeout=30,
).json()

if not response["Success"]:
    raise RuntimeError(f"پیامک ارسال نشد: {response['Error']} (کد {response['ErrorCode']})")

۳. صبر کنید

یک بسته نصب‌شدنی در برنامه هست و در مخزن جداگانه‌ای منتشر می‌شود.

چند نکته که وقت‌تان را می‌خرد

کد وضعیت HTTP را نخوانید. سرویس همیشه 200 برمی‌گرداند، حتی وقتی کلید اشتباه است. تصمیم را از فیلد Success بگیرید. هر نمونه اینجا همین کار را می‌کند.

شماره گیرنده صفر ابتدایی ندارد. یعنی 9121112222 یا با کد کشور 989121112222. شماره‌ای که با 9 یا 989 شروع نشود کد خطای 13 می‌گیرد.

متن را دوباره encode نکنید. در send.py تابع urlencode خودش یک بار این کار را می‌کند. اگر پیش از آن هم quote کنید، پیامک با نویسه‌های %D8 به گوشی می‌رسد.

برای هر گیرنده یک UserTraceId یکتا بفرستید. بعد از یک timeout، این تنها راه فهمیدن این است که پیامک ثبت شده یا نه.

امنیت کلید

کلید یک راز است. در مخزن کد، در جاوااسکریپت مرورگر و در بسته اپلیکیشن موبایل نباید قرار بگیرد. جای آن متغیر محیطی است، همان‌طور که همه نمونه‌ها می‌خوانندش.

اگر کلیدی لو رفت، از پنل یکی تازه بسازید. کلید حذف‌شده برنمی‌گردد.

ساختار

مسیر چه چیزی دارد
examples/v3/ یک نمونه مستقل به‌ازای هر عملیات سرویس
.env.example نمونه متغیرهای محیطی

عدد v3 در مسیر عمدی است. نسخه تازه سرویس یعنی پوشه examples/v<n>/ تازه، و پوشه موجود دست‌نخورده می‌ماند.

مستندات و پشتیبانی

راهنمای کامل وب‌سرویس در docs.payam-resan.com است. توصیف ماشین‌خوان OpenAPI هم در sms-webservice-spec.

سؤال یا خطایی هست؟ issue باز کنید یا با پشتیبانی تماس بگیرید.

مجوز

منتشرشده با مجوز MIT. متن کامل در LICENSE.


 پنل پیامکی پیام رسان - موج شهر 
payam-resan.com  ·  mojeshahr.ir

About

Python examples for the Payam Resan SMS web service - one runnable file per API method

Topics

Resources

Contributing

Stars

4 stars

Watchers

1 watching

Forks

Contributors

Languages