وبلاگ
راهنمای استفاده از WebService نگین ارتباط
مقدمه
سند پیش رو برای استفاده برنامه نویسانی طراحی شده است که می خواهند توسط برنامه خود نسبت به ارسال و دریافت پیامک بر بستر وب با استفاده از پروتکل SOAP اقدام نمایند. این وب سرویس امکاناتی از قبیل :
- ارسال پیامک تکی و آرایه ای(چند تایی)
- دریافت پیامک رسیده به خط پیامک
- بررسی اعتبار خط پیامک و ...
را در اختیار شما قرار می دهد.
نکته ۱: توجه داشته باشید که کلمه عبور وب سرویس شما عبارتی غیر از کلمه عبور پنل پیامکی شما بوده و لازم است خودتان آن را انتخاب نمایید.
مراحل تنظیم رمز عبور وب سرویس :
- مرحله اول: ورود به پنل پیامک نگین
- مرحله دوم: ورود به منوی "خدمات برنامه نویسان" (از منوی سمت راست)
- مرحله سوم: ورود به زیر منوی "تنظیم کلمه عبور وب سرویس"
آدرس وب سرویس
https://sms.3300.ir/almassms.asmx
جهت مشاهده لیست توابع وب سرویس این صفحه را مطالعه کنید.
تعاریف
شماره فرستنده :
هر حساب میتواند شمارههای گوناگونی برای ارسال پیام کوتاه در اختیار داشته باشد و پیامکهای خود را با هر یک از آن شمارهها ارسال کند.
طول استاندارد پیامک:
سایز استاندارد پیامک ۱۴۰ بایت میباشد. در صورتی که در متن پیامک از کاراکترهای Alphanumeric استفاده شود طول یک پیامک حداکثرمیتواند ۱۶۰ کاراکتر، و در صورتی که از Unicode دو بایتی (کاراکترهای فارسی) استفاده شود طول استاندارد آن ۶۷ و طول حداکثر پیامک (پیامک اول) ۷۰ کاراکتر میتواند باشد.
شماره پیامک:
وب سرویس نگین ارتباط به ازای هر درخواست ارسال پیامک که از کاربران دریافت می کند یک شناسه یکتا به آنها بر میگرداند و کاربران میتوانند با استفاده از آن شناسه وضعیت ارسال پیامک خود را پیگیری کنند.
در صورتی که این شماره پیامک کمتر از ۱۰۰۰ باشد، مقدار بازگشتی یک کد خطا است و هزینه ارسال پیامک از اعتبار کاربر کسر نخواهد شد.
کدهای خطا
| کد خطا | توضیحات |
| ۱ | شماره گیرنده(mobile) نامعتبر (خالی) است. |
| ۲ | مقدار پارامتر line نامعتبر است. (خطوط ۳۰۰۰ با ۹۸۳۰۰۰….. شروع می شوند) |
| ۳ | مقدار پارامتر encoding نامعتبر است. |
| ۴ | مقدار پارامتر messageClass نامعتبر است. |
| ۶ | مقدار پارامتر messageClass نامعتبر است. |
| ۱۳ | پیامک (ترکیب udh و message ) خالی است. |
| ۱۴ | حساب اعتبار مورد نیاز را دارا نمیباشد. |
| ۱۵ | سرور در هنگام ارسال پیام مشغول برطرف نمودن ایراد داخلی بوده و لازم است پیامها دوباره ارسال شوند. |
| ۱۶ | حساب غیر فعال می باشد. |
| ۱۷ | حساب منقضی شده است. (expired) |
| ۱۸ | نام کاربر و یا کلمه ی عبور نامعتبر است. |
| ۱۹ | درخواست دارای اعتبار نمیباشد. (authentication failure) |
| ۲۲ | استفاده از این سرویس برای این حساب مقدور نمیباشد. |
| ۲۳ | به دلیل ترافیک بالا، سرور آمادگی دریافت پیام جدید را ندارد. دوباره سعی کنید. |
| ۲۴ | شناسه پیامک معتبر نمیباشد. |
| ۲۵ | نوع سرویس درخواستی نامعتبر است. |
| ۲۷ | انصراف مخاطب از دریافت پیامک اینترنتی |
| ۱۰۱ | طول آرایه پارامتر messages با طول آرایه گیرندگان تطابق ندارد. |
| ۱۰۲ | طول آرایه پارامتر messageClass با طول آرایه گیرندگان تطابق ندارد. |
| ۱۰۴ | طول آرایه پارامتر udhs با طول آرایه گیرندگان تطابق ندارد. |
| ۱۰۵ | طول آرایه پارامتر priorities با طول آرایه گیرندگان تطابق ندارد. |
| ۱۰۶ | آرایهی گیرندگان خالی می باشد. |
| ۱۰۷ | طول آرایه پارامتر گیرندگان بیشتر از طول مجاز است. |
| ۱۰۸ | آرایه ی فرستندگان خالی میباشد. |
| ۱۰۹ | طول آرایه پارامتر priorities با طول آرایه گیرندگان تطابق ندارد. |
| ۴۰۹ | حداقل فاصله زمانی بین درخواست ها رعایت نشده است. (حداقل پنج ثانیه) |
کد وضعیت پیامک
کدهای وضعیت ارسال به شرح ذیل میباشد.
| کد وضعیت | توضیحات |
| -۱ | ارسال نشده |
| ۱ | گیرنده، پیام ارسالی را دریافت کرده است. |
| ۲ | گیرنده، پیام ارسالی را دریافت نکرده است و پیام fail شده است و در صورت نیاز برنامه سمت مشتری میتواند مجدداً عملیات ارسال را تکرار نماید. |
| ۸ | مخابرات، پیام ارسالی را دریافت کرده است. |
| ۱۶ | مخابرات، پیام ارسالی را دریافت نکرده است. و در صورت نیاز برنامه سمت مشتری میتواند مجدداً عملیات ارسال را تکرار نماید. |
مقادیر بازگشتی در فراخوانی توابع
کلیه متد های وب سرویس یک عدد را در خروجی خود بر می گردانند.
این عدد به برنامه نویس می گوید آیا متد به درستی اجرا شده است یا خیر.
معنی مقادیر بازگشتی توسط متد ها در جدول زیر خلاصه شده است:
| کد خطا | شرح |
| ۲- (عدد منفی) | متد با موفقیت اجرا شده است |
| ۰ | اجرای سرویس با خطای غیر منتظره (Exception) مواجه شده است.لطفا پارامتر های خود را چک نمایید |
| ۱۴ | اعتبار ریالی کافی برای اجرای متد وجود ندارد |
| ۱۸ | نام کاربری و یا کلمه عبور اشتباه است. (نکته۱ از مقدمه همین راهنما را ملاحظه کنید) |
| ۲۰ | شناسه پیامک اشتباه است |
| ۱۰۰ | طول آرایه ENCODING اشتباه است |
| ۱۰۱ | طول آرایه MESSAGE اشتباه است |
| ۱۰۲ | طول آرایه اشتباه MCLASS است |
| ۱۰۳ | طول آرایه MOBILES اشتباه است |
| ۱۰۴ | طول آرایه UDH اشتباه است |
SendSms (برای ارسال پیامک)
تعریف تابع
public long SendSms(
string pUsername,
string pPassword,
string[] messages,
string[] mobiles,
out long[] pMessageIds
)
پارامتر های ورودی
| نام فیلد | توضیحات |
|---|---|
| pUsername | نام کاربری |
| pPassword | کلمه عبور |
| messages | آرایهای از متن پیامکها |
| mobiles | آرایهای از شمارههای همراه دریافتکننده پیامک |
پارامترهای خروجی
| نام فیلد | توضیحات |
|---|---|
| pMessageIds | آرایهای از شناسههای پیام ارسالشده |
مقدار بازگشتی
| وضعیت | خروجی |
|---|---|
| اجرای موفق متد | عدد منفی |
| رخ دادن خطا | شماره خطا |
توضیحات
برای پارامترهای messages و mobiles دو حالت کلی وجود دارد:
۱- ارسال یک پیام برای چند گیرنده:
messages = 1 , mobiles = N
۲- ارسال چند پیام برای چند گیرنده:
messages = N , mobiles = N
در حالت اول، متن پیام برای همه گیرندهها یکسان در نظر گرفته میشود. در حالت دوم، هر پیام به صورت متناظر با شماره موبایل مربوطه ارسال خواهد شد.
SendSmsByCheckId (ارسال پیامک با کد پیگیری دلخواه)
تعریف تابع
public long SendSmsByCheckId(
string pUsername,
string pPassword,
long line,
string[] messages,
string[] mobiles,
long[] tempCheckIds,
out long[] pMessageIds
)
توضیحات کلی
این متد برای ارسال پیامک به همراه شناسه پیگیری دلخواه (tempCheckIds) استفاده میشود.
کاربر میتواند برای هر پیامک یک شناسه اختصاصی تعریف کند تا بعداً وضعیت ارسال هر پیام را بر اساس همان شناسه در سیستم خود پیگیری کند.
دقت کنید که پیگیری پیام بر اساس CheckId فقط تا ۲۴ ساعت بعد از ارسال امکانپذیر است.
پارامتر های ورودی
| نام فیلد | توضیحات |
|---|---|
| pUsername | نام کاربری |
| pPassword | کلمه عبور |
| line | شماره خط ارسالکننده پیامک |
| messages |
آرایه پیامکها:
|
| mobiles | آرایه شماره موبایلهای گیرنده پیامک |
| tempCheckIds |
آرایه شناسههای پیگیری دلخواه کاربر:
|
قوانین نگاشت آرایهها
| آرایه | رفتار |
|---|---|
| mobiles | لیست شمارههای گیرنده پیامک |
| messages |
اگر طول = mobiles → متناظر با هر شماره اگر طول = 1 → ارسال یک متن برای همه شمارهها |
| tempCheckIds | باید دقیقاً هماندازه mobiles باشد (نگاشت ۱ به ۱ با هر پیام) |
پارامترهای خروجی
| نام فیلد | توضیحات |
|---|---|
| pMessageIds | آرایهای از شناسههای پیام تولید شده در سیستم |
مقدار بازگشتی
| وضعیت | خروجی |
|---|---|
| اجرای موفق متد | عدد منفی |
| رخ دادن خطا | شماره خطا |
GetOutboxByCheckId (دریافت وضعیت پیامها بر اساس کد پیگیری)
تعریف تابع
long GetOutboxByCheckId(
string pUsername,
string pPassword,
long[] pTempCheckIds,
out List<OutboxResult> outboxes
)
توضیحات کلی
این متد برای دریافت وضعیت پیامکهای ارسالشده بر اساس کدهای پیگیری (CheckId) استفاده میشود.
این کدها همان مقادیری هستند که هنگام ارسال پیامک با متد SendSmsByCheckId تعیین شدهاند.
با استفاده از این متد میتوان وضعیت پیامهای ارسالشده را در بازه زمانی مشخص بررسی کرد.
دقت کنید که پیگیری پیام بر اساس CheckId فقط تا ۲۴ ساعت بعد از ارسال امکانپذیر است.
پارامتر های ورودی
| نام فیلد | توضیحات |
|---|---|
| pUsername | نام کاربری |
| pPassword | کلمه عبور |
| pTempCheckIds | آرایهای از کدهای پیگیری تعریفشده توسط کاربر در زمان ارسال پیامک (SendSmsByCheckId) |
پارامترهای خروجی
| نام فیلد | توضیحات |
|---|---|
| outboxes | لیستی از نتایج پیامهای ارسالشده شامل وضعیت کامل هر پیام |
ساختار شیء خروجی (OutboxResult)
public class OutboxResult
{
public long CheckId { get; set; }
public long MessageId { get; set; }
public int Status { get; set; }
public DateTime SendDate { get; set; }
}
توضیحات فیلدهای خروجی
| فیلد | توضیحات |
|---|---|
| CheckId | کد پیگیری تعریفشده توسط کاربر |
| MessageId | شناسه پیام در سیستم |
| Status | وضعیت ارسال پیام (کد وضعیت سیستم) |
| SendDate | تاریخ و زمان ارسال پیام |
مقدار بازگشتی
| وضعیت | خروجی |
|---|---|
| اجرای موفق متد | عدد منفی |
| رخ دادن خطا | شماره خطا |
GetMessageStatus (برای دریافت وضعیت پیامکها)
تعریف تابع
public long GetMessageStatus2(
string pUsername,
string pPassword,
long[] pMessageIds,
out int[] pStatuses,
out long[] pMsgIds
)
پارامتر های ورودی
| نام فیلد | توضیحات |
|---|---|
| pUsername | نام کاربری |
| pPassword | کلمه عبور |
| pMessageIds | آرایهای از شناسه پیامهایی که وضعیت آنها باید بررسی شود |
پارامترهای خروجی
| نام فیلد | توضیحات |
|---|---|
| pStatuses | آرایهای از وضعیت پیامها (کد وضعیت مخابرات) |
| pMsgIds | آرایه شناسه پیامهای متناظر با وضعیتها |
مقدار بازگشتی
| وضعیت | خروجی |
|---|---|
| اجرای موفق متد | عدد منفی |
| رخ دادن خطا | شماره خطا |
GetReceivedSms (برای دریافت پیامکهای دریافتشده)
تعریف تابع
public long GetReceivedSms(
string pUsername,
string pPassword,
out List<InboxModel> pResult
)
پارامتر های ورودی
| نام پارامتر | توضیحات |
|---|---|
| pUsername | نام کاربری |
| pPassword | کلمه عبور |
پارامترهای خروجی
| نام پارامتر | توضیحات |
|---|---|
| pResult | لیست پیامکهای دریافتی شامل جزئیات کامل هر پیام |
ساختار شیء خروجی (InboxModel)
public class InboxModel
{
public long id { get; set; }
public string date { get; set; }
public string message { get; set; }
public string mobile { get; set; }
public string line { get; set; }
}
توضیحات فیلدهای InboxModel
| فیلد | توضیحات |
|---|---|
| id | شناسه پیامک در سیستم |
| date | تاریخ دریافت پیامک |
| message | متن پیامک |
| mobile | شماره ارسالکننده پیامک |
| line | شماره خط دریافتکننده پیامک |
مقدار بازگشتی
| وضعیت | خروجی |
|---|---|
| اجرای موفق متد | عدد منفی |
| رخ دادن خطا | شماره خطا |
GetCredit (برای دریافت میزان اعتبار باقیمانده)
تعریف تابع
public long GetCredit(
string pUsername,
string pPassword,
out long pCredit
)
پارامتر های ورودی
| نام پارامتر | توضیحات |
|---|---|
| pUsername | نام کاربری |
| pPassword | کلمه عبور |
پارامترهای خروجی
| نام پارامتر | توضیحات |
|---|---|
| pCredit | میزان اعتبار باقیمانده به ریال |
مقدار بازگشتی
| وضعیت | خروجی |
|---|---|
| اجرای موفق متد | عدد منفی |
| رخ دادن خطا | شماره خطا |
GetInfo (دریافت اطلاعات کاربر و سرویس)
تعریف تابع
public int GetInfo(
string pUsername,
string pPassword,
out int pUserId,
out string pSmsNumber,
out long pCredit,
out DateTime pEndDate
)
پارامتر های ورودی
| نام پارامتر | توضیحات |
|---|---|
| pUsername | نام کاربری |
| pPassword | کلمه عبور |
پارامترهای خروجی
| نام پارامتر | توضیحات |
|---|---|
| pUserId | شناسه کاربر در سیستم |
| pSmsNumber | شماره اختصاصی ارسال پیامک کاربر |
| pCredit | میزان اعتبار باقیمانده (ریال) |
| pEndDate | تاریخ پایان اعتبار یا سرویس |
مقدار بازگشتی
| وضعیت | خروجی |
|---|---|
| اجرای موفق متد | عدد منفی |
| رخ دادن خطا | شماره خطا |
ملاحظات لازم در ارتباط با فراخوانی متدها
- ترتیب پارامترها دارای اهمیت است و جابجایی مجاز نیست.
- حداکثر تعداد عناصر آرایه در هر بار ارسال ۵۰ پیام میباشد.
- پارامترهای ورودی، حتماً باید به عنوان ورودی به متد ارسال شوند و در صورت خالی گذاشتن آنها پیغام خطا داده میشود.
- در بالک نظیر به نظیر لازم است ملاحظات لازم در مورد طول آرایهها – که در بخشهای پیشین آمد – مد نظرقرار داده شوند.
- در هنگام تعیین وضعیت مخابرات، فقط تا ۷ روز بعد از ارسال پیامک، امکان بررسی وضعیت وجود دارد و بعد از آن وضعیت پیامک، نامشخص خواهد بود.