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

تاریخ بروزرسانی : 1394/10/01

این سرویس به منظور ایجاد راحتی در کاربر ایجاد و به او این امکان را می دهد تا تنها با استفاده از پروتکل های بتواند فرامین مختلفی را بین سیستم خود و سرور شرکت نیک اس ام اس مبادله کند.

انواع سرویس های :
این سرویس شامل دو متد مادر به نام های و می باشد، و دو متد برای ارسال درخواست های قلمداد می شوند. متد ، برای ارسال درخواست اطلاعات از یک منبع خاص با مشخص در سمت سرور و متد ، به منظور فرستادن اطلاعات به یک منبع خاص در سمت سرور برای یک پردازش مشخص، طراحی شده است.

راهنمای فنی :
نمونه کدهای زبان های مختلف برنامه نویسی
راهنمای عمومی
Sending Methods


http://niksms.com/api/PublicApi/MethodName?username=username&password=password

نحوه ارسال پارامتر در Post و Get چگونه است؟

در متد Get پارامتر با & از هم جدا شده و ارسال می گردند ولی در Post شما پارمترها را همراه با URL ارسال نمی کنید بلکه باید به سرور پست کنید.
نکته:آدرس متد در Get و Post یکسان است فقط نحوه فراخوانی به شکلی که در بالا توضیح داده شده است، متفاوت می باشد. دقت داشته باشید که در تمامی متدها، پارامترهای ورودی و خروجی شبیه به وب سرویس است فقط username و password هم به پارامترها اضافه شده است. پارامترها به صورت تک تک وارد می شوند و مفهوم کلاس در این نوع ارسال وجود ندارد و خروجی هم در صورتی که از نوع کلاس باشد مثل متد ارسال پیامک ، خروجی از نوع json است.

متدهای ارسال
متد GroupSMS


این متد برای ارسال پیامک به صورت یک به چند می باشد یعنی یک پیامک را در یک ساعت مشخص به n شماره ارسال می کند و به تعداد n شماره کد پیگیری به شما باز می گرداند.

پارامترهای ورودی :

: نام کاربری برای احراز هویت.
: رمز عبور برای احراز هویت کاربر.

: شماره ی ارسال کننده پیامک های شما را مشخص می کند که در صورتی که این پارامتر را خالی ارسال کنید از شماره عمومی پیش فرض، که در بخش تنظیمات وب سایت مشخص نموده اید ارسال انجام می گردد.
: ساعت و تاریخ ارسال را مشخص می کند که با فرمت روبرو برای سیستم تعریف شده است: yyyy/MM/dd-hh:mm
: این پارامتر ورودی یک کد شناسایی (enum) است که نوع ارسال شما را مشخص می کند. عدد یک برای ارسال به صورت معمولی و عدد 2 برای ارسال به صورت فلش، در نظر گرفته شده است.
: این پارامتر آرایه ای از نوع long می باشد که به شما این امکان را می دهد کد پیگیری خود را برای پیامک های ارسالی، به سیستم ما معرفی کنید. باید در نظر داشته باشید که تعداد سطرهای این آرایه دقیقا برابر است با تعداد سطرهای شماره موبایل هایی که برای آنها پیامک ارسال می کنید. این پارامتر برای پیگیری وضعیت پیامک ارسال شده در آینده بسیار کاربرد دارد.
: متن مورد نظرتان را برای ارسال از طریق پیامک مشخص می کند.

مقادیر برگشتی :


: : این پارامتر یک enum است از نوع SmsReturn که مشخص می کند این پیامک نتیجه ارسالش چه شده است و مقادیر زیر را دارا می باشد :

کد عددی کدحروفی تعبیر پیام سیستم
1 Successful پیام شما با موفقیت ارسال شده است..
2 UnknownError خطای نامشخصی رخ داده است که پیش بینی نشده بوده و باید با پشتیبانی فنی تماس بگیرید. (احتمال رخ دادن این خطا نزدیک به صفر بوده ولی جهت اطمینان، در مستندات ارائه می شود)
3 InsufficientCredit موجودی یا اعتبار شما برای انجام عملیات کافی نیست.
4 ForbiddenHours شما مجاز به ارسال در این ساعت نمی باشید.
5 Filtered پیام شما از نظر متنی مشکلی داشته که باعث فیلتر شدن آن شده است.
6 NoFilters شماره اختصاصی که برای ارسال پیام خود انتخاب کرده اید، غیر فعال شده است.
7 PrivateNumberIsDisable شماره اختصاصی که برای ارسال پیام خود انتخاب کرده اید، غیر فعال شده است.
8 ArgumentIsNullOrIncorrect پارامترهای هایی که برای ارسال پیام خود به سیستم فرستاده اید، اشتباه است.
9 MessageBodyIsNullOrEmpty پیام ارسالی شما دارای متن نبوده است، متن پیام را باید حتما وارد نمایید.
10 PrivateNumberIsIncorrect شماره اختصاصی وارد شده اشتباه است و یا به شما تعلق ندارد.
11 ReceptionNumberIsIncorrect شماره موبایل های ارسالی اشتباه است.
12 SentTypeIsIncorrect نوع ارسالی که انتخاب کرده اید با محتوای ارسالی شما مطابقت نداشته و اشتباه است.
13 Warning متن شما هشداری را به همراه داشته است ولی عملیات ارسال شما صورت گرفته است.
14 PanelIsBlocked پنل کاربری شما مسدود شده است و باید با پشتیبانی تماس بگیرید.
15 SiteUpdating سایت در حال عملیات به روزرسانی می باشد لطفا دقایقی دیگیر مجددا اقدام به ارسال نمایید.
16 AudioMessageNotAllowed مجوز تایید نشده در پنل موجود است
17 AudioMessageFileSizeNotAllowed حجم فایل صوتی بیش از حد مجاز می باشد

