S M S A F Z A R
تلفن تماس

031-34369080

آدرس ایمیل

Info@SMSAfzar.com

آدرس

اصفهان، خیابان 5 آذر، مجتمع آذر

تلفن تماس
031-34369080
آدرس ایمیل
Info@SMSAfzar.com
آدرس
اصفهان، خیابان 5 آذر، مجتمع آذر

وب سرویس ارسال و دریافت پیامک

معرفی ارسال پیام از طریق URL
سرویس ارسال پیام از طریق URL به صورت امن HTTPS طراحی شده و به راحتی در همه‌ی زبان‌های برنامه‌نويسی قابل استفاده می باشد. با استفاده از این سرویس می توانید به حالت های مختلف شرح داده شده در این مستند اقدام به ارسال پیام نمایید. برای استفاده از این سرویس کافیست پارامترهای مربوطه را در قالب Query String به آدرس URL مربوطه ارسال نمایید.
آغاز کار با سرويس :
گام اول : ايجاد حساب کاربری در سامانه : https://api.smsafzar.ir
جهت دسترسی به رویس ارسال پیام از طریق URL می‌ توانید یکی از دو روش احراز هویت زیر را انتخاب نمایید :
روش مبتنی بر اطلاعات حساب کاربری :
  • پس از ایجاد حساب کاربری یک نام کاربری (UserName) ، کلمه عبور (Password) و نام دامنه (Domain) در اختیار شما قرار داده می شود. به صورت پیش فرض از کلمه عبور حساب کاربری جهت احراز هویت در سرویس مربوطه استفاده می شود و در صورت تمایل می توانید کلمه عبور مربوط به احراز هویت در سرویس ارسال پیام از طریق URL را تغییر دهید برای این منظور پس از ورود به حساب کاربری خود از منوی امکانات پیشرفته، خدمات وب، زیر منوی ارسال پیام از طریق URL، گزینه ی تنظیمات ارسال پیام از طریق URL را انتخاب نمایید و در سر برگ تغییر کلمه عبور ارسال پیام از طریق URL، نسبت به تغییر کلمه عبور سرویس اقدام نمایید.
  • تنظیمات امنیتی :
    • تعیین آدرس های IP معتبر : در صورت تمایل می توانید از منوی امکانات پیشرفته، خدمات وب، زیر منوی ارسال پیام از طریق URL، گزینه ی تنظیمات احراز هویت با اطلاعات کاربری، سربرگ مدیریت آدرس های IP ارسال پیام از طریق URL، نسبت به تعریف آدرس های IP معتبر جهت فراخوانی سرویس اقدام نمایید. در صورت تعیین آدرس های IP معتبر، درخواست ‌هایی با مبدا غير از آدرس های IP تعریف شده با کد خطای 403 مواجه خواهند شد و سرویس از پاسخ‌ گویی به این درخواست‌ ها خودداری می نماید.
روش مبتنی بر Api Key :
  • این روش ساده و سریع است و نیاز به احراز هویت از طریق اطلاعات حساب کاربری ندارد.
  • در این روش می توانید از طریق منوی امکانات پیشرفته، خدمات وب، مدیریت کلیدهای Api، گزینه ی تعریف کلید Api، کلید مورد نظر خود را ایجاد نمایید.
  • کلید ایجاد شده می بایست در در زمان فراخوانی URL جهت ارسال پیام، به عنوان پارامتر apiKey ارسال گردد تا فرایند احراز هویت انجام گیرد.
  • تنظیمات امنیتی :
    • تعیین آدرس های IP معتبر : در صورت تمایل در زمان تعریف کلید Api می توانید نسبت به تعریف آدرس های IP معتبر جهت فراخوانی وب سرویس اقدام نمایید. در صورت تعیین آدرس های IP معتبر، درخواست ‌هایی با مبدا غير از آدرس های IP تعریف شده با کد خطای 403 مواجه خواهند شد و سرویس از پاسخ‌ گویی به این درخواست‌ ها خودداری می نماید.
    • تعیین تاریخ انقضا کلید : شما می توانید کلید API را بدون تاریخ انقضا ایجاد نمایید یا برای کلید یک تاریخ انقضای دلخواه تعیین نمایید به این ترتیب پس از فرا رسیدن تاریخ انقضا، کلید به صورت خودکار منقضی شده و دیگر قابل استفاده نخواهد بود.
