Skip to main content

کتابخانه رسمی پایتون برای کار با پنل پیامکی نیازپرداز

Project description

NiazpardazSms SDK for Python

کتابخانه رسمی پایتون برای کار با پنل پیامکی نیازپرداز

PyPI License Python

نصب

pip

pip install niazpardazSms

با پشتیبانی async (aiohttp)

pip install niazpardazSms[async]

با پشتیبانی httpx

pip install niazpardazSms[httpx]

همه وابستگی‌ها

pip install niazpardazSms[all]

شروع سریع

from niazpardaz_sms import NiazpardazSmsClient, SendResultCode

# ساخت کلاینت با API Key
client = NiazpardazSmsClient("YOUR_API_KEY")

# ارسال پیامک
result = client.send(
    from_number="10001234",
    to_number="09123456789",
    message="سلام از نیازپرداز!"
)

if result.result_code == SendResultCode.SEND_WAS_SUCCESSFUL:
    print(f"BatchSmsId: {result.batch_sms_id}")

امکانات

ارسال پیامک تکی

result = client.send(
    from_number="10001234",
    to_number="09123456789",
    message="متن پیامک",
    is_flash=False,
    send_delay=None
)

print(f"شناسه ارسال: {result.batch_sms_id}")
print(f"وضعیت: {result.result_code}")

ارسال گروهی (یک متن به چند شماره)

result = client.send_bulk(
    from_number="10001234",
    to_numbers=["09123456789", "09198765432"],
    message="پیام گروهی",
    is_flash=False
)

print(f"شناسه ارسال: {result.batch_sms_id}")
print(f"وضعیت: {result.result_code}")

ارسال LikeToLike (هر شماره پیام مخصوص خودش)

result = client.send_like_to_like(
    from_number="10001234",
    to_numbers=["09123456789", "09198765432"],
    messages=["سلام علی جان", "سلام رضا جان"]
)

print(f"SmsId: {result.sms_id}")

ارسال پیامک صوتی OTP

result = client.send_voice_otp(
    from_number="10001234",
    to_number="09123456789",
    otp="12345"
)

print(f"شناسه ارسال: {result.batch_sms_id}")
print(f"وضعیت: {result.result_code}")

گزارش تحویل ارسال گروهی

from niazpardaz_sms import DeliveryResultCode

delivery = client.get_batch_delivery(
    batch_sms_id=123456,
    page_index=1,
    page_size=100
)

if delivery.result_code == DeliveryResultCode.SUCCESS:
    for i, number in enumerate(delivery.numbers):
        print(f"{number}: {delivery.delivery_status[i]}")

گزارش تحویل ارسال LikeToLike

delivery = client.get_delivery_like_to_like(sms_id=789)

if delivery.result_code == DeliveryResultCode.SUCCESS:
    for i, number in enumerate(delivery.numbers):
        print(f"{number}: {delivery.delivery_status[i]}")

اعتبار

from niazpardaz_sms import CreditResultCode

credit = client.get_credit()
if credit.result_code == CreditResultCode.SUCCESS:
    print(f"اعتبار: {credit.credit}")

شماره‌های فرستنده

senders = client.get_sender_numbers()
for sender in senders.senders:
    print(sender)

تعداد پیامک‌های دریافتی

inbox_count = client.get_inbox_count(is_read=False)
print(f"تعداد: {inbox_count.inbox_count}")

لیست پیامک‌ها

message_result = client.get_messages(
    message_type=1,
    from_numbers="10001234",
    page_index=1,
    page_size=50
)

if message_result.result_code == 0:
    for message in message_result.messages:
        print(f"متن پیامک: {message.content}")

دریافت پیامک‌ها بر اساس بازه زمانی

from datetime import datetime, timedelta

message_result = client.get_messages_by_date_range(
    message_type=1,
    from_numbers="10001234",
    from_date=datetime.now() - timedelta(days=1),
    to_date=datetime.now()
)

if message_result.result_code == 0:
    for message in message_result.messages:
        print(f"متن پیامک: {message.content}")

لیست سیاه مخابرات (بررسی یک شماره)

is_black = client.number_is_in_telecom_blacklist("09123456789")
print(f"در لیست سیاه: {is_black.is_black}")

لیست سیاه مخابرات (استخراج شماره‌های لیست سیاه از یک لیست)

from niazpardaz_sms import BlacklistResultCode

blacklist = client.extract_telecom_blacklist_numbers(
    ["09123456789", "09198765432", "09351234567"]
)

if blacklist.result_code == BlacklistResultCode.SUCCESS:
    for number in blacklist.black_list_numbers:
        print(number)

بررسی محتوای پیامک

check = client.check_sms_content("متن پیامک تست")
print(f"متن معتبر است: {check.is_valid}")

استفاده Async

