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

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

وب سرویس چیست؟
وب سرویس ها برنامه هایی (قطعه کدهایی) هستند که به صورت تحت وب قابل دسترسی بوده و از طریق پروتکل های استانداردی مانند به انتقال و مبادله دیتا بین یک سرور مشخص با سایر برنامه های کاربردی متصل با آن می پردازند. اساس کار وب سرویس ها بر پایه دریافت و تولید پیغام، بنیان گذاری شده است. بدین معنی که آنها منتظر می مانند که کلاینت ها به آنها وصل شده و بنا به درخواست کلاینت ها به آن ها پاسخ مشخصی را ارسال کنند.

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

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

راهنمای فنی :
نمونه کدهای زبان های مختلف برنامه نویسی
تنظیمات عمومی
Web Service Address


http://niksms.com:1370/NiksmsWebservice.svc?wsdl

Static Parameter (AuthenticationModel)

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

Request Example:
Public class AuthenticationModel
    {	
    public string Username { get; set; }
 	
    public string Password { get; set; }
    }

توجه داشته باشید که از این پس، در حین توضیحات مرتبط با متدها از شرح مرتبط با این پارامتر ورودی صرف نظر شده، زیرا در تمامی آنها، این روش به صورتی که در بالا شرح داده شده است، تکرار می شود.

Request Example:

class NiksmsWebserviceStructAuthenticationModel extends NiksmsWebserviceWsdlClass
  {
  public $Username;
 
  public $Password;
  
  public function __construct($_username = NULL,$_password = NULL)
  {
  parent::__construct(array('Username'=>$_username,'Password'=>$_password),false);
  }
  public function getUsername()
  {
  return $this->Username;
  }
 
  public function setUsername($_username)
  {
  return ($this->Username = $_username);
  }
  public function getPassword()
  {
  return $this->Password;
  }
 
  public function setPassword($_password)
  {
  return ($this->Password = $_password);
  }
 
  public static function __set_state(array $_array,$_className = __CLASS__)
  {
  return parent::__set_state($_array,$_className);
  }
  
  public function __toString()
  {
  return __CLASS__;
  }
  }
Request Example:
  AuthenticationModel = class(TRemotable)
  private
    FUsername: string;
    FUsername_Specified: boolean;
    FPassword: string;
    FPassword_Specified: boolean;
    procedure SetUsername(Index: Integer; const Astring: string);
    function  Username_Specified(Index: Integer): boolean;
    procedure SetPassword(Index: Integer; const Astring: string);
    function  Password_Specified(Index: Integer): boolean;
  published
    property Username: string  Index (IS_OPTN) read FUsername write SetUsername stored Username_Specified;
    property Password: string  Index (IS_OPTN) read FPassword write SetPassword stored Password_Specified;
  end;
Request Example:
Public class AuthenticationModel
    {	
    public string Username { get; set; }
 	
    public string Password { get; set; }
    }

توجه داشته باشید که از این پس، در حین توضیحات مرتبط با متدها از شرح مرتبط با این پارامتر ورودی صرف نظر شده، زیرا در تمامی آنها، این روش به صورتی که در بالا شرح داده شده است، تکرار می شود.

Request Example:
    var authenticate={"security":{"Username":username, "Password":password}};

توجه داشته باشید که از این پس، در حین توضیحات مرتبط با متدها از شرح مرتبط با این پارامتر ورودی صرف نظر شده، زیرا در تمامی آنها، این روش به صورتی که در بالا شرح داده شده است، تکرار می شود.

متدهای ارسال
متد 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:
var niksms = new NiksmsWebserviceClient();
var result = niksms.GroupSms(new AuthenticationModel()
{
    Username = "",
    Password = "",
}, new GroupSmsModel()
{
    Message = "Test Message",
    SenderNumber = "9830006179",
    Numbers = new string[] {"09121111111", "09141111111"},
    SendType = OperatorSmsSendType.Normal,
    SendOn = DateTime.Now,
    YourMessageId = new long[] {215, 216}
});
Response Example:
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:
        $niksmsWebserviceServiceGroup = new NiksmsWebserviceServiceGroup();
        // sample call for NiksmsWebserviceServiceGroup::GroupSms()
        $datetime = new DateTime();
        $sendOn=$datetime->format('c');
        $sendType= 'Normal';
        $senderNumber = $yourSenderNumber;
        $recieptionNumbers= Array($yourTestNumber1,$yourTestNumber2);
        $messageIds=Array($yourDataBaseId1,$yourDataBaseId2);
        $messageBody="test";
        $groupsmsInputModel=new NiksmsWebserviceStructGroupSmsModel($sendOn,$sendType,$senderNumber,$recieptionNumbers,$messageIds,$messageBody);
        $groupsmsModel=new NiksmsWebserviceStructGroupSms($authenticateModel,$groupsmsInputModel);
        if($niksmsWebserviceServiceGroup->GroupSms($groupsmsModel))
        {
            $groupsmsResult=$niksmsWebserviceServiceGroup->getResult();
            if($groupsmsResult->GroupSmsResult->Status=="Successful")
            {
                print_r($groupsmsResult->GroupSmsResult->NikIds->long);
            }
            else{
                echo $groupsmsResult->GroupSmsResult->WarningMessage;
            }
        }
        else
        {
            print_r($niksmsWebserviceServiceGroup->getLastError());
        }
Response Example:
   class NiksmsWebserviceStructReturnSmsResult extends NiksmsWebserviceWsdlClass
    {
        public $Status;
        public $Id;
        public $WarningMessage;
        public $NikIds;
        public function __construct($_status,$_id = NULL,$_warningMessage = NULL,$_nikIds = NULL)
        {
            parent::__construct(array('Status'=>$_status,'Id'=>$_id,'WarningMessage'=>$_warningMessage,'NikIds'=>($_nikIds instanceof NiksmsWebserviceStructArrayOfLong)?$_nikIds:new NiksmsWebserviceStructArrayOfLong($_nikIds)),false);
        }
        public function getStatus()
        {
            return $this->Status;
        }
        public function setStatus($_status)
        {
            if(!NiksmsWebserviceEnumSmsReturn::valueIsValid($_status))
            {
                return false;
            }
            return ($this->Status = $_status);
        }
        public function getId()
        {
            return $this->Id;
        }
        public function setId($_id)
        {
            return ($this->Id = $_id);
        }
        public function getWarningMessage()
        {
            return $this->WarningMessage;
        }
        public function setWarningMessage($_warningMessage)
        {
            return ($this->WarningMessage = $_warningMessage);
        }
        public function getNikIds()
        {
            return $this->NikIds;
        }
        public function setNikIds($_nikIds)
        {
            return ($this->NikIds = $_nikIds);
        }
        public static function __set_state(array $_array,$_className = __CLASS__)
        {
            return parent::__set_state($_array,$_className);
        }
        public function __toString()
        {
            return __CLASS__;
        }
    }