: کد یکتا برای این درخواست شما
: توضیحاتی در مورد خطای رخ داده..
: کد پیگیری به ازای هر موبایلی که در این درخواست به آن پیامک ارسال کردید.

نمونه کد ارسالی و برگشتی :
Request Example:
string path = "http://www.niksms.com/fa/publicapi/GroupSms";
                string postData = string.Format("username={0}&password={1}&senderNumber={2}&numbers={3}&sendOn={4}&sendType={5}&yourMessageIds={6}&message={7}",
                    _username, _password, senderNumber, numbers, sendOn, sendType, yourMessageIds, message);
                string response = ExecuteRequest(path, postData, _method);
                try
                {
                    return new JavaScriptSerializer().Deserialize<ReturnSmsResult>(response);
                }
                catch { }; ;
    
Response Example:
    public class ReturnSmsResult
            {
                public SmsReturn Status { get; set; }
                public string Id { get; set; }
                public string WarningMessage { get; set; }
                public List<long> NikIds { get; set; }
            }
Request Example:
var nikSms =  niksmsApi.niksmsClass("Username", "Password");
var result = nikSms.GroupSms("SenderNumber", "Numbers", DateTime.Now, 1, String.Empty, "Message");
    
Response Example:
    public class ReturnSmsResult
            {
                public SmsReturn Status { get; set; }
                public string Id { get; set; }
                public string WarningMessage { get; set; }
                public List<long> NikIds { get; set; }
            }
Request Example:
    var
    nik : NikSmsClass;
    getCreditOutput : string;
    begin
    nik := NikSmsClass.Create(EditUsername.Text,EditPassword.Text,TSendMethod.Post);
    getCreditOutput := nik.GroupSms(EditSnderNumber.Text,EditTestNumber.Text,Now,1,'','تست');
end;;
Response Example:
 Memo3.Text := getCreditOutPut; 
Request Example:
 <form action="http://niksms.com/fa/publicapi/groupsms" method="get" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td> متن پیام : </td><td><textarea name="message" rows="4" cols="45"></textarea></td>
</tr>
<tr>
<td> لیست شماره ها: </td><td><textarea name="numbers" rows="4" cols="45"></textarea></td>
</tr>
<tr>
<td> شماره فرستنده : </td><td><input type="text" value="" name="senderNumber" /></td>
</tr>
<tr>
<td>تاریخ ارسال:</td><td><input type="datetime" name="sendOn" value="2016/1/1" /></td>
</tr>
<tr>
<td> نوع ارسال : </td><td>معمولی</td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
<input type="hidden" name="sendType" value="1">
</form>
Response Example:
    {"Status":0,"Id":2342,"WarningMessage":null,"NikIds":2342334}
Request Example:
  <form action="http://niksms.com/fa/publicapi/groupsms" method="post" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td> متن پیام : </td><td><textarea name="message" rows="4" cols="45"></textarea></td>
</tr>
<tr>
<td> لیست شماره ها: </td><td><textarea name="numbers" rows="4" cols="45"></textarea></td>
</tr>
<tr>
<td> شماره فرستنده : </td><td><input type="text" value="" name="senderNumber" /></td>
</tr>
<tr>
<td>تاریخ ارسال:</td><td><input type="datetime" name="sendOn" value="2016/1/1" /></td>
</tr>
<tr>
<td> نوع ارسال : </td><td>معمولی</td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
<input type="hidden" name="sendType" value="1">
</form>
Response Example:
    {"Status":0,"Id":2342,"WarningMessage":null,"NikIds":2342334}
Request Example:
$api="http://niksms.com/fa/PublicApi/GroupSms";
    $post_data = array(
        'username' => $this->user,
        'password' => $this->pass,
        'message' => $message,
        'numbers' => $mobiles,
        'senderNumber' =>$send_number ,
        'sendOn' =>$sendOn ,
        'yourMessageIds'=>$yourMessageIds,
        'sendType'=>$sendType
    );
Response Example:
$result = $this->post_request($this->api, $post_data);
    return $result['content']; 
    if ($result['status'] == 'ok'){	       	

    }
    else {
    return $result['error']; 
    }
Request Example:
     Dim c As New niksmsApi.niksmsClass("Username", "Password")
     Dim result = c.GroupSms("SenderNumber", "Numbers", DateTime.Now, 1, String.Empty, "Message")