برای استفاده با فریم‌ورک‌های async مثل FastAPI، aiohttp یا Django async:

نصب وابستگی‌های async

pip install niazpardazSms[async]
# یا
pip install niazpardazSms[httpx]

مثال با FastAPI

from fastapi import FastAPI
from niazpardaz_sms import AsyncNiazpardazSmsClient, SendResultCode

app = FastAPI()

@app.post("/send-sms")
async def send_sms(to_number: str, message: str):
    async with AsyncNiazpardazSmsClient("YOUR_API_KEY") as client:
        result = await client.send(
            from_number="10001234",
            to_number=to_number,
            message=message
        )
        
        return {
            "success": result.result_code == SendResultCode.SEND_WAS_SUCCESSFUL,
            "batch_sms_id": result.batch_sms_id
        }

مثال با aiohttp

import asyncio
from niazpardaz_sms import AsyncNiazpardazSmsClient

async def main():
    async with AsyncNiazpardazSmsClient("YOUR_API_KEY") as client:
        # ارسال پیامک
        result = await client.send(
            from_number="10001234",
            to_number="09123456789",
            message="سلام!"
        )
        print(f"BatchSmsId: {result.batch_sms_id}")
        
        # دریافت اعتبار
        credit = await client.get_credit()
        print(f"اعتبار: {credit.credit}")

asyncio.run(main())

مثال با Django async

# views.py
from django.http import JsonResponse
from niazpardaz_sms import AsyncNiazpardazSmsClient, SendResultCode

async def send_sms_view(request):
    async with AsyncNiazpardazSmsClient("YOUR_API_KEY") as client:
        result = await client.send(
            from_number="10001234",
            to_number=request.GET.get("to"),
            message=request.GET.get("message")
        )
        
        return JsonResponse({
            "success": result.result_code == SendResultCode.SEND_WAS_SUCCESSFUL,
            "batch_sms_id": result.batch_sms_id
        })

استفاده با httpx

from niazpardaz_sms import AsyncNiazpardazSmsClient

async with AsyncNiazpardazSmsClient("YOUR_API_KEY", use_httpx=True) as client:
    result = await client.send(
        from_number="10001234",
        to_number="09123456789",
        message="سلام!"
    )

کدهای نتیجه

کدهای نتیجه ارسال (SendResultCode)

کد مقدار توضیحات
0 SEND_WAS_SUCCESSFUL ارسال موفق ✅
1 INVALID_USER_NAME_OR_PASSWORD نام کاربر یا رمز نامعتبر
2 USER_BLOCKED کاربر مسدود
3 INVALID_SENDER_NUMBER شماره فرستنده نامعتبر
4 LIMITATION_IN_DAILY_SEND محدودیت روزانه
5 LIMITATION_IN_RECEIVER_COUNT حداکثر 1000 گیرنده
6 SENDER_LINE_IS_INACTIVE خط غیرفعال
7 SMS_CONTENT_FILTERED_WORDS_IS_INCLUDED کلمات فیلتر شده
8 NO_CREDIT اعتبار ناکافی
9 SYSTEM_BEING_UPDATED در حال بروزرسانی
10 WEB_SERVICE_NO_ACTIVE وب سرویس غیرفعال
11 NOT_IMPLEMENTED پیاده سازی نشده
12 LIKE_TO_LIKE_SEND_RECEIVER_AND_MESSAGE_COUNT_SHOULD_EQUAL تعداد پیام و شماره نابرابر
13 LIMITATION_IN_MESSAGE_CONTENT_COUNT حداکثر 100 پیام
14 USER_TARIFF_NOT_DETERMINED تعرفه تعریف نشده
15 DUPLICATE_SEND_SMS ارسال تکراری
16 INVALID_NUMBER_EMPTY_OR_BLACK_LIST شماره نامعتبر یا بلاک لیست
17 TEXT_NOT_FOUND متن خالی
18 NOT_VALID_TEMPLATE_FOUND مغایرت با قالب
19 USER_EXPIRED کاربر منقضی
20 USER_IS_NOT_ACTIVE کاربر غیرفعال
21 INVALID_PARAMETERS پارامتر نامعتبر
22 IP_BLOCKED آی پی بلاک شده
23 ENQUEUE_FAILED خطا در صف ارسال
24 DUPLICATE_REQUEST_THRESHOLD درخواست تکراری
25 INVALID_API_KEY ApiKey نامعتبر
26 ERROR_CREATE_VOICE_FILE خطا در ساخت فایل صوتی

کدهای نتیجه گزارش تحویل (DeliveryResultCode)