Request Example:
        // init Authentication
        authenticationModel:= NiksmsWebService.AuthenticationModel.Create;
        authenticationModel.Username := EditUsername.Text;
        authenticationModel.Password := EditPassword.Text;
        groupSmsModel :=  NiksmsWebService.GroupSmsModel.Create;
        groupSmsModel.SenderNumber := EditSnderNumber.Text;
        groupSmsModel.SendType := OperatorSmsSendType.Normal;
        groupSmsModel.Message_:= 'تست پیام کوتاه';
        groupSmsModel.Numbers := numbers;
        groupSmsModel.SendOn := DtXS;
        result := (HTTPRIO1 as INikSmsWebservice).GroupSms(authenticationModel,groupSmsModel);
Response Example:
       ReturnSmsResult = class(TRemotable)
        private
            FStatus: SmsReturn;
            FId: string;
            FId_Specified: boolean;
            FWarningMessage: string;
            FWarningMessage_Specified: boolean;
            FNikIds: ArrayOfLong;
            FNikIds_Specified: boolean;
            procedure SetId(Index: Integer; const Astring: string);
            function  Id_Specified(Index: Integer): boolean;
            procedure SetWarningMessage(Index: Integer; const Astring: string);
            function  WarningMessage_Specified(Index: Integer): boolean;
            procedure SetNikIds(Index: Integer; const AArrayOfLong: ArrayOfLong);
            function  NikIds_Specified(Index: Integer): boolean;
        published
            property Status:         SmsReturn    read FStatus write FStatus;
            property Id:             string       Index (IS_OPTN) read FId write SetId stored Id_Specified;
            property WarningMessage: string       Index (IS_OPTN) read FWarningMessage write SetWarningMessage stored WarningMessage_Specified;
            property NikIds:         ArrayOfLong  Index (IS_OPTN) read FNikIds write SetNikIds stored NikIds_Specified;
        end;
Request Example:
com.niksms.NiksmsWebservice webservice = new com.niksms.NiksmsWebservice();
            com.niksms.ReturnSmsResult result = webservice.GroupSms(new com.niksms.AuthenticationModel()
            {
                Username = txtUserName.Text,
                Password = txtPassword.Text
            },
            new com.niksms.GroupSmsModel()
            {
                Message = txtMessage.Text,
                Numbers = new string[] { txtRecieption.Text },
                SenderNumber = txtSenderNumber.Text,
                SendOn = DateTime.Now,
                SendType = com.niksms.OperatorSmsSendType.Normal,
                YourMessageId = new long[] { 1 }
            });
            if(result.Status==com.niksms.SmsReturn.Successful)
            {
                foreach (var item in result.NikIds)
                {
                    lblResult.Text += item.ToString() + ",";
                }
                if (lblResult.Text.Length > 0)
                {
                    lblResult.Text = lblResult.Text.Substring(0, lblResult.Text.Length - 1);
                }
            }
Response Example:
public class ReturnSmsResult
    {
        public SmsReturn Status { get; set; } 
        public string Id { get; set; }
        public string WarningMessage { get; set; }
        public List NikIds { get; set; }
    }
Request Example:
    var username = "Your UserName";
	var password = "Your Password";
	var groupSmsMobile ="Your GroupSms Test Mobile";
	var authenticate={"security":{"Username":username, "Password":password}};
    var url = "http://niksms.com:1370/NiksmsWebservice.svc?wsdl";
    soap.createClient(url, function (err, client) {
		
		//Group Sms
		var model={"security":{
			"Username":username,
			"Password":password
			},
		"model": {
            "Message": "صرفا جهت تست ارسال گروهی می باشد",
            "SenderNumber": "9830006179",
            "Numbers": [{"string":groupSmsMobile}],
            "SendType": "Normal",
            "YourMessageId": [{"long":"1"}],
			//"SendOn": "2016-06-22T15:01:00.000Z" in parameter optional ast
		}};
    });
Response Example:
    client.GroupSms(model, function (err, result,body) {
		console.log("GroupSms : " + result.GroupSmsResult.Status);
    });