Response Example:
    Public Class ReturnSmsResult
        Public Sub New()
        Public Property Id As String
        Public Property NikIds As List(Of Long)
        Public Property Status As SmsReturn
        Public Property WarningMessage As String
    End Class 
متد PTPSMS


این متد برای ارسال پیامک به صورت یک به یک می باشد یعنی شما در هر ارسال n پیام متفاوت را به n شماره ی متفاوت ارسال می کنید، این ارسال ها به صورت همزمان بوده و در یک ساعت مشخص به تمام شماره ها ارسال می شود و به تعداد n شماره کد پیگیری به شما باز می گرداند.

پارامترهای ورودی :

: نام کاربری برای احراز هویت.
: رمز عبور برای احراز هویت کاربر.
:
: شماره ی ارسال کننده پیامک های شما را مشخص می کند که در صورتی که این پارامتر را خالی ارسال کنید از شماره عمومی پیش فرض، که در بخش تنظیمات وب سایت مشخص نموده اید ارسال انجام می گردد.
: مشخص کننده ی شماره موبایل هایی است که می خواهید این پیامک به آنها ارسال شود.
ساعت و تاریخ ارسال را مشخص می کند که با فرمت روبرو برای سیستم تعریف شده است: yyyy/MM/dd-hh:mm
: این پارامتر ورودی یک کد شناسایی (enum) است که نوع ارسال شما را مشخص می کند. عدد یک برای ارسال به صورت معمولی و عدد 2 برای ارسال به صورت فلش، در نظر گرفته شده است.
: این پارامتر آرایه ای از نوع long می باشد که به شما این امکان را می دهد کد پیگیری خود را برای پیامک های ارسالی، به سیستم ما معرفی کنید. باید در نظر داشته باشید که تعداد سطرهای این آرایه دقیقا برابر است با تعداد سطرهای شماره موبایل هایی که برای آنها پیامک ارسال می کنید. این پارامتر برای پیگیری وضعیت پیامک ارسال شده در آینده بسیار کاربرد دارد.
: متن مورد نظرتان را برای ارسال از طریق پیامک مشخص می کند.

مقادیر برگشتی :


: این پارامتر یک enum است از نوع SmsReturn که مشخص می کند این پیامک نتیجه ارسالش چه شده است و مقادیر زیر را دارا می باشد :

کد عددی کدحروفی تعبیر پیام سیستم
1 Successful پیام شما با موفقیت ارسال شده است..
2 UnknownError خطای نامشخصی رخ داده است که پیش بینی نشده بوده و باید با پشتیبانی فنی تماس بگیرید. (احتمال رخ دادن این خطا نزدیک به صفر بوده ولی جهت اطمینان، در مستندات ارائه می شود)
3 InsufficientCredit موجودی یا اعتبار شما برای انجام عملیات کافی نیست.
4 ForbiddenHours شما مجاز به ارسال در این ساعت نمی باشید.
5 Filtered پیام شما از نظر متنی مشکلی داشته که باعث فیلتر شدن آن شده است.
6 NoFilters شماره اختصاصی که برای ارسال پیام خود انتخاب کرده اید، غیر فعال شده است.
7 PrivateNumberIsDisable شماره اختصاصی که برای ارسال پیام خود انتخاب کرده اید، غیر فعال شده است.
8 ArgumentIsNullOrIncorrect پارامترهای هایی که برای ارسال پیام خود به سیستم فرستاده اید، اشتباه است.
9 MessageBodyIsNullOrEmpty پیام ارسالی شما دارای متن نبوده است، متن پیام را باید حتما وارد نمایید.
10 PrivateNumberIsIncorrect شماره اختصاصی وارد شده اشتباه است و یا به شما تعلق ندارد.
11 ReceptionNumberIsIncorrect شماره موبایل های ارسالی اشتباه است.
12 SentTypeIsIncorrect نوع ارسالی که انتخاب کرده اید با محتوای ارسالی شما مطابقت نداشته و اشتباه است.
13 Warning متن شما هشداری را به همراه داشته است ولی عملیات ارسال شما صورت گرفته است.
14 PanelIsBlocked پنل کاربری شما مسدود شده است و باید با پشتیبانی تماس بگیرید.
15 SiteUpdating سایت در حال عملیات به روزرسانی می باشد لطفا دقایقی دیگیر مجددا اقدام به ارسال نمایید.
16 AudioMessageNotAllowed مجوز تایید نشده در پنل موجود است
17 AudioMessageFileSizeNotAllowed حجم فایل صوتی بیش از حد مجاز می باشد

: کد یکتا برای این درخواست شما.
: توضیحاتی در مورد خطای رخ داده.
: کد پیگیری به ازای هر موبایلی که در این درخواست به آن پیامک ارسال کردید.