گام سوم : پس از انتخاب روش احراز هویت، می‌توانید با استفاده از پارامترهای مربوطه، URL مربوط به سرویس ارسال پیام را فراخوانی و پیام خود را ارسال نمایید.
نکات :
حداکثر تعداد شماره های فرستنده، شماره های گیرنده و متن پیام ها در هر درخواست‌ یکصد (۱۰۰) عدد می باشد. ارسال بيش از این تعداد با کد خطا مواجه خواهد شد.
در پاسخ فراخوانی URL در صورتی که کد وضعیت پاسخ HTTP برابر با ۲۰۰ باشد عملیات با موفقیت انجام شده است، و هر کد وضعیت پاسخ Http دیگری نشانگر نوع خطای رخ داده در فراخوانی متد مربوطه می باشد. ()
کلیه فراخوانی های مربوط به ارسال پیام از طریق URL شامل: تاریخ فراخوانی، آدرس IP، کد وضعیت پاسخ Http، درخواست ارسالی، پاسخ ارسال شده توسط سرور و مشخصات سیستم ارسال کننده درخواست، از طریق منوی امکانات پیشرفته، خدمات وب، زیر منوی ارسال پیام از طریق URL، گزینه ی لیست فراخوانی های ارسال پیام از طریق URL قابل مشاهده می باشد.
نحوه فراخوانی URL جهت ارسال پیام
https://api.smsafzar.ir/api/v1/messages/send/url?apiKey=yourApiKey&senderNumber=yourSenderNumber&recipientNumber=yourRecipientNumber&content=yourMessageContent
https://api.smsafzar.ir/api/v1/messages/send/url/credentials?username=yourUserName&password=yourPassword&domain=sms.smsafzar&senderNumber=yourSenderNumber&recipientNumber=yourRecipientNumber&content=yourMessageContent
روش فراخوانی URL با Http : GET, POST
از این سرویس جهت ارسال چندین پیام به شماره های گیرنده استفاده می شود.
حالت های قابل ارسال با استفاده از این سرویس عبارتند از :
1 ارسال پیام با یک متن با یک شماره فرستنده به یک شماره گیرنده
1 ارسال پیام با متن یکسان با شماره فرستنده یکسان به شماره گیرندگان متفاوت
2 ارسال پیام با متن یکسان با شماره فرستنده های متفاوت به شماره گیرندگان متفاوت
3 ارسال پیام با متن یکسان با شماره فرستنده های متفاوت به یک شماره گیرنده
4 ارسال پیام با متن های متفاوت با شماره فرستنده یکسان به شماره گیرندگان متفاوت
5 ارسال پیام با متن های متفاوت با شماره فرستنده های متفاوت به شماره گیرندگان متفاوت
6 ارسال پیام با متن های متفاوت با شماره فرستنده های متفاوت به یک شماره گیرنده
6 ارسال پیام با متن های متفاوت با شماره فرستنده یکسان به یک شماره گیرنده
پارامترهای ورودی :
روش اول از طریق Api Key :
apiKey مقدار Api Key
senderNumber شماره فرستنده
recipientNumber شماره گیرنده
content متن پیام
روش دوم از طریق اطلاعات حساب کاربری :
username نام کاربری
password کلمه عبور
domain نام دامنه
senderNumber شماره فرستنده
recipientNumber شماره گیرنده
content متن پیام
مقدار پارامتر senderNumber (شماره فرستنده) می تواند به یکی از صورت های زیر باشد :

1000xxxx
00981000xxxx
+981000xxxx
981000xxxx

مقدار پارامتر recipientNumber (شماره های گیرنده) می تواند به یکی از صورت های زیر باشد :

09xxxxxxxxx
9xxxxxxxxx
00989xxxxxxxxx
+989xxxxxxxxx
989xxxxxxxxx