کد مقدار توضیحات
0 SUCCESS موفق ✅
-1 SERVICE_CONNECTION_ERROR خطا در ارتباط با سرویس دهنده
-2 INVALID_BATCH_SMS_ID پیام با این کد وجود ندارد
-3 REPORT_EXPIRED مهلت یک هفته ای گزارش پایان یافته
-4 MESSAGE_IN_QUEUE پیام در صف ارسال مخابرات است
-5 TOO_EARLY حداقل یک دقیقه بعد از ارسال اقدام نمایید
-6 IP_BLOCKED آی پی بلاک شده
-7 INVALID_API_KEY ApiKey نامعتبر

وضعیت تحویل پیامک (SmsDeliveryStatus)

کد مقدار توضیحات
0 SENT_TO_TELECOM ارسال شده به مخابرات
1 DELIVERED رسیده به گوشی ✅
2 NOT_DELIVERED نرسیده به گوشی
3 SMS_FAILED خطای مخابراتی
4 UNKNOWN_ERROR خطای نامشخص
5 RECEIVED_BY_TELECOM رسیده به مخابرات
6 NOT_RECEIVED_BY_TELECOM نرسیده به مخابرات
7 BLACK_LISTED مسدود شده توسط مقصد
8 UNKNOWN نامشخص
9 REJECTED_BY_TELECOM مخابرات پیام را مردود اعلام کرد
10 CANCELED کنسل شده توسط اپراتور
11 NOT_SENT ارسال نشده
12 NO_TELEGRAM تلگرام ندارد
13 IN_QUEUE در صف ارسال

مدیریت خطا

from niazpardaz_sms import NiazpardazSmsClient, NiazpardazApiException, SendResultCode

client = NiazpardazSmsClient("YOUR_API_KEY")

try:
    result = client.send("10001234", "09123456789", "تست")
    
    if result.result_code != SendResultCode.SEND_WAS_SUCCESSFUL:
        print(f"خطا: {result.result_code}")
except NiazpardazApiException as ex:
    print(f"خطای API: {ex.message}")
    print(f"کد خطا: {ex.error_code}")
except Exception as ex:
    print(f"خطای شبکه: {ex}")

استفاده در فریم‌ورک‌های مختلف

Flask

from flask import Flask, request, jsonify
from niazpardaz_sms import NiazpardazSmsClient, SendResultCode

app = Flask(__name__)
client = NiazpardazSmsClient("YOUR_API_KEY")

@app.route("/send-sms", methods=["POST"])
def send_sms():
    data = request.json
    result = client.send(
        from_number="10001234",
        to_number=data["to"],
        message=data["message"]
    )
    
    return jsonify({
        "success": result.result_code == SendResultCode.SEND_WAS_SUCCESSFUL,
        "batch_sms_id": result.batch_sms_id
    })

Django

# views.py
from django.http import JsonResponse
from django.views.decorators.http import require_POST
from niazpardaz_sms import NiazpardazSmsClient, SendResultCode
import json

client = NiazpardazSmsClient("YOUR_API_KEY")

@require_POST
def send_sms(request):
    data = json.loads(request.body)
    result = client.send(
        from_number="10001234",
        to_number=data["to"],
        message=data["message"]
    )
    
    return JsonResponse({
        "success": result.result_code == SendResultCode.SEND_WAS_SUCCESSFUL,
        "batch_sms_id": result.batch_sms_id
    })

Celery (Background Tasks)

from celery import Celery
from niazpardaz_sms import NiazpardazSmsClient

app = Celery('tasks', broker='redis://localhost:6379/0')

@app.task
def send_sms_task(to_number: str, message: str):
    client = NiazpardazSmsClient("YOUR_API_KEY")
    result = client.send(
        from_number="10001234",
        to_number=to_number,
        message=message
    )
    return result.batch_sms_id

سازگاری

  • Python 3.7+
  • Flask
  • Django
  • FastAPI
  • aiohttp
  • Celery
  • و هر فریم‌ورک دیگری

مجوز

MIT License

پشتیبانی

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

niazpardazsms-1.0.2.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

niazpardazsms-1.0.2-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file niazpardazsms-1.0.2.tar.gz.

File metadata

  • Download URL: niazpardazsms-1.0.2.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for niazpardazsms-1.0.2.tar.gz
Algorithm Hash digest
SHA256 6c2c36df7b2ab00bf766c6db8243a93cdc13e629093adf567fd6b8e1dfda1952
MD5 208ae681739d2a67ef6f323a677c824d
BLAKE2b-256 98433ed16b6bb75af80a0b067e5efd742955f71213dfc542863c4ebffed9c6f8

See more details on using hashes here.

File details

Details for the file niazpardazsms-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: niazpardazsms-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for niazpardazsms-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d9a70297d0a9c36141909375712dbea7b223ff55cbfeda678200e901cd712c09
MD5 21bb25d51bf03271a910dfce29cc8e0d
BLAKE2b-256 4491a8088981cc821714a3d302fd36ca91ff16f92d70bcae3590cecec4a8c0b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page