نمونه کد ارسالی و برگشتی :
Request Example:
 string path = "http://www.niksms.com/fa/publicapi/ptpSms";
    string postData = string.Format("username={0}&password={1}&senderNumber={2}&numbers={3}&sendOn={4}&sendType={5}&yourMessageIds={6}&message={7}",
        _username, _password, senderNumber, numbers, sendOn, sendType, yourMessageIds, message);
    string response = ExecuteRequest(path, postData, _method);
    try
    {
        return new JavaScriptSerializer().Deserialize<ReturnSmsResult>(response);
    }
    catch { }; 
Response Example:
 public class ReturnSmsResult
    {
        public SmsReturn Status { get; set; }
        public string Id { get; set; }
        public string WarningMessage { get; set; }
        public List<long> NikIds { get; set; }
    }
Request Example:
var nikSms =  niksmsApi.niksmsClass("Username", "Password");
var result = nikSms.PtpSms("SenderNumber", "Number1,Number2,...", DateTime.Now, 1, String.Empty, "Message1,Message2,...");
Response Example:
 public class ReturnSmsResult
    {
        public SmsReturn Status { get; set; }
        public string Id { get; set; }
        public string WarningMessage { get; set; }
        public List<long> NikIds { get; set; }
    }
Request Example:
var
nik : NikSmsClass;
getCreditOutput : string;
begin
  nik := NikSmsClass.Create(EditUsername.Text,EditPassword.Text,TSendMethod.Post);
  getCreditOutput := nik.PtpSms(EditSnderNumber.Text,EditTestNumber.Text,Now,1,'','تست دلفی');
end;
Response Example:
    
Memo3.Text := getCreditOutPut;
Request Example:
  <form action="http://niksms.com/fa/publicapi/ptpsms" method="get" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td> متن پیام : </td><td><textarea name="message" rows="4" cols="45"></textarea></td>
</tr>
<tr>
<td> لیست شماره ها: </td><td><textarea name="numbers" rows="4" cols="45"></textarea></td>
</tr>
<tr>
<td> شماره فرستنده : </td><td><input type="text" value="" name="senderNumber" /></td>
</tr>
<tr>
<td>تاریخ ارسال:</td><td><input type="datetime" name="sendOn" value="2016/1/1" /></td>
</tr>
<tr>
<td> نوع ارسال : </td><td>معمولی</td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
<input type="hidden" name="sendType" value="1">
</form>
Response Example:
    {"Status":0,"Id":2342,"WarningMessage":null,"NikIds":2342334}
Request Example:
  <form action="http://niksms.com/fa/publicapi/ptpsms" method="post" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td> متن پیام : </td><td><textarea name="message" rows="4" cols="45"></textarea></td>
</tr>
<tr>
<td> لیست شماره ها: </td><td><textarea name="numbers" rows="4" cols="45"></textarea></td>
</tr>
<tr>
<td> شماره فرستنده : </td><td><input type="text" value="" name="senderNumber" /></td>
</tr>
<tr>
<td>تاریخ ارسال:</td><td><input type="datetime" name="sendOn" value="2016/1/1" /></td>
</tr>
<tr>
<td> نوع ارسال : </td><td>معمولی</td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
<input type="hidden" name="sendType" value="1">
</form>
Response Example:
    {"Status":0,"Id":2342,"WarningMessage":null,"NikIds":2342334}
Request Example:
    $api="http://niksms.com/fa/PublicApi/PtpSms";
    $post_data = array(
        'username' => $this->user,
        'password' => $this->pass,
        'message' => $message,
        'numbers' => $mobiles,
        'senderNumber' =>$send_number ,
        'sendOn' =>$sendOn ,
        'yourMessageIds'=>$yourMessageIds,
        'sendType'=>$sendType
        );
Response Example:
    $result = $this->post_request($api, $post_data);
        
    if ($result['status'] == 'ok'){
        return $result['content']; 
    }
    else {
        return $result['error']; 
    }
Request Example:
    Dim c As New niksmsApi.niksmsClass("Username", "Password")
    Dim result = c.PtpSms("SenderNumber", "Number1,Number2,...", DateTime.Now, 1, String.Empty, "Message1,Message2,...")
Response Example:
        Public Class ReturnSmsResult
        Public Sub New()
        Public Property Id As String
        Public Property NikIds As List(Of Long)
        Public Property Status As SmsReturn
        Public Property WarningMessage As String
    End Class
متدهای دریافت
متد GetReceiveSms


پیامک دریافتی خطوط اختصاصی شما را باز می گرداند. شما فقط یکبار این پیام را دریافت می کنید و با هر بار کال کردن این متد، پیام های جدید (منهای آنهایی که قبلا دریافت کرده اید) را دریافت خواهید کرد، مگر اینکه متد ResetReceiveSmsVisitedStatus را فراخوانی کرده باشید تا بتوانید دوباره یک بازه مشخصی از پیام را از سرور نیک اس ام اس تحویل بگیرید.

پارامترهای ورودی :

: نام کاربری برای احراز هویت.
: رمز عبور برای احراز هویت کاربر.
: این پارامتر تاریخ ابتدایی که از آن به بعد می خواهید پیامک های دریافتی را، دریافت کنید، مشخص می کند.
: این پارامتر تاریخ انتهایی که از آن به قبل می خواهید پیامک های دریافتی را، دریافت کنید، مشخص می کند.