مقدار پارامتر content (متن پیام) می بایست حاوی مقدار باشد و ارسال مقادیری که تنها شامل فاصله خالی (space) باشد معتبر نمی باشند.
در صورتی که مقدار هر یک از پارامترهای password (کلمه عبور) و content (متن پیام) شامل کاراکترهای خاص مانند : ? & # / و غیره باشد می بایست مقدار پارامترهای مربوطه Encode شده و سپس اقدام به فراخوانی URL نمایید.
حالت های مختلف فراخوانی URL به صورت ذیل می باشد :
1- ارسال پیام با یک متن با یک شماره فرستنده به یک شماره گیرنده :
روش اول از طریق Api Key :
https://api.smsafzar.ir/api/v1/messages/send/url?apiKey=yourApiKey&senderNumber=yourSenderNumber&recipientNumber=yourRecipientNumber&content=yourMessageContent
روش دوم از طریق اطلاعات حساب کاربری :
https://api.smsafzar.ir/api/v1/messages/send/url/credentials?username=yourUserName&password=yourPassword&domain=sms.smsafzar&senderNumber=yourSenderNumber&recipientNumber=yourRecipientNumber&content=yourMessageContent
2- ارسال پیام با متن یکسان با شماره فرستنده یکسان به شماره گیرندگان متفاوت :
روش اول از طریق Api Key :
https://api.smsafzar.ir/api/v1/messages/send/url?apiKey=yourApiKey&content=yourMessageContent&senderNumber=10001000&recipientNumber=09100000000&recipientNumber=09200000000&recipientNumber=09300000000&recipientNumber=09900000000
روش دوم از طریق اطلاعات حساب کاربری :
https://api.smsafzar.ir/api/v1/messages/send/url/credentials?username=yourUserName&password=yourPassword&domain=sms.smsafzar&content=yourMessageContent&senderNumber=10001000&recipientNumber=09100000000&recipientNumber=09200000000&recipientNumber=09300000000&recipientNumber=09900000000
3- ارسال پیام با متن یکسان با شماره فرستنده های متفاوت به شماره گیرندگان متفاوت :
روش اول از طریق Api Key :
https://api.smsafzar.ir/api/v1/messages/send/url?apiKey=yourApiKey&content=yourMessageContent&senderNumber=10001000&senderNumber=20002000&senderNumber=30003000&senderNumber=50002000&recipientNumber=09100000000&recipientNumber=09200000000&recipientNumber=09300000000&recipientNumber=09900000000
روش دوم از طریق اطلاعات حساب کاربری :
https://api.smsafzar.ir/api/v1/messages/send/url/credentials?username=yourUserName&password=yourPassword&domain=sms.smsafzar&content=yourMessageContent&senderNumber=10001000&senderNumber=20002000&senderNumber=30003000&senderNumber=50002000&recipientNumber=09100000000&recipientNumber=09200000000&recipientNumber=09300000000&recipientNumber=09900000000
4- ارسال پیام با متن یکسان با شماره فرستنده های متفاوت به یک شماره گیرنده :
روش اول از طریق Api Key :
https://api.smsafzar.ir/api/v1/messages/send/url?apiKey=yourApiKey&content=yourMessageContent&recipientNumber=09100000000&senderNumber=10001000&senderNumber=20002000&senderNumber=30003000&senderNumber=50002000
روش دوم از طریق اطلاعات حساب کاربری :
https://api.smsafzar.ir/api/v1/messages/send/url/credentials?username=yourUserName&password=yourPassword&domain=sms.smsafzar&content=yourMessageContent&senderNumber=10001000&senderNumber=20002000&senderNumber=30003000&senderNumber=50002000&recipientNumber=09100000000&recipientNumber=09200000000&recipientNumber=09300000000&recipientNumber=09900000000
5- ارسال پیام با متن های متفاوت با شماره فرستنده یکسان به شماره گیرندگان متفاوت :
روش اول از طریق Api Key :
https://api.smsafzar.ir/api/v1/messages/send/url?apiKey=yourApiKey&senderNumber=10001000&recipientNumber=09100000000&recipientNumber=09200000000&recipientNumber=09300000000&recipientNumber=09900000000&content=yourMessageContent1&content=yourMessageContent2&content=yourMessageContent3&content=yourMessageContent4
روش دوم از طریق اطلاعات حساب کاربری :
https://api.smsafzar.ir/api/v1/messages/send/url/credentials?username=yourUserName&password=yourPassword&domain=sms.smsafzar&senderNumber=10001000&recipientNumber=09100000000&recipientNumber=09200000000&recipientNumber=09300000000&recipientNumber=09900000000&content=yourMessageContent1&content=yourMessageContent2&content=yourMessageContent3&content=yourMessageContent4
6- ارسال پیام با متن های متفاوت با شماره فرستنده های متفاوت به شماره گیرندگان متفاوت :
روش اول از طریق Api Key :
https://api.smsafzar.ir/api/v1/messages/send/url?apiKey=yourApiKey&senderNumber=10001000&senderNumber=20002000&senderNumber=30003000&senderNumber=50002000&recipientNumber=09100000000&recipientNumber=09200000000&recipientNumber=09300000000&recipientNumber=09900000000&content=yourMessageContent1&content=yourMessageContent2&content=yourMessageContent3&content=yourMessageContent4
روش دوم از طریق اطلاعات حساب کاربری :
https://api.smsafzar.ir/api/v1/messages/send/url/credentials?username=yourUserName&password=yourPassword&domain=sms.smsafzar&senderNumber=10001000&senderNumber=20002000&senderNumber=30003000&senderNumber=50002000&recipientNumber=09100000000&recipientNumber=09200000000&recipientNumber=09300000000&recipientNumber=09900000000&content=yourMessageContent1&content=yourMessageContent2&content=yourMessageContent3&content=yourMessageContent4
7- ارسال پیام با متن های متفاوت با شماره فرستنده های متفاوت به یک شماره گیرنده :
روش اول از طریق Api Key :
https://api.smsafzar.ir/api/v1/messages/send/url?apiKey=yourApiKey&recipientNumber=09100000000&senderNumber=10001000&senderNumber=20002000&senderNumber=30003000&senderNumber=50002000&content=yourMessageContent1&content=yourMessageContent2&content=yourMessageContent3&content=yourMessageContent4
روش دوم از طریق اطلاعات حساب کاربری :
https://api.smsafzar.ir/api/v1/messages/send/url/credentials?username=yourUserName&password=yourPassword&domain=sms.smsafzar&recipientNumber=09100000000&senderNumber=10001000&senderNumber=20002000&senderNumber=30003000&senderNumber=50002000&content=yourMessageContent1&content=yourMessageContent2&content=yourMessageContent3&content=yourMessageContent4
8 - ارسال پیام با متن های متفاوت با شماره فرستنده یکسان به یک شماره گیرنده :
روش اول از طریق Api Key :
https://api.smsafzar.ir/api/v1/messages/send/url/credentials?username=yourUserName&password=yourPassword&domain=sms.smsafzar&senderNumber=10001000&recipientNumber=09100000000&content=yourMessageContent1&content=yourMessageContent2&content=yourMessageContent3&content=yourMessageContent4
روش دوم از طریق اطلاعات حساب کاربری :
https://api.smsafzar.ir/api/v1/messages/send/url/credentials?username=yourUserName&password=yourPassword&domain=sms.smsafzar&senderNumber=10001000&recipientNumber=09100000000&content=yourMessageContent1&content=yourMessageContent2&content=yourMessageContent3&content=yourMessageContent4
خروجی :
کد های وضعیت که در پاسخ Http توسط این متد بازگشت داده می شوند عبارتند از :
400 درخواست ارسالی صحیح نمی باشد. در صورتی که مقادیر پارامترهای ارسالی معتبر نباشند و یا فراخوانی متد با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود کد وضعیت پاسخ Http برابر با ۴۰۰ خواهد بود. مقدار پارامتر errorCode در خروجی، برابر با کد خطای مربوطه و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد. در صورتی که مقادیر پارامترهای ارسالی معتبر نباشند، پارامتر validationErrors، آرایه ای شامل نام پارامتر (field) و شرح خطای مربوط به نامعتبر بودن مقدار پارامتر (errorMessage) می باشد. ( لیست کدهای خطا )
نمونه های مختلف خروجی :
{
  "errorCode": 1001,
  "errorMessage": ".مقادیر پارامترهای ارسالی معتبر نمی باشند",
  "validationErrors": [
    {
      "field": "senderNumbers",
      "errorMessage": ".فیلد [ شماره های فرستنده ] را وارد نمایید"
    },
    {
      "field": "recipientNumbers",
      "errorMessage": ".فیلد [ شماره های گیرنده ] را وارد نمایید"
    },
    {
      "field": "contents",
      "errorMessage": ".فیلد [ متن پیام ها ] را وارد نمایید"
    }
  ]
}
{
  "errorCode": 1053,
  "errorMessage": ".شماره خط فرستنده در حساب کاربر تعریف نشده است"
}
در صورتی که ارسال پیام ها با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود به طوری که هیچگونه پیام قابل ارسالی موجود نباشد، خروجی حاوی آرایه ای از اطلاعات پیام ها به همراه جزئیات خطای رخ داده برای هر پیام و صورت ذیل می باشد :
{
  "errorCode": 1003,
  "errorMessage": ".اطلاعات صحیحی جهت ارسال یافت نشد",
  "messages": [
    {
      "senderNumber": "10001000",
      "recipientNumber": "09100000000",
      "content": "Your message content 1",
      "errorCode": 1053,
      "errorMessage": ".شماره خط فرستنده در حساب کاربر تعریف نشده است"
    },
    {
      "senderNumber": "20002000",
      "recipientNumber": "09300000000",
      "content": "Your message content 2",
      "errorCode": 1048,
      "errorMessage": ".اپراتور: 2000 توسط مدیریت غیر فعال شده است"
    }
  ]
}
پارامترهای خروجی عبارتند از :
errorCode کد خطا
errorMessage شرح خطا
messages آرایه ای از پیام ها به همراه جزئیات خطای رخ داده برای هر پیام
پارامترهای هر عنصر از آرایه‌ی messages (پیام ها) عبارتند از :
senderNumber شماره فرستنده
recipientNumber شماره گیرنده
content متن پیام
errorCode کد خطا
errorMessage شرح خطا
401 خطای اهراز هویت رخ داده است. (مقدار پارامتر errorCode در خروجی، برابر با عدد ۴۰۱ و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
نمونه خروجی :
{
  "errorCode": 401,
  "errorMessage": ".خطای احراز هویت رخ داده است"
}
403
مجوز دسترسی به متد برای حساب کاربری تعریف نشده است. (مقدار پارامتر errorCode در خروجی، برابر با عدد ۱۰۰۵ و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
آدرس IP جهت دسترسی به سرویس معتبر نمی باشد. (مقدار پارامتر errorCode در خروجی، برابر با عدد ۱۰۰۶ و مقدار پارامتر errorMessage علت عدم دسترسی کاربر به سرویس می باشد.)
نمونه خروجی :
{
  "errorCode": 1005,
  "errorMessage": ".مجوز دسترسی به متد برای حساب کاربری تعریف نشده است"
}
{
  "errorCode": 1006,
  "errorMessage": ".آدرس آی پی جهت دسترسی به سرویس معتبر نمی باشد"
}
500 خطایی در سرور رخ داده است. (مقدار پارامتر errorCode در خروجی، برابر با کد خطای مربوطه جهت ارائه به بخش پشتیبانی و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
نمونه خروجی :
{
  "errorCode": 1000011011,
  "errorMessage": "خطایی در سرور رخ داده است. | شناسه خطا : 1000011011"
}
200 اجرای موفقیت آمیز عملیات و خروجی حاوی یک شناسه یکتا برای مجموعه پیام های ارسالی (batchId) و یک آرایه از اطلاعات پیام های ارسالی به نام messages می باشد.
: batchId شناسه یکتای مجموعه پیام‌های ارسالی، تمامی پیام‌های موجود در این مجموعه دارای یک شناسه مشترک هستند. این شناسه امکان دریافت وضعیت تمامی پیام های مرتبط با این مجموعه را از طریق متد messages/status فراهم می نماید.
: messages آرایه ای شامل اطلاعات مربوط به هر یک از پیام های ارسالی می باشد. پارامترهای هر عنصر از این آرایه عبارتند از :
sentMessageId شناسه پیام
senderNumber شماره فرستنده
recipientNumber شماره گیرنده
content متن پیام
language زبان متن پیام
operator اپراتور شماره گیرنده
parts تعداد بخش متن پیام
cost هزینه ارسال پیام
messageStatus وضعیت پیام
errorCode در صورتی که پیام با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود، کد خطای مربوطه توسط این پارامتر نمایش داده می شود.
errorMessage در صورتی که پیام با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود، شرح خطای مربوطه توسط این پارامتر نمایش داده می شود.
پارامتر messageStatus (وضعیت پیام) حاوی یکی از مقادیر ذیل می باشد :
0 در انتظار ارسال
1 ارسال شده به درگاه اپراتور
2 رسیده به مخاطب
3 نرسیده به مخاطب
4 ارسال نشده
نمونه خروجی :
{
  "batchId": "ce6c8c5c-c13c-45f7-b013-0c0d8072c6e8",
  "messages": [
    {
      "sentMessageId": "b0302a94-73b3-4d4a-b3ef-460a79d087cb",
      "senderNumber": "10001000",
      "recipientNumber": "09100000000",
      "content": "Your message content",
      "language": "English",
      "operator": "Mci",
      "parts": "1",
      "cost": "1,800",
      "messageStatus": 1
    },
    {
      "senderNumber": "20002000",
      "recipientNumber": "09300000000",
      "content": "Your message content 2",
      "errorCode": 1048,
      "errorMessage": ".اپراتور: 2000 توسط مدیریت غیر فعال شده است"
    }
  ]
}
نمونه کدها :

Api Key
#!/bin/bash

url="https://api.smsafzar.ir/api/v1/messages/send/url";

apiKey="YourApiKey"
senderNumbers=("10001000" "20002000" "30003000")
recipientNumbers=("09100000000" "09200000000" "09300000000" "09900000000")
contents=("yourMessageContent1" "yourMessageContent2" "yourMessageContent3" "yourMessageContent4")

urlencode() {
  local input="$1"
  echo -n "$input" | jq -s -R -r @uri
}

queryString="apiKey=$apiKey"

for sender in "${senderNumbers[@]}"
do
    queryString="$queryString&senderNumber=$(urlencode $sender)"
done

for recipient in "${recipientNumbers[@]}"
do
    queryString="$queryString&recipientNumber=$(urlencode $recipient)"
done

for content in "${contents[@]}"
do
    queryString="$queryString&content=$(urlencode $content)"
done

finalUrl="$url?$queryString"

curl -X GET "$finalUrl"
JWT Token
#!/bin/bash

url="https://api.smsafzar.ir/api/v1/messages/send/url/credentials";
username="YourUserName"
password="YourPassword"
domain="sms.smsafzar"
senderNumbers=("10001000" "20002000" "30003000")
recipientNumbers=("09100000000" "09200000000" "09300000000" "09900000000")
contents=("yourMessageContent1" "yourMessageContent2" "yourMessageContent3" "yourMessageContent4")

urlencode() {
  local input="$1"
  echo -n "$input" | jq -s -R -r @uri
}

queryString="username=$(urlencode $userName)&password=$(urlencode $password)&domain=$(urlencode $domain)"

for sender in "${senderNumbers[@]}"
do
    queryString="$queryString&senderNumber=$(urlencode $sender)"
done

for recipient in "${recipientNumbers[@]}"
do
    queryString="$queryString&recipientNumber=$(urlencode $recipient)"
done

for content in "${contents[@]}"
do
    queryString="$queryString&content=$(urlencode $content)"
done

finalUrl="$url?$queryString"

curl -X GET "$finalUrl"

Api Key
using RestSharp;
using System;
using System.Text;
using System.Threading.Tasks;

var url = "https://api.smsafzar.ir/api/v1/messages/send/url";
var apiKey = "YourApiKey";

var senderNumbers = new string[] { "10001000", "20002000", "30003000" };
var recipientNumbers = new string[] { "09100000000", "09200000000", "09300000000", "09900000000" };
var contents = new string[] { "yourMessageContent1", "yourMessageContent2", "yourMessageContent3", "yourMessageContent4" };

var queryString = new StringBuilder();
queryString.Append($"apiKey={apiKey}&");

foreach (var sender in senderNumbers)
{
    queryString.Append($"senderNumber={sender}&");
}

foreach (var recipient in recipientNumbers)
{
    queryString.Append($"recipientNumber={recipient}&");
}

foreach (var content in contents)
{
    queryString.Append($"content={content}&");
}

string finalQueryString = queryString.ToString().TrimEnd('&');

string finalUrl = $"{url}?{finalQueryString}";

// Options
var options = new RestClientOptions(finalUrl);

// Client
var client = new RestClient(options);

// Request
var request = new RestRequest();

// Call
var response = await client.GetAsync(request);

// Response
Console.WriteLine($"Response Status Code: {(int)response.StatusCode}");
Console.WriteLine($"Response Content: {response.Content}");
JWT Token
using RestSharp;
using System;
using System.Threading.Tasks;

var url = "https://api.smsafzar.ir/api/v1/messages/send/url/credentials";
var username = "YourUserName";
var password = "YourPassword";
var domain = "sms.smsafzar";

var senderNumbers = new string[] { "10001000", "20002000", "30003000" };
var recipientNumbers = new string[] { "09100000000", "09200000000", "09300000000", "09900000000" };
var contents = new string[] { "yourMessageContent1", "yourMessageContent2", "yourMessageContent3", "yourMessageContent4" };

var queryString = new StringBuilder();
queryString.Append($"username={Uri.EscapeDataString(username)}&");
queryString.Append($"password={Uri.EscapeDataString(password)}&");
queryString.Append($"domain={Uri.EscapeDataString(domain)}&");

foreach (var sender in senderNumbers)
{
queryString.Append($"senderNumber={Uri.EscapeDataString(sender)}&");
}

foreach (var recipient in recipientNumbers)
{
queryString.Append($"recipientNumber={Uri.EscapeDataString(recipient)}&");
}

foreach (var content in contents)
{
queryString.Append($"content={Uri.EscapeDataString(content)}&");
}

string finalQueryString = queryString.ToString().TrimEnd('&');

string finalUrl = $"{url}?{finalQueryString}";

// Options
var options = new RestClientOptions(finalUrl);

// Client
var client = new RestClient(options);

// Request
var request = new RestRequest();

// Call
var response = await client.GetAsync(request);

// Response
Console.WriteLine($"Response Status Code: {(int)response.StatusCode}");
Console.WriteLine($"Response Content: {response.Content}");

Api Key
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

try {
    String url = "https://api.smsafzar.ir/api/v1/messages/send/url";
    String apiKey = "YourApiKey";

    String[] senderNumbers = { "10001000", "20002000", "30003000", "50002000" };
    String[] recipientNumbers = { "09100000000", "09200000000", "09300000000", "09900000000" };
    String[] contents = { "yourMessageContent1", "yourMessageContent2", "yourMessageContent3", "yourMessageContent4" };

    // Build query string
    StringBuilder queryString = new StringBuilder();
    queryString.append("apiKey=").append(apiKey);

    for (String sender : senderNumbers) {
        queryString.append("&senderNumber=").append(sender);
    }

    for (String recipient : recipientNumbers) {
        queryString.append("&recipientNumber=").append(recipient);
    }

    for (String content : contents) {
        queryString.append("&content=").append(content);
    }

    String finalUrl = url + "?" + queryString.toString();
    System.out.println("Final URL: " + finalUrl);

    HttpClient client = HttpClient.newHttpClient();

    // Request
    HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(finalUrl))
            .GET()
            .build();

    // Call
    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

    // Response
    int responseStatusCode = response.statusCode();
    String responseContent = response.body();

    System.out.println("Response Status Code: " + responseStatusCode);
    System.out.println("Response Message: " + responseContent);
} catch (Exception e) {
    e.printStackTrace();
}
JWT Token
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

try {
String url = "https://api.smsafzar.ir/api/v1/messages/send/url/credentials";
String username = "YourUserName";
String password = "YourPassword";
String domain = "sms.smsafzar";

String[] senderNumbers = { "10001000", "20002000", "30003000", "50002000" };
String[] recipientNumbers = { "09100000000", "09200000000", "09300000000", "09900000000" };
String[] contents = { "yourMessageContent1", "yourMessageContent2", "yourMessageContent3", "yourMessageContent4" };

// Build query string
StringBuilder queryString = new StringBuilder();
queryString.append("username=").append(urlEncode(username))
.append("&password=").append(urlEncode(password))
.append("&domain=").append(urlEncode(domain));

for (String sender : senderNumbers) {
queryString.append("&senderNumber=").append(urlEncode(sender));
}

for (String recipient : recipientNumbers) {
queryString.append("&recipientNumber=").append(urlEncode(recipient));
}

for (String content : contents) {
queryString.append("&content=").append(urlEncode(content));
}

String finalUrl = url + "?" + queryString.toString();
System.out.println("Final URL: " + finalUrl);

HttpClient client = HttpClient.newHttpClient();

// Request
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(finalUrl))
.GET()
.build();

// Call
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

//Response
int responseStatusCode = response.statusCode();
String responseContent = response.body();

System.out.println("Response Status Code: " + responseStatusCode);
System.out.println("Response Message: " + responseContent);
} catch (Exception e) {
e.printStackTrace();
}

Api Key
import requests

url = "https://api.smsafzar.ir/api/v1/messages/send/url"
api_key = "YourApiKey"

sender_numbers = ["10001000", "20002000", "30003000", "50002000"]
recipient_numbers = ["09100000000", "09200000000", "09300000000", "09900000000"]
contents = ["yourMessageContent1", "yourMessageContent2", "yourMessageContent3", "yourMessageContent4"]

# Build query string
query_params = []
query_params.append(f"apiKey={api_key}")

for sender in sender_numbers:
    query_params.append(f"senderNumber={sender}")

for recipient in recipient_numbers:
    query_params.append(f"recipientNumber={recipient}")

for content in contents:
    query_params.append(f"content={content}")

query_string = "&".join(query_params)

final_url = f"{url}?{query_string}"

# Call
response = requests.get(final_url)

# Response
print(f"Response Status Code: {response.status_code}")
print(f"Response Content: {response.text}")
JWT Token
import requests
from urllib.parse import urlencode, quote

url = "https://api.smsafzar.ir/api/v1/messages/send/url/credentials"
user_name = "YourUserName"
password = "YourPassword"
domain = "sms.smsafzar"

sender_numbers = ["10001000", "20002000", "30003000", "50002000"]
recipient_numbers = ["09100000000", "09200000000", "09300000000", "09900000000"]
contents = ["yourMessageContent1", "yourMessageContent2", "yourMessageContent3", "yourMessageContent4"]

# Build query string
query_params = {
  "username": user_name,
  "password": password,
  "domain": domain
}

for sender in sender_numbers:
    query_params[f"senderNumber"] = sender

for recipient in recipient_numbers:
    query_params[f"recipientNumber"] = recipient

for content in contents:
    query_params[f"content"] = content

query_string = urlencode(query_params, quote_via=quote)

final_url = f"{url}?{query_string}"

# Call
response = requests.get(final_url)

# Response
print(f"Response Status Code: {response.status_code}")
print(f"Response Content: {response.text}")

Api Key
<?php
$url = "https://api.smsafzar.ir/api/v1/messages/send/url";
$apiKey = "YourApiKey";

$senderNumbers = ["10001000", "20002000", "30003000", "50002000"];
$recipientNumbers = ["09100000000", "09200000000", "09300000000", "09900000000"];
$contents = ["yourMessageContent1", "yourMessageContent2", "yourMessageContent3", "yourMessageContent4"];

// Build query string
$queryString = "apiKey=" . $apiKey;

foreach ($senderNumbers as $sender) {
  $queryString .= "&senderNumber=" . $sender;
}

foreach ($recipientNumbers as $recipient) {
  $queryString .= "&recipientNumber=" . $recipient;
}

foreach ($contents as $content) {
  $queryString .= "&content=" . $content;
}

$finalUrl = $url . "?" . $queryString;

// Initialize CURL session
$ch = curl_init();

// Set CURL options
curl_setopt($ch, CURLOPT_URL, $finalUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPGET, true);

// Call
$response = curl_exec($ch);

// Response
if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
} else {
    $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    echo "Response Status Code: " . $httpStatusCode . "\n";
    echo "Response Content: " . $response . "\n";
}