متد 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:
var niksms = new NiksmsWebserviceClient();
var result = niksms.PtpSms(new AuthenticationModel()
{
    Username = "",
    Password = "",
}, new PtpSmsModel()
{
    Message = new string[] { "Test Message For Mobile 1", "Test Message For Mobile 2" },
    SenderNumber = "9830006179",
    Numbers = new string[] {"09121111111", "09141111111"},
    SendType = OperatorSmsSendType.Normal,
    SendOn = DateTime.Now,
    YourMessageId = new long[] {215, 216}
});
Response Example:
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:
// sample call for NiksmsWebserviceServicePtp::PtpSms()
$datetime = new DateTime();
$sendOn=$datetime->format('c');
$sendType= 'Normal';
$senderNumber = $yourSenderNumber;
$recieptionNumbers= Array($yourTestNumber1,$yourTestNumber2);  
$messageIds=Array($yourDataBaseId1,$yourDataBaseId2);   
$messageBody=Array("test1","test2");
$ptpInputModel=new NiksmsWebserviceStructPtpSmsModel($sendOn,$sendType,$senderNumber,$recieptionNumbers,$messageIds,$messageBody);
$ptpModel=new NiksmsWebserviceStructPtpSms($authenticateModel,$ptpInputModel);
$niksmsWebserviceServicePtp = new NiksmsWebserviceServicePtp();
if($niksmsWebserviceServicePtp->PtpSms($ptpModel))
{
        $ptpResult=$niksmsWebserviceServicePtp->getResult();
    if($ptpResult->PtpSmsResult->Status=="Successful")
    {
        print_r($ptpResult->PtpSmsResult->NikIds->long);   
    }
    else{
        echo $ptpResult->PtpSmsResult->WarningMessage;
    }  
}
else
{
    print_r($niksmsWebserviceServicePtp->getLastError());   
}
Response Example:
   class NiksmsWebserviceStructReturnSmsResult extends NiksmsWebserviceWsdlClass
    {
        public $Status;
        public $Id;
        public $WarningMessage;
        public $NikIds;
        public function __construct($_status,$_id = NULL,$_warningMessage = NULL,$_nikIds = NULL)
        {
            parent::__construct(array('Status'=>$_status,'Id'=>$_id,'WarningMessage'=>$_warningMessage,'NikIds'=>($_nikIds instanceof NiksmsWebserviceStructArrayOfLong)?$_nikIds:new NiksmsWebserviceStructArrayOfLong($_nikIds)),false);
        }
        public function getStatus()
        {
            return $this->Status;
        }
        public function setStatus($_status)
        {
            if(!NiksmsWebserviceEnumSmsReturn::valueIsValid($_status))
            {
                return false;
            }
            return ($this->Status = $_status);
        }
        public function getId()
        {
            return $this->Id;
        }
        public function setId($_id)
        {
            return ($this->Id = $_id);
        }
        public function getWarningMessage()
        {
            return $this->WarningMessage;
        }
        public function setWarningMessage($_warningMessage)
        {
            return ($this->WarningMessage = $_warningMessage);
        }
        public function getNikIds()
        {
            return $this->NikIds;
        }
        public function setNikIds($_nikIds)
        {
            return ($this->NikIds = $_nikIds);
        }
        public static function __set_state(array $_array,$_className = __CLASS__)
        {
            return parent::__set_state($_array,$_className);
        }
        public function __toString()
        {
            return __CLASS__;
        }
    }
Request Example:
        authenticationModel:= NiksmsWebService.AuthenticationModel.Create;
        authenticationModel.Username := EditUsername.Text;
        authenticationModel.Password := EditPassword.Text;
        ptpModel := NiksmsWebService.PtpSmsModel.Create;
        ptpModel.SenderNumber := EditSnderNumber.Text;
        ptpModel.Message_:= messages;
        ptpModel.Numbers := numbers;
        ptpModel.SendType := OperatorSmsSendType.Normal;
        ptpModel.SendOn := DtXS;
        // optional
        ptpModel.YourMessageId :=  yourMessageId;
        result := (HTTPRIO1 as INikSmsWebservice).PtpSms(authenticationModel,ptpModel);
        Memo3.Text := SendSmsStatusHandling(GetEnumName(TypeInfo(SmsReturn), ord(result.Status)));
        Memo3.Lines.Append ('Ids : ');
        for rItem in result.NikIds do
            begin
            Memo3.Text := Memo3.Text + rItem.ToString();
            Memo3.Lines.Add('');
        end;
Response Example:
       ReturnSmsResult = class(TRemotable)
        private
            FStatus: SmsReturn;
            FId: string;
            FId_Specified: boolean;
            FWarningMessage: string;
            FWarningMessage_Specified: boolean;
            FNikIds: ArrayOfLong;
            FNikIds_Specified: boolean;
            procedure SetId(Index: Integer; const Astring: string);
            function  Id_Specified(Index: Integer): boolean;
            procedure SetWarningMessage(Index: Integer; const Astring: string);
            function  WarningMessage_Specified(Index: Integer): boolean;
            procedure SetNikIds(Index: Integer; const AArrayOfLong: ArrayOfLong);
            function  NikIds_Specified(Index: Integer): boolean;
        published
            property Status:         SmsReturn    read FStatus write FStatus;
            property Id:             string       Index (IS_OPTN) read FId write SetId stored Id_Specified;
            property WarningMessage: string       Index (IS_OPTN) read FWarningMessage write SetWarningMessage stored WarningMessage_Specified;
            property NikIds:         ArrayOfLong  Index (IS_OPTN) read FNikIds write SetNikIds stored NikIds_Specified;
        end;
Request Example:
       com.niksms.NiksmsWebservice webservice = new com.niksms.NiksmsWebservice();
            com.niksms.ReturnSmsResult result = webservice.PtpSms(new com.niksms.AuthenticationModel()
            {
                Username = txtUserName.Text,
                Password = txtPassword.Text
            },
            new com.niksms.PtpSmsModel()
            {
                Message = new string[] { txtMessage.Text },
                Numbers = new string[] { txtRecieption.Text },
                SenderNumber = txtSenderNumber.Text,
                SendOn = DateTime.Now,
                SendType = com.niksms.OperatorSmsSendType.Normal,
                YourMessageId = new long[] { 1 }
            });
            if (result.Status == com.niksms.SmsReturn.Successful)
            {
                foreach (var item in result.NikIds)
                {
                    lblResult.Text += item.ToString() + ",";
                }
                if (lblResult.Text.Length > 0)
                {
                    lblResult.Text = lblResult.Text.Substring(0, lblResult.Text.Length - 1);
                }
            }
Response Example:
       public class ReturnSmsResult
    {
        public SmsReturn Status { get; set; } 
        public string Id { get; set; }
        public string WarningMessage { get; set; }
        public List NikIds { get; set; }
    }
Request Example:
   var username = "Your UserName";
        var password = "Your Password";
        var ptpTestMobile ="Your Ptp Test Mobile";
	    var authenticate={"security":{"Username":username, "Password":password}};
        var url = "http://niksms.com:1370/NiksmsWebservice.svc?wsdl";
        soap.createClient(url, function (err, client) {	
    		//Ptp Sms
		    var ptpModel={"security":{
    			"Username":username,
			    "Password":password
			    },
		    "model": {
                "Message": [{"string":"جهت تست نظیر به نظیر"}],
                "SenderNumber": "9830006179",
                "Numbers": [{"string":ptpTestMobile}],
                "SendType": "Normal",
                "YourMessageId": [{"long":"1"}],
			    //"SendOn": "2016-06-22T15:01:00.000Z" in parameter optional ast
		    }};
        });
Response Example:
    	client.PtpSms(ptpModel, function (err, result,body) {
    		console.log("PtpSms : " + result.PtpSmsResult.Status);
        });
متدهای دریافت
متد GetReceiveSms


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

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


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

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

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