مقادیر برگشتی :

مقدار برگشتی در این متد از نوع json است که شامل پارامترهای زیر است.

کدحروفی تعبیر پیام سیستم
Message متن پیام را برای شما مشخص می کند.
SenderNumber شماره موبایل شخص ارسال کننده را مشخص می کند.
ReceiveNumber شماره اختصاصی شما که این پیام را دریافت کرده است را مشخص می کند.
Id کد یکتا است که برای این متن دریافتی تعیین شده است.
ReceiveDate تاریخ دریافت پیام را نشان می دهد.
IsRelayed آیا از طریق سرویس Traffic Relay ارسال شده است یا خیر (به صورت خودکار).
نمونه کد ارسالی و برگشتی :
Request Example:
 string path = "http://www.niksms.com/fa/publicapi/getReceiveSms";
    string postData = string.Format("username={0}&password={1}&startDate={2}&endDate={3}",
        _username, _password, startDate, endDate);
    string response = ExecuteRequest(path, postData, _method);
    try
    {
        return new JavaScriptSerializer().Deserialize<List<GetReceiveSmsModel>>(response);
    }
    catch { };
Response Example:
new List<GetReceiveSmsModel>();
Request Example:
 var nikSms =  niksmsApi.niksmsClass("Username", "Password");
                                var result = nikSms.GetReceiveSms(DateTime.Now.AddDays(-5), DateTime.Now.AddDays(1));
Response Example:
new List<GetReceiveSmsModel>();
Request Example:
 var
rItem : GetReceiveSmsModel;
nik : NikSmsClass;
getReceiveSms : string;
begin
  rItem := GetReceiveSmsModel.Create();
  nik := NikSmsClass.Create(EditUsername.Text,EditPassword.Text,TSendMethod.Get);
  getReceiveSms := nik.GetReceiveSms(StrToDateTime('9/9/2015'),StrToDateTime('3/2/2016'));  
end;
Response Example:

Memo3.Text := getReceiveSms;
Request Example:
 <form action="http://niksms.com/fa/publicapi/getReceiveSms" method="get" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td>نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td>کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td>تاریخ از:</td><td><input type="datetime" name="startDate" value="2016/1/1" /> تا <input type="datetime" name="endDate" value="2016/2/1" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
    [{"Message":"1","SenderNumber":989351234567,"ReceiveNumber":"983000123456","Id":1231234,"ReceiveDate":"\/Date(1471159569953)\/","IsRelayed":false},
    {"Message":"3","SenderNumber":989351234567,"ReceiveNumber":"983000123456","Id":1231234,"ReceiveDate":"\/Date(1471159431597)\/","IsRelayed":false}]
Request Example:
 <form action="http://niksms.com/fa/publicapi/getReceiveSms" method="post" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td>نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td>کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td>تاریخ از:</td><td><input type="datetime" name="startDate" value="2016/1/1" /> تا <input type="datetime" name="endDate" value="2016/2/1" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
    [{"Message":"1","SenderNumber":989351234567,"ReceiveNumber":"983000123456","Id":1231234,"ReceiveDate":"\/Date(1471159569953)\/","IsRelayed":false},
    {"Message":"3","SenderNumber":989351234567,"ReceiveNumber":"983000123456","Id":1231234,"ReceiveDate":"\/Date(1471159431597)\/","IsRelayed":false}]
Request Sample:
    var $api="http://niksms.com/fa/PublicApi/GetReceiveSms";
    $post_data = array(
        'username' => $this->user,
        'password' => $this->pass,
        'startDate'=>$startDate,
        'endDate'=>$endDate
    );
Response Sample:
    $result = $this->post_request($api, $post_data);
        
    if ($result['status'] == 'ok'){
        return $result['content'];    	
    }
    else {
        return $result['error']; 
    }
Request Example:
      Dim c As New niksmsApi.niksmsClass("Username", "Password")
      Dim result = c.GetReceiveSms(DateTime.Now.AddDays(-5), DateTime.Now.AddDays(1))
Response Example:
     Public Class GetReceiveSmsModel
        Public Sub New()
        Public Property Id As Integer
        Public Property IsRelayed As Boolean
        Public Property Message As String
        Public Property ReceiveDate As Date
        Public Property ReceiveNumber As String
        Public Property SenderNumber As Long
    End Class
متدهای وضعیت تحویل
متد GetSmsDelivery


این متد وضعیت پیامک های ارسالی شما را مشخص می کند که آیا ارسال شده است یا هنوز در صف ارسال است و یا بقیه ی وضعیت های ممکن پیش آمده برای ارسال شما.

پارامترهای ورودی :

: نام کاربری برای احراز هویت.
: رمز عبور برای احراز هویت کاربر.
: این پارامتر از نوع عددی است که کد nikIds که به عنوان کد پیگیری بعد از ارسال به شما تحویل داده شد را دریافت می کند.

مقادیر برگشتی :

مقدار بازگشنتی این متد به صورت عدد است که مقادیر زیر را شامل می شود.