// Close the CURL session
curl_close($ch);
?>
JWT Token
<?php
function urlEncode($value) {
    return urlencode($value);
}

$url = "https://api.smsafzar.ir/api/v1/messages/send/url/credentials";
$userName = "YourUserName";
$password = "YourPassword";
$domain = "sms.smsafzar";

$senderNumbers = ["10001000", "20002000", "30003000", "50002000"];
$recipientNumbers = ["09100000000", "09200000000", "09300000000", "09900000000"];
$contents = ["yourMessageContent1", "yourMessageContent2", "yourMessageContent3", "yourMessageContent4"];

// Build query string
$queryString = "username=" . urlEncode($userName) .
"&password=" . urlEncode($password) .
"&domain=" . urlEncode($domain);

foreach ($senderNumbers as $sender) {
  $queryString .= "&senderNumber=" . urlEncode($sender);
}

foreach ($recipientNumbers as $recipient) {
  $queryString .= "&recipientNumber=" . urlEncode($recipient);
}

foreach ($contents as $content) {
    $queryString .= "&content=" . urlEncode($content);
}

$finalUrl = $url . "?" . $queryString;

// Initialize CURL session
$ch = curl_init();

// Set CURL options
curl_setopt($ch, CURLOPT_URL, $finalUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPGET, true);

