احراز هویت: این سرویس کلید API را از مسیر URL میخواند (
/v1/{apiKey}/...) و هدر احراز هویتی ندارد. درخواست فقط از آیپیهای وایتلیستشده پذیرفته میشود. به احراز هویت و وایتلیست IP نگاه کنید.
یک متن مشترک را به یک یا چند شمارهٔ گیرنده ارسال میکند. گیرندهها بهصورت رشتهای جدا شده با کاما در پارامتر receptor ارسال میشوند و سرویس آنها را به قالب 09xxxxxxxxx نرمال میکند؛ شمارههای نامعتبر و تکراری باعث رد شدن کل درخواست نمیشوند بلکه بهعنوان رکوردی جداگانه با وضعیت 0 (دریافت کننده نامعتبر) یا 15 (شماره تکراری) در entries بازگردانده میشوند و فقط زمانی خطای 411 برمیگردد که هیچ شمارهٔ معتبری باقی نماند.
اگر date ارسال شود و دستکم ۶۰ ثانیه از زمان حال جلوتر باشد، پیام زمانبندی میشود و وضعیت 2 برمیگردد؛ در غیر این صورت پیام بلافاصله در صف ارسال قرار میگیرد و وضعیت 1 برمیگردد. برای ارسال آنی، اعتبار حساب پیش از ثبت پیام بررسی میشود و در صورت ناکافی بودن، خطای 418 برمیگردد.
نکتهٔ مهم: این متد هم با POST و هم با GET قابل فراخوانی است، اما تمام پارامترها فقط از query string آدرس خوانده میشوند (ctx.Query) و بدنهٔ فرم یا JSON نادیده گرفته میشود؛ بنابراین در POST هم باید پارامترها را در انتهای URL قرار دهید.
روی سرشمارههای پیامکی، عبارت لغو (\nلغو۱۱) بهصورت خودکار به انتهای متن اضافه (یا در صورت وجود، یکسانسازی) میشود؛ روی سرشمارههای پیامرسان (بله/روبیکا) این کار انجام نمیشود. هزینهٔ بازگشتی در فیلد cost بر حسب ریال است.
نکتهٔ مهم: تمام پارامترها از query string خوانده میشوند. این مسیر برای
POSTهم ثبت شده، ولی حتی درPOSTهم باید پارامترها در انتهای نشانی بیایند؛ بدنهٔform-urlencodedیا JSON خوانده نمیشود.
این مسیر با متد
GETهم ثبت شده و رفتار یکسانی دارد؛ در مستندات فقط شکلPOSTنشان داده شده است.
پارامترهای مسیر
۱| نام | نوع | الزامی | توضیح |
|---|---|---|---|
apiKey* | string | الزامی | کلید API حساب کاربری که بهصورت بخشی از مسیر ارسال میشود (نه هدر). میانافزار نمونه a1b2c3d4e5f60718293a4b5c6d7e8f90 |
پارامترهای کوئری
۷| نام | نوع | الزامی | توضیح |
|---|---|---|---|
receptor* | string | الزامی | فهرست شمارههای گیرنده، جدا شده با کاما. هر شماره باید با الگوی محدودیت: در کد سقف صریحی برای تعداد گیرنده وجود ندارد؛ اما در صورت ارسال نمونه 09121234567,09351234567,09221234567 |
message* | string | الزامی | متن پیامک. متن خالی باعث خطای 400 میشود. برای سرشمارههای پیامکی، عبارت محدودیت: در کد این مسیر هیچ محدودیت طولی برای متن اعمال نمیشود (statuscode.INVALIDMESSAGESIZE در سرویس استفاده نشده است). نمونه کد ورود شما: 12345 |
sender | string | اختیاری | شمارهٔ خط (سرشماره) فرستنده. باید متعلق به همین حساب باشد و دسترسی نمونه 30007487 |
date | integer | اختیاری | زمان ارسال بهصورت unix timestamp بر حسب ثانیه. مقدار پیشفرض، زمان جاری است. اگر مقدار کمتر از «زمان حال + ۶۰ ثانیه» باشد پیام بلافاصله ارسال میشود؛ در غیر این صورت زمانبندی شده و وضعیت پیشفرض زمان جاری سرورنمونه1757251200 |
localid | string | اختیاری | شناسههای محلی (سمت شما) برای پیامها، جدا شده با کاما. اعداد صحیح بدون علامت هستند و پس از حذف موارد تکراری، تعدادشان باید دقیقاً برابر تعداد گیرندههای معتبر باشد وگرنه خطای 400 برمیگردد. مقدار غیرقابل تجزیه نیز خطای 400 و بیش از ۲۰۰ شناسه خطای 414 میدهد. بعداً میتوان با همین شناسهها از محدودیت: حداکثر ۲۰۰ شناسهٔ یکتا نمونه 10001,10002,10003 |
file_id | string | اختیاری | شناسهٔ فایلی که پیشتر از طریق محدودیت: حداکثر ۱۰۰ کاراکتر نمونه 3f9a1c8e-2b6d-4a7f-9c31-5d0e8b7a4c22 |
type | string | اختیاری | در کد خوانده میشود اما هیچ اثری بر رفتار ارسال ندارد (فیلد نمونه 0 |
پاسخها
ساختار پاسخ
| نام | نوع | الزامی | توضیح |
|---|---|---|---|
return | ApiStatus | اختیاری | وضعیت پاسخ. مقدار |
status* | integer | الزامی | کد وضعیت — همان کد وضعیت HTTP پاسخ. نمونه 200 |
message* | string | الزامی | پیام فارسی قابل نمایش به کاربر. نمونه درخواست تایید شد. |
entries | array<MessageInfo> | اختیاری | اطلاعات یک پیامک ثبتشده ( |
messageid | integer· int64 | اختیاری | شناسهٔ پیامک در نجوا. برای رکوردهای نامعتبر/تکراری صفر است. نمونه 18392011قالبint64 |
message | string | اختیاری | متن نهایی پیامک پس از افزودن «لغو۱۱». |
status | integer | اختیاری | وضعیت پیامک: ۰ دریافت کننده نامعتبر · ۱ در صف ارسال · ۲ زمانبندی شده · ۴ ارسال شده به مخابرات · ۶ خطا در ارسال · ۱۰ رسیده به گیرنده · ۱۱ مشکل در رسیدن پیام · ۱۳ لغو شده · ۱۴ بلاک شده · ۱۵ شماره تکراری · ۱۰۰ شناسه نامعتبر. مقادیر مجاز 012461011131415100نمونه1 |
statustext | string | اختیاری | متن فارسی وضعیت. نمونه در صف ارسال |
sender | string | اختیاری | سرشمارهٔ ارسال. نمونه 3000505 |
receptor | string | اختیاری | شمارهٔ گیرنده، نرمالشده به قالب نمونه 09121234567 |
date | integer· int64 | اختیاری | زمان ثبت درخواست (unix، ثانیه). نمونه 1757145600قالبint64 |
cost | number· float | اختیاری | هزینه به ریال (مقدار داخلی تومان × ۱۰). نمونه 700قالبfloat |
نمونهٔ پاسخ
{ "return": { "status": 200, "message": "درخواست تایید شد." }, "entries": [ { "messageid": 87923451, "message": "کد ورود شما: 12345\nلغو۱۱", "status": 1, "statustext": "در صف ارسال", "sender": "30007487", "receptor": "09121234567", "date": 1757251200, "cost": 1200 }, { "messageid": 87923452, "message": "کد ورود شما: 12345\nلغو۱۱", "status": 1, "statustext": "در صف ارسال", "sender": "30007487", "receptor": "09351234567", "date": 1757251200, "cost": 1100 }, { "messageid": 0, "message": "", "status": 0, "statustext": "دریافت کننده نامعتبر", "sender": "", "receptor": "0912123", "date": 0, "cost": 0 }, { "messageid": 0, "message": "", "status": 15, "statustext": "شماره تکراری", "sender": "", "receptor": "09121234567", "date": 0, "cost": 0 } ]}