کد عددی کدحروفی تعبیر پیام سیستم
0 NotFound هنگامی که کاربر درخواست مشاهده نتیجه پیامی را دارد که قبلا برای ما ارسال نکرده و در دیتابیس وجود ندارد.
1 DoNotSend در انتظار تاریخ ارسال
2 InQueue پیام شما در صف ارسال است.
3 Sent پیام شما ارسال شده است.
4 InsufficientCredit موجودی ناکافی است.
6 Block پیام شما مسدود شده است.
9 NotDeliverdSmsAdvertisingBlock به علت مسدودی پیامک تبلیغاتی، تحویل نشده است .
10 NotDeliverdBlackList به علت وجود شماره مخاطب در لیست سیاه کاربر، پیامک تحویل نشده است.
11 NotDeliverdDelay به علت طولانی تر شدن مدت زمان انتظار ارسال از حداکثر میزان تاخیر مجاز تعیین شده توسط کاربر، ارسال متوقف و بازگشت خورده است.
8 NotDeliverdCanceled به دلیل لغو ارسال دستی توسط کاربر، ارسال متوقف و برگشت خورده است.
14 NotDeliverdFiltering به علت استفاده از کلمه/کلمات غیر قابل قبول از سوی مخابرات، فیلتر و متوقف شده است
15 WaitingForRecheckInOprator به دلیل قطع شدن اینترنت یا .. این بسته نامشخص باقی مانده و باید تک تک پیامک هایش با اپراتور بررسی شود که تکراری ارسال نشود
16 OpratorFault اپراتور انتخابی برای ارسال پیامک شما جوابی به سرورهای ما ارسال نمی کند، احتمالا دچار نقص در سیستم ارسال خود شده است، با برطرف شدن این مشکل ارسال ها به روال عادی خود بر خواهند گشت.
17 NotDeliveredBlocked ارسال نشده است.
18 SendedButStatusNotUpdated در قسمت کنترل مجدد اپراتور مشخص شد که ارسال شده ولی وضعیتش هنوز به روزرسانی نشده
19 NotDeliveredDuplicate تکراری بوده مخصوصا در ارسال منطقه ای
20 NotDeliveredBlockPanel تحویل نشده - مسدودی پنل
21 NotDeliveredUnknownNumber تحویل نشده - شماره نادرست
22 WaitingForDeliveryBeforeSend در صف ارسال مخابرات
23 NotDeliveredUnAccessible تحویل نشده - عدم دسترسی
24 NotDeliveredNotAnswered تحویل نشده - عدم پاسخ
25 NotDeliveredLineIsBusy تحویل نشده - مشغولی
نمونه کد ارسالی و برگشتی :
Request Example:
  string path = "http://www.niksms.com/fa/publicapi/GetSmsDelivery";
     string postData = string.Format("username={0}&password={1}&nikIds={2}", _username, _password, nikIds);
     string response = ExecuteRequest(path, postData, _method);
     try
     {
         return new JavaScriptSerializer().Deserialize<List<SmsStatus>>(response);
     }
     catch { };
Response Example:
 List<SmsStatus>();
Request Example:
  var nikSms =  niksmsApi.niksmsClass("Username", "Password");
   var result = nikSms.GetSmsDelivery("MessageIds");
Response Example:
 List<SmsStatus>();
Request Example:
 
 var
nik : NikSmsClass;
getSmsDeliveryOutput : string;
begin
  nik := NikSmsClass.Create(EditUsername.Text,EditPassword.Text,TSendMethod.Post);
  getSmsDeliveryOutput := nik.GetSmsDelivery('345394434,2344423');
end;
Response Example:
Memo3.Text := getSmsDeliveryOutput;
Request Example:
  <form action="http://niksms.com/fa/publicapi/getSmsDelivery" method="get" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td>نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td>کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td>آی دی پیام های ارسالی : </td><td><input type="text" name="nikIds" value="2342423" dir="ltr" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
    [0]
Request Example:
 <form action="http://niksms.com/fa/publicapi/getSmsDelivery" method="post" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td>نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td>کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td>آی دی پیام های ارسالی : </td><td><input type="text" name="nikIds" value="2342423" dir="ltr" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
    [0]
Request Sample:
    $api="http://niksms.com/fa/PublicApi/GetSmsDelivery";
    $post_data = array(
			'username' => $this->user,
			'password' => $this->pass,
			'nikIds' => $this->tctCode
		);
Response Sample:
    $result = $this->post_request($this->api, $post_data);
    return $result['content']; 
    if ($result['status'] == 'ok'){	       	

    }
    else {
    return $result['error']; 
    }
Request Example:
    Dim c As New niksmsApi.niksmsClass("Username", "Password")
    Dim result = c.GetSmsDelivery("MessageIds")