// Call
$response = curl_exec($ch);

// Response
if (curl_errno($ch)) {
echo 'Error: ' . curl_error($ch);
} else {
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "Response Status Code: " . $httpStatusCode . "\n";
echo "Response Content: " . $response . "\n";
}

// Close the CURL session
curl_close($ch);
?>

Api Key
const axios = require('axios');

const url = 'https://api.smsafzar.ir/api/v1/messages/send/url';
const apiKey = 'YourApiKey';
const senderNumbers = ['10001000', '20002000', '30003000', '50002000'];
const recipientNumbers = ['09100000000', '09200000000', '09300000000', '09900000000'];
const contents = ['yourMessageContent1', 'yourMessageContent2', 'yourMessageContent3', 'yourMessageContent4'];

// Build query string
const params = new URLSearchParams();
params.append('apiKey', apiKey)

senderNumbers.forEach(sender => {
  params.append('senderNumber', encodeURIComponent(sender));
});

recipientNumbers.forEach(recipient => {
  params.append('recipientNumber', encodeURIComponent(recipient));
});

contents.forEach(content => {
  params.append('content', encodeURIComponent(content));
});

// Request
axios.post(url, params)
.then(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.data);
})
.catch(error => {
console.error('Error:', error.response ? error.response.data : error.message);
});
JWT Token
const axios = require('axios');