کدحروفی تعبیر پیام سیستم
Message متن پیام را برای شما مشخص می کند.
SenderNumber شماره موبایل شخص ارسال کننده را مشخص می کند.
ReceiveNumber شماره اختصاصی شما که این پیام را دریافت کرده است را مشخص می کند.
Id کد یکتا است که برای این متن دریافتی تعیین شده است.
ReceiveDate تاریخ دریافت پیام را نشان می دهد.
IsRelayed آیا از طریق سرویس Traffic Relay ارسال شده است یا خیر (به صورت خودکار).
نمونه کد ارسالی و برگشتی:
Request Example:
var niksms = new NiksmsWebservice.NiksmsWebservice();
var result = niksms.GetReceiveSms(AuthenticationModel,null,null);
if (result != null && result.Length > 0)
{
    foreach (var model in result)
    {
        Console.WriteLine("Id : " + model.Id + Environment.NewLine);
        Console.WriteLine("Message : " + model.Message + Environment.NewLine);
        Console.WriteLine("SenderNumber : " + model.SenderNumber + Environment.NewLine);
        Console.WriteLine("ReceiveNumber : " + model.ReceiveNumber + Environment.NewLine);
        Console.WriteLine("ReceiveDate : " + model.ReceiveDate + Environment.NewLine);
        Console.WriteLine("IsRelayed : " + model.IsRelayed + Environment.NewLine);
    }
}
Response Example:
156445
Test
989127***165
9830006179****
2016/01/12 20:50:30
True
Request Example:
   $fromdatetime = new DateTime('2016-01-01 00:00:00');
    $datetime = new DateTime();
    $fromDate=$fromdatetime->format('c');
    $toDate=$datetime->format('c');
    if($niksmsWebserviceServiceGet->GetReceiveSms(new NiksmsWebserviceStructGetReceiveSms($fromDate,$toDate,$authenticateModel)))
        {
            $result=$niksmsWebserviceServiceGet->getResult();
            if($result->GetReceiveSmsResult)
            {
                echo "
"; echo "Your RecievedSms Is : " + print_r($result->GetReceiveSmsResult); } } else print_r($niksmsWebserviceServiceGet->getLastError());
Response Example:
    class NiksmsWebserviceStructGetReceiveSms extends NiksmsWebserviceWsdlClass
{
    public $startDate;
    public $endDate;
    public $security;
    
    public function __construct($_startDate,$_endDate,$_security = NULL)
    {
        parent::__construct(array('startDate'=>$_startDate,'endDate'=>$_endDate,'security'=>$_security),false);
    }
    public function getStartDate()
    {
        return $this->startDate;
    }
    public function setStartDate($_startDate)
    {
        return ($this->startDate = $_startDate);
    }
    public function getEndDate()
    {
        return $this->endDate;
    }
    public function setEndDate($_endDate)
    {
        return ($this->endDate = $_endDate);
    }
    public function getSecurity()
    {
        return $this->security;
    }
    public function setSecurity($_security)
    {
        return ($this->security = $_security);
    }
    public static function __set_state(array $_array,$_className = __CLASS__)
    {
        return parent::__set_state($_array,$_className);
    }
    public function __toString()
    {
        return __CLASS__;
    }
}
Request Example:
// init Authentication
  authenticationModel:= NiksmsWebService.AuthenticationModel.Create;
  authenticationModel.Username := EditUsername.Text;
  authenticationModel.Password := EditPassword.Text;
   result := (HTTPRIO1 as INikSmsWebservice).GetReceiveSms(authenticationModel,nil,nil);
Response Example:
    GetReceiveSmsModel = class(TRemotable)
  private
    FMessage_: string;
    FMessage__Specified: boolean;
    FSenderNumber: Int64;
    FReceiveNumber: string;
    FReceiveNumber_Specified: boolean;
    FId: Integer;
    FReceiveDate: TXSDateTime;
    FIsRelayed: Boolean;
    procedure SetMessage_(Index: Integer; const Astring: string);
    function  Message__Specified(Index: Integer): boolean;
    procedure SetReceiveNumber(Index: Integer; const Astring: string);
    function  ReceiveNumber_Specified(Index: Integer): boolean;
  public
    destructor Destroy; override;
  published
    property Message_:      string       Index (IS_OPTN) read FMessage_ write SetMessage_ stored Message__Specified;
    property SenderNumber:  Int64        read FSenderNumber write FSenderNumber;
    property ReceiveNumber: string       Index (IS_OPTN) read FReceiveNumber write SetReceiveNumber stored ReceiveNumber_Specified;
    property Id:            Integer      read FId write FId;
    property ReceiveDate:   TXSDateTime  read FReceiveDate write FReceiveDate;
    property IsRelayed:     Boolean      read FIsRelayed write FIsRelayed;
  end;
Request Example:
            DateTime? datefrom = null;
            DateTime? dateto = null;
          com.niksms.NiksmsWebservice webservice = new com.niksms.NiksmsWebservice();
            if (!string.IsNullOrEmpty(DateFrom.Text))
                datefrom = Convert.ToDateTime(DateFrom.Text);
          
            if (!string.IsNullOrEmpty(DateTo.Text))
                 dateto = Convert.ToDateTime(DateTo.Text);
            com.niksms.GetReceiveSmsModel[] result = webservice.GetReceiveSms(new com.niksms.AuthenticationModel()
            {
                Username = txtUserName.Text,
                Password = txtPassword.Text
            }, datefrom, dateto);
            
Response Example:
    public class GetReceiveSmsModel 
    {
        public string Message { get; set; }            
        public long SenderNumber { get; set; }
        public string ReceiveNumber { get; set; }
        public int Id { get; set; }
        public DateTime ReceiveDate { get; set; }
        public bool IsRelayed { get; set; }
    }
Request Example:
        var soap = require('soap');
        var parseString = require('xml2js').parseString;
        module.exports.sendTestMessage = function () {
    	var username = "Your UserName";
    	var password = "Your Password";
    	var authenticate={"security":{"Username":username, "Password":password}};
        var url = "http://niksms.com:1370/NiksmsWebservice.svc?wsdl";
        soap.createClient(url, function (err, client) {	
		
		//Get Receive Sms
		var receiveModel={"security":{
			"Username":username,
			"Password":password
			},
		    "startDate": "2016-06-22T15:01:00.000Z",
		    "endDate": "2016-08-15T15:01:00.000Z"
		    };		
        });
    };
    module.exports.sendTestMessage();
Response Example:
    		client.GetReceiveSms(receiveModel, function (err, result,body) {
			console.log("Recieved Sms : " + (result.GetReceiveSmsResult!=null ? result.GetReceiveSmsResult.GetReceiveSmsModel[0].Message : "empty"));
            });
متدهای وضعیت تحویل
متد GetSmsDelivery


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

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

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

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

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

کد عددی کدحروفی تعبیر پیام سیستم
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:
var result = niksms.GetSmsDelivery(AuthenticationModel, new long[] { 39397821, 39397822});
if (result != null && result.Length > 0)
{
    for (int i = 0; i < result.Length; i++)
    {
        Console.WriteLine(result[i]);
    }
}
Response Example:
"DoNotSend"
Request Example:
$fromdatetime = new DateTime('2016-01-01 00:00:00');
$datetime = new DateTime();
$fromDate=$fromdatetime->format('c');
$toDate=$datetime->format('c');
if($niksmsWebserviceServiceGet->GetReceiveSms(new NiksmsWebserviceStructGetReceiveSms($fromDate,$toDate,$authenticateModel)))
    {
        $result=$niksmsWebserviceServiceGet->getResult();
        if($result->GetReceiveSmsResult)
        {
            echo "
"; echo "Your RecievedSms Is : " + print_r($result->GetReceiveSmsResult); } } else print_r($niksmsWebserviceServiceGet->getLastError());
Response Example:
class NiksmsWebserviceEnumSmsStatus extends NiksmsWebserviceWsdlClass
{
    const VALUE_NOTFOUND = 'NotFound';
    const VALUE_DONOTSEND = 'DoNotSend';
    const VALUE_INQUEUE = 'InQueue';
    const VALUE_SENT = 'Sent';
    const VALUE_INSUFFICIENTCREDIT = 'InsufficientCredit';
    const VALUE_BLOCK = 'Block';
    const VALUE_NOTDELIVERDSMSADVERTISINGBLOCK = 'NotDeliverdSmsAdvertisingBlock';
    const VALUE_NOTDELIVERDBLACKLIST = 'NotDeliverdBlackList';
    const VALUE_NOTDELIVERDDELAY = 'NotDeliverdDelay';
    const VALUE_NOTDELIVERDCANCELED = 'NotDeliverdCanceled';
    const VALUE_NOTDELIVERDNOVIBER = 'NotDeliverdNoViber';
    const VALUE_NOTDELIVERDFILTERING = 'NotDeliverdFiltering';
    const VALUE_WAITINGFORRECHECKINOPRATOR = 'WaitingForRecheckInOprator';
    const VALUE_OPRATORFAULT = 'OpratorFault';
    const VALUE_NOTDELIVEREDBLOCKED = 'NotDeliveredBlocked';
    const VALUE_SENDEDBUTSTATUSNOTUPDATED = 'SendedButStatusNotUpdated';
    const VALUE_NOTDELIVEREDDUPLICATE = 'NotDeliveredDuplicate';
    const VALUE_NOTDELIVEREDBLOCKPANEL = 'NotDeliveredBlockPanel';    
}
Request Example:
// init Authentication
  authenticationModel:= NiksmsWebService.AuthenticationModel.Create;
  authenticationModel.Username := EditUsername.Text;
  authenticationModel.Password := EditPassword.Text;
  result := (HTTPRIO1 as INikSmsWebservice).GetSmsDelivery(authenticationModel, ids);
Response Sample:
SmsStatus = (
      NotFound, 
      DoNotSend, 
      InQueue, 
      Sent, 
      InsufficientCredit, 
      Block, 
      NotDeliverdSmsAdvertisingBlock, 
      NotDeliverdBlackList, 
      NotDeliverdDelay, 
      NotDeliverdCanceled, 
      NotDeliverdNoViber, 
      NotDeliverdFiltering, 
      WaitingForRecheckInOprator, 
      OpratorFault, 
      NotDeliveredBlocked, 
      SendedButStatusNotUpdated, 
      NotDeliveredDuplicate, 
      NotDeliveredBlockPanel
  );
Request Sample:
            long[] nikIds = new long[1];
            if (!string.IsNullOrEmpty(txtNikIds.Text))
            {
                string[] nikIdSplit = txtNikIds.Text.Split(',');
                nikIds = new long[nikIdSplit.Count()];
                for (int i = 0; i < nikIdSplit.Count();i++)
                {
                    nikIds[i] = Convert.ToInt64(nikIdSplit[i]);
                }
            }
            com.niksms.NiksmsWebservice webservice = new com.niksms.NiksmsWebservice();
            com.niksms.SmsStatus[] result = webservice.GetSmsDelivery(new com.niksms.AuthenticationModel()
            {
                Username = txtUserName.Text,
                Password = txtPassword.Text
            },nikIds);
Reponse Sample:
    public enum SmsStatus : byte
    {
        NotFound = 0,
        DoNotSend = 1,
        InQueue = 2,
        Sent = 3,
        InsufficientCredit = 4,
        Block = 6,
        NotDeliverdSmsAdvertisingBlock = 9,
        NotDeliverdBlackList = 10,
        NotDeliverdDelay = 11,
        NotDeliverdCanceled = 8,
        NotDeliverdNoViber = 13,
        NotDeliverdFiltering = 14,
        WaitingForRecheckInOprator=15,
        OpratorFault=16,
        NotDeliveredBlocked = 17,
        SendedButStatusNotUpdated = 18,
        NotDeliveredDuplicate = 19,
        NotDeliveredBlockPanel = 20,
        NotDeliveredUnknownNumber = 21,
        WaitingForDeliveryBeforeSend = 22,
        NotDeliveredUnAccessible = 23,
        NotDeliveredNotAnswered = 24,
        NotDeliveredLineIsBusy = 25,
    }
Request Sample:
    var soap = require('soap');
    var parseString = require('xml2js').parseString;
    module.exports.sendTestMessage = function () {
	    var username = "Your UserName";
	    var password = "Your Password";
	    var authenticate={"security":{"Username":username, "Password":password}};
        var url = "http://niksms.com:1370/NiksmsWebservice.svc?wsdl";
        soap.createClient(url, function (err, client) {	
    		   //Get Sms Delivery
		        var smsDeliveryModel={"security":{
			    "Username":username,
			    "Password":password
			    },
		        "nikIds": [{"long":"1"}]
		        };
            });
        });
    };
module.exports.sendTestMessage();
Response Sample:
    	client.GetSmsDelivery(smsDeliveryModel, function (err, result,body) {
			console.log("Sms Delivery Result : " + (result.GetSmsDeliveryResult!=null ? result.GetSmsDeliveryResult.SmsStatus[0] : "empty"));
        });
متد GetSmsDeliveryWithClientId


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

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

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

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

مقدار بازگشتی از نوع GetSmsDeliveryWithClientIdModel است که دارای 2 پارامتر زیر است:
: نشان دهنده وضعیت این پیامک است.
: این پارامتر از نوع عددی است و کد این پیامک در سرور نیک اس ام را نمایش می دهد.

نمونه کد ارسالی و برگشتی :
Request Example:
var result = niksms.GetSmsDelivery(AuthenticationModel, new long[] { 39397821, 39397822});
if (result != null && result.Length > 0)
{
    for (int i = 0; i < result.Length; i++)
    {
        Console.WriteLine(result[i]);
    }
}
Response Example:
"DoNotSend"
Request Example:
$fromdatetime = new DateTime('2016-01-01 00:00:00');
$datetime = new DateTime();
$fromDate=$fromdatetime->format('c');
$toDate=$datetime->format('c');
if($niksmsWebserviceServiceGet->GetReceiveSms(new NiksmsWebserviceStructGetReceiveSms($fromDate,$toDate,$authenticateModel)))
    {
        $result=$niksmsWebserviceServiceGet->getResult();
        if($result->GetReceiveSmsResult)
        {
            echo "
"; echo "Your RecievedSms Is : " + print_r($result->GetReceiveSmsResult); } } else print_r($niksmsWebserviceServiceGet->getLastError());
Response Example:
class NiksmsWebserviceEnumSmsStatus extends NiksmsWebserviceWsdlClass
{
    const VALUE_NOTFOUND = 'NotFound';
    const VALUE_DONOTSEND = 'DoNotSend';
    const VALUE_INQUEUE = 'InQueue';
    const VALUE_SENT = 'Sent';
    const VALUE_INSUFFICIENTCREDIT = 'InsufficientCredit';
    const VALUE_BLOCK = 'Block';
    const VALUE_NOTDELIVERDSMSADVERTISINGBLOCK = 'NotDeliverdSmsAdvertisingBlock';
    const VALUE_NOTDELIVERDBLACKLIST = 'NotDeliverdBlackList';
    const VALUE_NOTDELIVERDDELAY = 'NotDeliverdDelay';
    const VALUE_NOTDELIVERDCANCELED = 'NotDeliverdCanceled';
    const VALUE_NOTDELIVERDNOVIBER = 'NotDeliverdNoViber';
    const VALUE_NOTDELIVERDFILTERING = 'NotDeliverdFiltering';
    const VALUE_WAITINGFORRECHECKINOPRATOR = 'WaitingForRecheckInOprator';
    const VALUE_OPRATORFAULT = 'OpratorFault';
    const VALUE_NOTDELIVEREDBLOCKED = 'NotDeliveredBlocked';
    const VALUE_SENDEDBUTSTATUSNOTUPDATED = 'SendedButStatusNotUpdated';
    const VALUE_NOTDELIVEREDDUPLICATE = 'NotDeliveredDuplicate';
    const VALUE_NOTDELIVEREDBLOCKPANEL = 'NotDeliveredBlockPanel';
}
Request Example:
// init Authentication
  authenticationModel:= NiksmsWebService.AuthenticationModel.Create;
  authenticationModel.Username := EditUsername.Text;
  authenticationModel.Password := EditPassword.Text;
  result := (HTTPRIO1 as INikSmsWebservice).GetSmsDelivery(authenticationModel, ids);
Response Sample:
SmsStatus = (
      NotFound, 
      DoNotSend, 
      InQueue, 
      Sent, 
      InsufficientCredit, 
      Block, 
      NotDeliverdSmsAdvertisingBlock, 
      NotDeliverdBlackList, 
      NotDeliverdDelay, 
      NotDeliverdCanceled, 
      NotDeliverdNoViber, 
      NotDeliverdFiltering, 
      WaitingForRecheckInOprator, 
      OpratorFault, 
      NotDeliveredBlocked, 
      SendedButStatusNotUpdated, 
      NotDeliveredDuplicate, 
      NotDeliveredBlockPanel
  );
Request Sample:
            long[] nikIds = new long[1];
            if (!string.IsNullOrEmpty(txtNikIds.Text))
            {
                string[] nikIdSplit = txtNikIds.Text.Split(',');
                nikIds = new long[nikIdSplit.Count()];
                for (int i = 0; i < nikIdSplit.Count();i++)
                {
                    nikIds[i] = Convert.ToInt64(nikIdSplit[i]);
                }
            }
            com.niksms.NiksmsWebservice webservice = new com.niksms.NiksmsWebservice();
            com.niksms.SmsStatus[] result = webservice.GetSmsDelivery(new com.niksms.AuthenticationModel()
            {
                Username = txtUserName.Text,
                Password = txtPassword.Text
            },nikIds);
Reponse Sample:
    public enum SmsStatus : byte
    {
        NotFound = 0,
        DoNotSend = 1,
        InQueue = 2,
        Sent = 3,
        InsufficientCredit = 4,
        Block = 6,
        NotDeliverdSmsAdvertisingBlock = 9,
        NotDeliverdBlackList = 10,
        NotDeliverdDelay = 11,
        NotDeliverdCanceled = 8,
        NotDeliverdNoViber = 13,
        NotDeliverdFiltering = 14,
        WaitingForRecheckInOprator=15,
        OpratorFault=16,
        NotDeliveredBlocked = 17,
        SendedButStatusNotUpdated = 18,
        NotDeliveredDuplicate = 19,
        NotDeliveredBlockPanel = 20,
        NotDeliveredUnknownNumber = 21,
        WaitingForDeliveryBeforeSend = 22,
        NotDeliveredUnAccessible = 23,
        NotDeliveredNotAnswered = 24,
        NotDeliveredLineIsBusy = 25,
    }
Request Sample:
    var soap = require('soap');
    var parseString = require('xml2js').parseString;
    module.exports.sendTestMessage = function () {
    	var username = "Your UserName";
    	var password = "Your Password";
		    //Get Sms Delivery With ClientId
		    var smsDeliveryWithClientIdModel={"security":{
    			"Username":username,
			    "Password":password
			    },
		    "yourId": {"long":"1"}
		    };
    };
    module.exports.sendTestMessage();
Response Sample:
    	client.GetSmsDeliveryWithClientId(smsDeliveryWithClientIdModel, function (err, result,body) {
    	    console.log("Sms Delivery With Client Id Result : " + (result.GetSmsDeliveryWithClientIdResult!=null ? result.GetSmsDeliveryWithClientIdResult.GetSmsDeliveryWithClientIdModel.SmsStatus : "empty"));
        });
متدهای عملیات
متد GetCredit


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

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

: مشخصه امنیتی برای احراز هویت کاربر.

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

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

نمونه کد ارسالی و برگشتی :
Request Example:
var niksms = new NiksmsWebserviceClient();
MessageBox.Show(niksms.GetCredit(new AuthenticationModel()
{
    Username = "Username",
    Password = "Password",
}).ToString());
Response Example:
200000
Request Sample:
if($niksmsWebserviceServiceGet->GetCredit(new NiksmsWebserviceStructGetCredit($authenticateModel)))
{
    $result=$niksmsWebserviceServiceGet->getResult();
    echo "
"; echo "Your Credit Is : " + $result->GetCreditResult; } else { echo "
"; print_r($niksmsWebserviceServiceGet->getLastError()); echo "
"; echo 'fail'; }
Response Sample:
$result = 0;
Request Sample:
authenticationModel:= NiksmsWebService.AuthenticationModel.Create;
  authenticationModel.Username := EditUsername.Text;
  authenticationModel.Password := EditPassword.Text;
  result := (HTTPRIO1 as INikSmsWebservice).GetCredit(authenticationModel);
Response Sample:
var
result : integer;
Request Sample:
com.niksms.NiksmsWebservice webservice = new com.niksms.NiksmsWebservice();
            int result = webservice.GetCredit(new com.niksms.AuthenticationModel()
            {
                Username = txtUserName.Text,
                Password = txtPassword.Text
            });
Response Sample:
int result = 0;
Request Sample:
    var soap = require('soap');
    var parseString = require('xml2js').parseString;
    module.exports.sendTestMessage = function () {
    	var username = "Your UserName";
    	var password = "Your Password";
    	var authenticate={"security":{"Username":username, "Password":password}};
        var url = "http://niksms.com:1370/NiksmsWebservice.svc?wsdl";
        soap.createClient(url, function (err, client) {	
    		
        });
    };
    module.exports.sendTestMessage();
Response Sample:
     //GetCredit
       client.GetCredit(authenticate, function (err, result,body) {
    		console.log("Credit : " + result.GetCreditResult);
       });
متد GetDiscountCredit


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

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

: مشخصه امنیتی برای احراز هویت کاربر.

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

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

نمونه کد ارسالی و برگشتی :
Request Example:
var niksms = new NiksmsWebserviceClient();
MessageBox.Show(niksms.GetDiscountCredit(new AuthenticationModel()
{
    Username = "Username",
    Password = "Password",
}).ToString());
Response Example:
100000
Request Sample:
if($niksmsWebserviceServiceGet->GetDiscountCredit(new NiksmsWebserviceStructGetDiscountCredit($authenticateModel)))
    {
        $result=$niksmsWebserviceServiceGet->getResult();
        echo "
"; echo "Your DiscountCredit Is : " + $result->GetDiscountCreditResult; } else print_r($niksmsWebserviceServiceGet->getLastError());
Response Sample:
$result = 0;
Request Sample:
authenticationModel:= NiksmsWebService.AuthenticationModel.Create;
  authenticationModel.Username := EditUsername.Text;
  authenticationModel.Password := EditPassword.Text;
  result := (HTTPRIO1 as INikSmsWebservice).GetDiscountCredit(authenticationModel);
Response Sample:
var
redult : Integer;
Request Sample:
     com.niksms.NiksmsWebservice webservice = new com.niksms.NiksmsWebservice();
            int result = webservice.GetDiscountCredit(new com.niksms.AuthenticationModel()
            {
                Username = txtUserName.Text,
                Password = txtPassword.Text
            });
Response Sample:
int result = 0;
Request Sample:
    var soap = require('soap');
    var parseString = require('xml2js').parseString;
    module.exports.sendTestMessage = function () {
    	var username = "Your UserName";
    	var password = "Your Password";
    	var authenticate={"security":{"Username":username, "Password":password}};
        var url = "http://niksms.com:1370/NiksmsWebservice.svc?wsdl";
        soap.createClient(url, function (err, client) {	
        });
    };
    module.exports.sendTestMessage();
Response Sample:
    	//GetDiscountCredit

        client.GetDiscountCredit(authenticate, function (err, result,body) {
    		console.log("Discount Credit : " + result.GetDiscountCreditResult);
        });
متد GetPanelExpireDate


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

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

: مشخصه امنیتی برای احراز هویت کاربر.

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

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

نمونه کد ارسالی و برگشتی :
Request Example:
var niksms = new NiksmsWebserviceClient();
MessageBox.Show(niksms.GetPanelExpireDate(new AuthenticationModel()
{
    Username = "Username",
    Password = "Password",
}).ToString());
Response Example:
11/27/2015 10:40:00 AM
Request Example:
            if($niksmsWebserviceServiceGet->GetPanelExpireDate(new NiksmsWebserviceStructGetPanelExpireDate($authenticateModel)))
            {
                $result=$niksmsWebserviceServiceGet->getResult();
                echo "
"; echo "Your PanelExpireDate Is : " + $result->GetPanelExpireDateResult; } else print_r($niksmsWebserviceServiceGet->getLastError());
Response Example:
    $datetime = new DateTime()
Request Example:
    authenticationModel:= NiksmsWebService.AuthenticationModel.Create;
    authenticationModel.Username := EditUsername.Text;
    authenticationModel.Password := EditPassword.Text;
    result := (HTTPRIO1 as INikSmsWebservice).GetPanelExpireDate(authenticationModel);
Response Example:
    result: TXSDateTime;
Response Example:
      com.niksms.NiksmsWebservice webservice = new com.niksms.NiksmsWebservice();
            DateTime? result = webservice.GetPanelExpireDate(new com.niksms.AuthenticationModel()
            {
                Username = txtUserName.Text,
                Password = txtPassword.Text
            });
Response Example:
DateTime? result;
Request Example:
    var soap = require('soap');
    var parseString = require('xml2js').parseString;
    module.exports.sendTestMessage = function () {
    	var username = "Your UserName";
    	var password = "Your Password";
    	var authenticate={"security":{"Username":username, "Password":password}};
        var url = "http://niksms.com:1370/NiksmsWebservice.svc?wsdl";
        soap.createClient(url, function (err, client) {	
		
        });
    };
    module.exports.sendTestMessage();
Response Example:
     //Get Panel Expire

	client.GetPanelExpireDate(authenticate, function (err, result,body) {
    	console.log("Expire Date : " + result.GetPanelExpireDateResult);
    });
متد ResetReceiveSmsVisitedStatus


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

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

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

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

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

نمونه کد ارسالی و برگشتی :
Request Example:
    var niksms = new NiksmsWebservice.NiksmsWebservice();
    var result=niksms.ResetReceiveSmsVisitedStatus(AuthenticationModel,null,null);
    Console.WriteLine(result);
Response Example:
"True"
Request Example:
   $fromdatetime = new DateTime('2016-01-01 00:00:00');
    $datetime = new DateTime();
    $fromDate=$fromdatetime->format('c');
    $toDate=$datetime->format('c');
        if($niksmsWebserviceServiceReset->ResetReceiveSmsVisitedStatus(new NiksmsWebserviceStructResetReceiveSmsVisitedStatus($fromDate,$toDate,$authenticateModel)))
        {
            $result=$niksmsWebserviceServiceReset->getResult();
            echo "
"; echo "Your Reset Recieve Visited Result Is : " + $result->ResetReceiveSmsVisitedStatusResult; } else print_r($niksmsWebserviceServiceReset->getLastError());
Response Example:
"True"
Request Example:
   authenticationModel:= NiksmsWebService.AuthenticationModel.Create;
    authenticationModel.Username := EditUsername.Text;
    authenticationModel.Password := EditPassword.Text;
    result := (HTTPRIO1 as INikSmsWebservice).ResetReceiveSmsVisitedStatus(authenticationModel,nil,nil);
Response Example:
"True"
Request Example:
   DateTime? dateFrom = null;
                DateTime? dateTo = null;
                if (!string.IsNullOrEmpty(DateFrom.Text))
                {
                    dateFrom = Convert.ToDateTime(DateFrom.Text);
                }
                if (!string.IsNullOrEmpty(DateTo.Text))
                {
                    dateFrom = Convert.ToDateTime(DateTo.Text);
                }
                com.niksms.NiksmsWebservice webservice = new com.niksms.NiksmsWebservice();
                bool result = webservice.ResetReceiveSmsVisitedStatus(new com.niksms.AuthenticationModel()
                {
                    Username = txtUserName.Text,
                    Password = txtPassword.Text
                }, dateFrom, dateTo);
Response Example:
"True"
Request Example:
    var soap = require('soap');
    var parseString = require('xml2js').parseString;
    module.exports.sendTestMessage = function () {
	    var username = "Your UserName";
	    var password = "Your Password";
    		//Reset Receive Sms Visited
		    var resetReceiveModel={"security":{
    			"Username":username,
			    "Password":password
			    },
		    "startDate": "2016-06-22T15:01:00.000Z",
		    "endDate": "2016-08-15T15:01:00.000Z"
		    };
    };
    module.exports.sendTestMessage();                                                                    
Response Example:
     client.ResetReceiveSmsVisitedStatus(resetReceiveModel, function (err, result,body) {
    		console.log("Reset Receive Sms Visited : " + result.ResetReceiveSmsVisitedStatusResult);
     });
متد GetSenderNumbers


لیست خطوط اختصاصی فعال کاربر را بازمی گرداند.

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

: مشخصه امنیتی برای احراز هویت کاربر.

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

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

نمونه کد ارسالی و برگشتی :
Request Example:
var niksms = new NiksmsWebserviceClient();
MessageBox.Show(niksms.GetSenderNumbers(new AuthenticationModel()
{
    Username = "Username",
    Password = "Password",
}).ToString());
Response Example:
{ "9830006179xxxxxxxx","9830006179xxxx" }
Request Example:
   if($niksmsWebserviceServiceGet->GetSenderNumbers(new NiksmsWebserviceStructGetSenderNumbers($authenticateModel)))
        {
            $result=$niksmsWebserviceServiceGet->getResult();
            echo "
"; echo "Your SenderNumbers Are : " + print_r($result->GetSenderNumbersResult->string); } else print_r($niksmsWebserviceServiceGet->getLastError());
Response Example:
{ "9830006179xxxxxxxx","9830006179xxxx" }
Request Example:
   authenticationModel:= NiksmsWebService.AuthenticationModel.Create;
        authenticationModel.Username := EditUsername.Text;
        authenticationModel.Password := EditPassword.Text;
        
        result := (HTTPRIO1 as INikSmsWebservice).GetSenderNumbers(authenticationModel);
Response Example:
{ "9830006179xxxxxxxx","9830006179xxxx" }
Request Example:
   com.niksms.NiksmsWebservice webservice = new com.niksms.NiksmsWebservice();
           
                string[] result = webservice.GetSenderNumbers(new com.niksms.AuthenticationModel()
                {
                    Username = txtUserName.Text,
                    Password = txtPassword.Text
                });
Response Example:
{ "9830006179xxxxxxxx","9830006179xxxx" }
Request Example:
    var soap = require('soap');
    var parseString = require('xml2js').parseString;
    module.exports.sendTestMessage = function () {
    	var username = "Your UserName";
    	var password = "Your Password";
    };
    module.exports.sendTestMessage();
Response Example:
    	//Get Sender Numbers 
		client.GetSenderNumbers(authenticate, function (err, result,body) {
    	    console.log("Sender Numbers : " + result.GetSenderNumbersResult.string[0]);
        });