Response Example:
     Public Enum SmsStatus As Byte
        NotFound = 0
        DoNotSend = 1
        InQueue = 2
        Sent = 3
        InsufficientCredit = 4
        Block = 6
        NotDeliverdCanceled = 8
        NotDeliverdSmsAdvertisingBlock = 9
        NotDeliverdBlackList = 10
        NotDeliverdDelay = 11
        NotDeliverdNoViber = 13
        NotDeliverdFiltering = 14
        WaitingForRecheckInOprator = 15
        OpratorFault = 16
        NotDeliveredBlocked = 17
        SendedButStatusNotUpdated = 18
        NotDeliveredDuplicate = 19
        NotDeliveredBlockPanel = 20
        NotDeliveredUnknownNumber = 21
    End Enum
متدهای عملیات
متد GetCredit


موجودی اصلی کاربر را باز می گرداند.

پارامترهای ورودی :

: نام کاربری برای احراز هویت.
: رمز عبور برای احراز هویت کاربر.

مقادیر برگشتی :

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

نمونه کد ارسالی و برگشتی :
Request Example:
string path = "http://www.niksms.com/fa/publicapi/getCredit";
        string postData = string.Format("username={0}&password={1}", _username, _password);
        string response = (ExecuteRequest(path, postData, _method));
Response Example:
int result = Convert.ToInt32(response);
Request Example:
var nikSms =  niksmsApi.niksmsClass("Username", "Password");
                            var result = nikSms.GetCredit();
Response Example:
int result = Convert.ToInt32(response);
Request Example:

var
nik : NikSmsClass;
getCreditOutput : integer;
begin
  nik := NikSmsClass.Create(EditUsername.Text,EditPassword.Text,TSendMethod.Post);
  getCreditOutput := nik.GetCredit();

Response Example:

Memo3.Text := getCreditOutPut.ToString();
Request Example:
 <form action="http://niksms.com/fa/publicapi/getCredit" method="get" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
    708710
Request Example:
 <form action="http://niksms.com/fa/publicapi/getCredit" method="post" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
    708710
Request Sample:
    var $api="http://niksms.com/fa/PublicApi/GetCredit";
    $post_data = array(
        'username' => $this->user,
        'password' => $this->pass
    );
Response Sample:
    $result = $this->post_request($api, $post_data);

    if ($result['status'] == 'ok'){
        return $result['content'];    	
    }
    else {
        return $result['error']; 
    }
Request Example:
        Dim c As New niksmsApi.niksmsClass("Username", "Password")
        Dim result = c.GetCredit()
Response Example:
        result As Integer
متد GetDiscountCredit


موجودی تخفیفی کاربر را باز می گرداند.

پارامترهای ورودی :

: نام کاربری برای احراز هویت.
: رمز عبور برای احراز هویت کاربر.

مقادیر برگشتی :

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

نمونه کد ارسالی و برگشتی :
Request Example:

string path = "http://www.niksms.com/fa/publicapi/GetDiscountCredit";
        string postData = string.Format("username={0}&password={1}", _username, _password);
        string response = (ExecuteRequest(path, postData, _method));
        
Response Example:

int result = Convert.ToInt32(response);
Request Example:
 var nikSms =  niksmsApi.niksmsClass("Username", "Password");
                            var result = nikSms.GetDiscountCredit();
Response Example:
 int result = Convert.ToInt32(response);
Request Example:
var
nik : NikSmsClass;
getDiscountCredit : Integer;
begin
  nik := NikSmsClass.Create(EditUsername.Text,EditPassword.Text,TSendMethod.Post);
  getDiscountCredit := nik.GetDiscountCredit();
Response Example:
  Memo3.Text := getDiscountCredit.ToString();
Request Example:
 <form action="http://niksms.com/fa/publicapi/getDiscountCredit" method="get" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
     708710
 <form action="http://niksms.com/fa/publicapi/getDiscountCredit" method="post" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
     708710
Request Sample:
    var $api="http://niksms.com/fa/PublicApi/GetDiscountCredit";
    $post_data = array(
        'username' => $this->user,
        'password' => $this->pass
    );
Response Sample:
    $result = $this->post_request($api, $post_data);
    if ($result['status'] == 'ok'){
        return $result['content'];    	
    }
    else {
        return $result['error']; 
    }
Request Example:
    Dim c As New niksmsApi.niksmsClass("Username", "Password")
    Dim result = c.GetDiscountCredit()
Response Example:

                                                                
متد GetPanelExpireDate


تاریخ انقضای پنل کاربری را باز می گرداند.

پارامترهای ورودی :

: نام کاربری برای احراز هویت.
: رمز عبور برای احراز هویت کاربر.

مقادیر برگشتی :

مقدار بازگشتی به صورت یک تاریخ است که شما می توانید مقدار خروجی را Cast کنید تا به شکل یک DateTime نشان داده شود.

نمونه کد ارسالی و برگشتی :
Request Example:
   string path = "http://www.niksms.com/fa/publicapi/GetPanelExpireDate";
            string postData = string.Format("username={0}&password={1}", _username, _password);
            DateTime response = Convert.ToDateTime(ExecuteRequest(path, postData, _method));
Response Example:
DateTime result;
Request Example:
   var nikSms =  niksmsApi.niksmsClass(""Username"", ""Password"");
    var result = nikSms.GetPanelExpireDate();