const url = 'https://api.smsafzar.ir/api/v1/messages/send/url/credentials';
const username = 'YourUserName';
const password = 'YourPassword';
const domain = 'sms.smsafzar';
const senderNumbers = ['10001000', '20002000', '30003000', '50002000'];
const recipientNumbers = ['09100000000', '09200000000', '09300000000', '09900000000'];
const contents = ['yourMessageContent1', 'yourMessageContent2', 'yourMessageContent3', 'yourMessageContent4'];

// Build query string
const params = new URLSearchParams();
params.append('username', encodeURIComponent(username));
params.append('password', encodeURIComponent(password));
params.append('domain', encodeURIComponent(domain));

senderNumbers.forEach(sender => {
  params.append('senderNumber', encodeURIComponent(sender));
});

recipientNumbers.forEach(recipient => {
  params.append('recipientNumber', encodeURIComponent(recipient));
});

contents.forEach(content => {
  params.append('content', encodeURIComponent(content));
});

// Request
axios.post(url, params)
.then(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.data);
})
.catch(error => {
console.error('Error:', error.response ? error.response.data : error.message);
});

Api Key
let url = 'https://api.smsafzar.ir/api/v1/messages/send/url';
let apiKey = 'YourApiKey';
let senderNumbers = ['10001000', '20002000', '30003000', '50002000'];
let recipientNumbers = ['09100000000', '09200000000', '09300000000', '09900000000'];
let contents = ['yourMessageContent1', 'yourMessageContent2', 'yourMessageContent3', 'yourMessageContent4'];