Response Example:
DateTime result;
Request Example:
var
nik : NikSmsClass;
getPanelExpireDate : TDateTime;
begin
  rItem := rItem.Create();
  nik := NikSmsClass.Create(EditUsername.Text,EditPassword.Text,TSendMethod.Post);
  getPanelExpireDate := nik.GetPanelExpireDate();
end;
Response Example:
  Memo3.Text := DateTimeToStr(getPanelExpireDate);
 <form action="http://niksms.com/fa/publicapi/getPanelExpireDate" method="get" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td>نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td>کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
    05/10/2017 09:10:00
 <form action="http://niksms.com/fa/publicapi/getPanelExpireDate" method="post" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
    05/10/2017 09:10:00
Request Example:
    var $api="http://niksms.com/fa/PublicApi/GetPanelExpireDate";
    $post_data = array(
        'username' => $this->user,
        'password' => $this->pass,
    );
Response Example:
    $result = $this->post_request($this->api, $post_data);
    return $result['content']; 
    if ($result['status'] == 'ok'){		       	

        }
    else {
        return $result['error']; 
    }
Request Example:
    Dim c As New niksmsApi.niksmsClass("Username", "Password")
    Dim result = c.GetPanelExpireDate()
Request Example:
 Dim result As Date?
متد ResetReceiveSmsVisitedStatus


پیامک های دریافتی که قبلا دریافت کرده اید را با ریست کردن از طریق این متد می توانید مجددا دریافت نمایید.

پارامترهای ورودی :

: نام کاربری برای احراز هویت.
: رمز عبور برای احراز هویت کاربر.
: این پارامتر تاریخ ابتدایی که از آن به بعد می خواهید پیامک های دریافتی را، دریافت کنید، مشخص می کند.
: این پارامتر تاریخ انتهایی که از آن به قبل می خواهید پیامک های دریافتی را، دریافت کنید، مشخص می کند.

مقادیر برگشتی :

مقدار بازگشتی این متد از نوع boolean است که مشخص می کند عملیات درست انجام شده است یا خیر.

نمونه کد ارسالی و برگشتی :
Request Example:
            string path = "http://www.niksms.com/fa/publicapi/ResetReceiveSmsVisitedStatus";
            string postData = string.Format("username={0}&password={1}&startDate={2}&endDate={3}", _username, _password, startDate, endDate);
            string result = ExecuteRequest(path, postData, _method);
Response Example:
bool response {get; set;};
Request Example:
var nikSms =  niksmsApi.niksmsClass(""Username"", ""Password"");
	var result = nikSms.ResetReceiveSmsVisitedStatus(DateTime.Now.AddDays(-5), DateTime.Now.AddDays(1));
Response Example:
    bool response {get; set;};
Request Example:
               var
nik : NikSmsClass;
resetVisitedOutput : Boolean;
begin
  nik := NikSmsClass.Create(EditUsername.Text,EditPassword.Text,TSendMethod.Post);
  resetVisitedOutput := nik.ResetReceiveSmsVisitedStatus(StrToDateTime('9/9/2015'),StrToDateTime('3/2/2016'));
end;
Response Example:
      if resetVisitedOutput = True then
        Memo3.Text := 'true';
      if resetVisitedOutput = False then
        Memo3.Text := 'false';
Request Example:
<form action="http://niksms.com/fa/publicapi/resetReceiveSmsVisitedStatus" method="get" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td></td><td>تاریخ از:<input type="datetime" name="startDate" value="2016/1/1" /> تا <input type="datetime" name="endDate" value="2016/2/1" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
    True
Request Example:
<form action="http://niksms.com/fa/publicapi/resetReceiveSmsVisitedStatus" method="get" style="direction:rtl">
<table cellpadding="3" cellspacing="3" border="0">
<tr>
<td> نام کاربری : </td><td><input type="text" value="" name="username" dir="ltr" /></td>
</tr>
<tr>
<td> کلمه عبور : </td><td><input type="password" name="password" value="" dir="ltr" /></td>
</tr>
<tr>
<td></td><td>تاریخ از:<input type="datetime" name="startDate" value="2016/1/1" /> تا <input type="datetime" name="endDate" value="2016/2/1" /></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ارسال" /></td>
</tr>
</table>
</form>
Response Example:
    True
Request Sample:
    var $api="http://niksms.com/fa/PublicApi/ResetReceiveSmsVisitedStatus";
    $post_data = array(
        'username' => $this->user,
        'password' => $this->pass,
        'startDate'=>$startDate,
        'endDate'=>$endDate
    );
Response Sample:
    $result = $this->post_request($api, $post_data);
        
    if ($result['status'] == 'ok'){
        return $result['content'];    	
    }
    else {
        return $result['error']; 
    }
Request Example:
    Dim c As New niksmsApi.niksmsClass("Username", "Password")
    Dim result = c.ResetReceiveSmsVisitedStatus(DateTime.Now.AddDays(-5), DateTime.Now.AddDays(1))
Response Example:
    Dim result As Boolean