// Build query string
let params = new HttpParams()
.set('apiKey', apiKey);

senderNumbers.forEach(sender => {
  params = params.append('senderNumber', sender);
});

recipientNumbers.forEach(recipient => {
  params = params.append('recipientNumber', recipient);
});

contents.forEach(content => {
  params = params.append('content', content);
});

let httpClient = inject(HttpClient);

// Request
httpClient.get(url, { params })
.subscribe(response => {
  // Response
  console.log('Response:', response);
}, error => {
  console.error('Error:', error);
});
JWT Token
let url = 'https://api.smsafzar.ir/api/v1/messages/send/url/credentials';
let username = 'YourUserName';
let password = 'YourPassword';
let domain = 'sms.smsafzar';
let senderNumbers = ['10001000', '20002000', '30003000', '50002000'];
let recipientNumbers = ['09100000000', '09200000000', '09300000000', '09900000000'];
let contents = ['yourMessageContent1', 'yourMessageContent2', 'yourMessageContent3', 'yourMessageContent4'];

// Build query string
let params = new HttpParams()
.set('username', encodeURIComponent(username))
.set('password', encodeURIComponent(password))
.set('domain', encodeURIComponent(domain));

senderNumbers.forEach(sender => {
  params = params.append('senderNumber', encodeURIComponent(sender));
});

recipientNumbers.forEach(recipient => {
  params = params.append('recipientNumber', encodeURIComponent(recipient));
});

contents.forEach(content => {
  params = params.append('content', encodeURIComponent(content));
});

let httpClient= inject(HttpClient);

// Request
this.http.post(url, {params})
.subscribe(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.body);
}, error => {
console.error('Error:', error);
});

Api Key
import React, { useState } from 'react';

const [responseStatusCode, setResponseStatusCode] = useState(null);
const [responseContent, setResponseContent] = useState('');

const url = 'https://api.smsafzar.ir/api/v1/messages/send/url';
const apiKey = 'YourApiKey';
const senderNumbers = ['10001000', '20002000', '30003000', '50002000'];
const recipientNumbers = ['09100000000', '09200000000', '09300000000', '09900000000'];
const contents = ['yourMessageContent1', 'yourMessageContent2', 'yourMessageContent3', 'yourMessageContent4'];

let queryString = `apiKey=${apiKey}`;

senderNumbers.forEach(sender => {
  queryString += `&senderNumber=${sender}`;
});

recipientNumbers.forEach(recipient => {
  queryString += `&recipientNumber=${recipient}`;
});

contents.forEach(content => {
  queryString += `&content=${content}`;
});

const finalUrl = `${url}?${queryString}`;

try {
  // Request
  const response = await fetch(finalUrl, { method: 'GET' });

  // Response
  const content = await response.json();
  setResponseStatusCode(response.status);
  setResponseContent(content);

  console.log('Response Status Code:', response.status);
  console.log('Response Content:', content);
} catch (error) {
  console.error('Error:', error);
}
JWT Token
import React, { useState } from 'react';

const [responseStatusCode, setResponseStatusCode] = useState(null);
const [responseContent, setResponseContent] = useState('');

const url = 'https://api.smsafzar.ir/api/v1/messages/send/url/credentials';
const username = 'YourUserName';
const password = 'YourPassword';
const domain = 'sms.smsafzar';
const senderNumbers = ['10001000', '20002000', '30003000', '50002000'];
const recipientNumbers = ['09100000000', '09200000000', '09300000000', '09900000000'];
const contents = ['yourMessageContent1', 'yourMessageContent2', 'yourMessageContent3', 'yourMessageContent4'];

let queryString = `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}&domain=${encodeURIComponent(domain)}`;
senderNumbers.forEach(sender => {
  queryString += `&senderNumber=${encodeURIComponent(sender)}`;
});

recipientNumbers.forEach(recipient => {
  queryString += `&recipientNumber=${encodeURIComponent(recipient)}`;
});

contents.forEach(content => {
  queryString += `&content=${encodeURIComponent(content)}`;
});

const finalUrl = `${url}?${queryString}`;
try {
// Request
const response = await fetch(finalUrl, { method: 'GET' });

// Response
const content = await response.json();
setResponseStatusCode(response.status);
setResponseContent(content);

console.log('Response Status Code:', response.status);
console.log('Response Content:', content);
} catch (error) {
console.error('Error:', error);
}