571 lines
22 KiB
PHP
571 lines
22 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
include_once("pest.php");
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Клиент для взаимодействия с Devino REST API
|
|||
|
|
*
|
|||
|
|
* Клиент может использоваться как набор статичных функций или как класс.
|
|||
|
|
* Статиченые функции имеют суфикс _St. Необходимо сохранять ID сессии.
|
|||
|
|
* При использовании класса, идентификатор сессии хранится внутри класса.
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
class SMSClient {
|
|||
|
|
|
|||
|
|
//////////////////////////////// Статичные методы ////////////////////////////////
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Базовый адрес для отправки запросов
|
|||
|
|
* @const
|
|||
|
|
*/
|
|||
|
|
const m_baseURL = "https://integrationapi.net/rest";
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Запрос ID сессии
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
* @static
|
|||
|
|
*
|
|||
|
|
* @param string $login Имя пользователя
|
|||
|
|
* @param string $password Пароль
|
|||
|
|
*
|
|||
|
|
* @return string Идентификатор сессии
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public static function getSessionID_St( $login, $password ) {
|
|||
|
|
$pest = new Pest(SMSClient::m_baseURL);
|
|||
|
|
$sessionID = "";
|
|||
|
|
try {
|
|||
|
|
$sessionID = str_replace('"', '',
|
|||
|
|
$pest->get('/User/SessionId?login='.$login.'&password='.$password)
|
|||
|
|
);
|
|||
|
|
} catch( Exception $e ) {
|
|||
|
|
$errorInfo = json_decode($e->getMessage());
|
|||
|
|
unset($pest);
|
|||
|
|
throw( new SMSError_Exception( $errorInfo->Desc, $errorInfo->Code));
|
|||
|
|
}
|
|||
|
|
unset($pest);
|
|||
|
|
return $sessionID;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Запроса баланса
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
* @static
|
|||
|
|
*
|
|||
|
|
* @param string $sessionID ID сессии. @see getSessionID_St
|
|||
|
|
*
|
|||
|
|
* @return double Баланс
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public static function getBalance_St( $sessionID ) {
|
|||
|
|
$pest = new Pest(SMSClient::m_baseURL);
|
|||
|
|
$balance = 0;
|
|||
|
|
try {
|
|||
|
|
$balance = str_replace('"', '',
|
|||
|
|
$pest->get('/User/Balance?sessionId='.$sessionID)
|
|||
|
|
);
|
|||
|
|
} catch( Exception $e ) {
|
|||
|
|
$errorInfo = json_decode($e->getMessage());
|
|||
|
|
unset($pest);
|
|||
|
|
throw( new SMSError_Exception( $errorInfo->Desc, $errorInfo->Code));
|
|||
|
|
}
|
|||
|
|
unset($pest);
|
|||
|
|
return $balance;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отправка SMS-сообщения
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
* @static
|
|||
|
|
*
|
|||
|
|
* @param string $sessionID ID сессии. @see getSessionID_St
|
|||
|
|
* @param string $sourceAddres отправитель. До 11 латинских символов или до 15 цифровых.
|
|||
|
|
* @param string $destinationAddress адрес назначения. (Код страны+код сети+номер телефона, Пример: 79031234567
|
|||
|
|
* @param string $data Текст сообщения
|
|||
|
|
* @param mixed $sendDate дата отправки сообщения. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp. Необязательный параметр.
|
|||
|
|
* @param integer $validity Время жизни сообщения в минутах. Необязательный параметр
|
|||
|
|
*
|
|||
|
|
* @return array массив идентификаторов сообщений
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public static function send_St( $sessionID, $sourceAddres, $destinationAddress, $data, $sendDate=null, $validity=0 ) {
|
|||
|
|
$pest = new Pest(SMSClient::m_baseURL);
|
|||
|
|
$result = array();
|
|||
|
|
try {
|
|||
|
|
$result = json_decode($pest->post('/Sms/Send',
|
|||
|
|
SMSClient::createRequestParameters( $sessionID, $sourceAddres, $destinationAddress, $data, $sendDate, $validity )
|
|||
|
|
),true);
|
|||
|
|
} catch( Exception $e ) {
|
|||
|
|
$errorInfo = json_decode($e->getMessage());
|
|||
|
|
unset($pest);
|
|||
|
|
throw( new SMSError_Exception( $errorInfo->Desc, $errorInfo->Code));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
unset($pest);
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отправка SMS-сообщения с учетом часового пояса получателя.
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
* @static
|
|||
|
|
*
|
|||
|
|
* @param string $sessionID ID сессии. @see getSessionID_St
|
|||
|
|
* @param string $sourceAddres отправитель. До 11 латинских символов или до 15 цифровых.
|
|||
|
|
* @param string $destinationAddress адрес назначения. (Код страны+код сети+номер телефона, Пример: 79031234567
|
|||
|
|
* @param string $data Текст сообщения
|
|||
|
|
* @param mixed $sendDate дата отправки сообщения по местному времени получателя. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
* @param integer $validity Время жизни сообщения в минутах. Необязательный параметр
|
|||
|
|
*
|
|||
|
|
* @return array массив идентификаторов сообщений
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public static function sendByTimeZone_St( $sessionID,$sourceAddres, $destinationAddress, $data, $sendDate, $validity=0 ) {
|
|||
|
|
$pest = new Pest(SMSClient::m_baseURL);
|
|||
|
|
$result = array();
|
|||
|
|
try {
|
|||
|
|
$result = json_decode($pest->post('/Sms/SendByTimeZone',
|
|||
|
|
SMSClient::createRequestParameters( $sessionID, $sourceAddres, $destinationAddress, $data, $sendDate, $validity )
|
|||
|
|
),true);
|
|||
|
|
} catch( Exception $e ) {
|
|||
|
|
$errorInfo = json_decode($e->getMessage());
|
|||
|
|
unset($pest);
|
|||
|
|
throw( new SMSError_Exception( $errorInfo->Desc, $errorInfo->Code));
|
|||
|
|
}
|
|||
|
|
unset($pest);
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отправка SMS-сообщения нескольким адрессатам
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
* @static
|
|||
|
|
*
|
|||
|
|
* @param string $sessionID ID сессии. @see getSessionID_St
|
|||
|
|
* @param string $sourceAddres отправитель. До 11 латинских символов или до 15 цифровых.
|
|||
|
|
* @param array $destinationAddresses массив строк адресов назначения. (Код страны+код сети+номер телефона, Пример: 79031234567
|
|||
|
|
* @param string $data Текст сообщения
|
|||
|
|
* @param mixed $sendDate дата отправки сообщения. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp. Необязательный параметр.
|
|||
|
|
* @param integer $validity Время жизни сообщения в минутах. Необязательный параметр
|
|||
|
|
*
|
|||
|
|
* @return array массив идентификаторов сообщений
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public static function sendBulk_St( $sessionID,$sourceAddres, $destinationAddresses, $data, $sendDate=null, $validity=0 ) {
|
|||
|
|
|
|||
|
|
if (gettype($destinationAddresses) == "string") {
|
|||
|
|
$destinationAddresses = array($destinationAddresses);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$pest = new Pest(SMSClient::m_baseURL);
|
|||
|
|
$result = array();
|
|||
|
|
try {
|
|||
|
|
$result = json_decode($pest->post('/Sms/SendBulk',
|
|||
|
|
SMSClient::createRequestParameters( $sessionID, $sourceAddres, $destinationAddresses, $data, $sendDate, $validity )
|
|||
|
|
),true);
|
|||
|
|
} catch( Exception $e ) {
|
|||
|
|
$errorInfo = json_decode($e->getMessage());
|
|||
|
|
unset($pest);
|
|||
|
|
throw( new SMSError_Exception( $errorInfo->Desc, $errorInfo->Code));
|
|||
|
|
}
|
|||
|
|
unset($pest);
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Запрос статуса SMS-сообщения
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
* @static
|
|||
|
|
*
|
|||
|
|
* @param string $sessionID ID сессии. @see getSessionID_St
|
|||
|
|
* @param string $messageID ID сообщения.
|
|||
|
|
*
|
|||
|
|
* @return array массив полей:
|
|||
|
|
* State - статус сообщения. @see SMSClientSMSStatus
|
|||
|
|
* TimeStampUtc - дата и время получения ответа
|
|||
|
|
* StateDescription - описание статуса
|
|||
|
|
* CreationDateUtc - дата создания
|
|||
|
|
* SubmittedDateUtc - дата отправки
|
|||
|
|
* ReportedDateUtc - дата доставки
|
|||
|
|
* Price - цена за сообщение
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public static function getSMSState_St( $sessionID, $messageID ) {
|
|||
|
|
$pest = new Pest(SMSClient::m_baseURL);
|
|||
|
|
$result = array(
|
|||
|
|
'State' => SMSClientSMSStatus::SMS_STATUS_Unknown,
|
|||
|
|
'TimeStampUtc' => time(),
|
|||
|
|
'StateDescription' => '',
|
|||
|
|
'CreationDateUtc' => null,
|
|||
|
|
'SubmittedDateUtc' => null,
|
|||
|
|
'ReportedDateUtc' => null,
|
|||
|
|
'Price' => null);
|
|||
|
|
try {
|
|||
|
|
$result = json_decode($pest->get('/Sms/State?sessionId='.$sessionID.'&messageId='.$messageID),true);
|
|||
|
|
$result['TimeStampUtc'] = substr(substr($result['TimeStampUtc'],6),0,-2) ;
|
|||
|
|
} catch( Exception $e ) {
|
|||
|
|
$errorInfo = json_decode($e->getMessage());
|
|||
|
|
unset($pest);
|
|||
|
|
throw( new SMSError_Exception( $errorInfo->Desc, $errorInfo->Code));
|
|||
|
|
}
|
|||
|
|
unset($pest);
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Запрос входящих SMS-сообщений
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
* @static
|
|||
|
|
*
|
|||
|
|
* @param string $sessionID ID сессии. @see getSessionID_St
|
|||
|
|
* @param mixed $minDateUTC начало периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
* @param mixed $maxDateUTC конец периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
*
|
|||
|
|
* @return array массив объектов с полями:
|
|||
|
|
* string Data - текст сообщения
|
|||
|
|
* string SourceAddress - адрес отправителя
|
|||
|
|
* string DestinationAddress - адрес приема входящих сообщений
|
|||
|
|
* string ID - идентификатор сообщения
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public static function getInbox_St( $sessionID, $minDateUTC, $maxDateUTC ) {
|
|||
|
|
$requestString = '/Sms/In?sessionId='.$sessionID;
|
|||
|
|
|
|||
|
|
if (gettype($minDateUTC) == "string") {
|
|||
|
|
$requestString .= '&minDateUTC='.$minDateUTC;
|
|||
|
|
} else if (gettype($minDateUTC) == "integer") {
|
|||
|
|
$requestString .= '&minDateUTC='.date("Y-m-d",$minDateUTC).'T'.date("H:i:s",$minDateUTC);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (gettype($maxDateUTC) == "string") {
|
|||
|
|
$requestString .= '&maxDateUTC='.$maxDateUTC;
|
|||
|
|
} else if (gettype($maxDateUTC) == "integer") {
|
|||
|
|
$requestString .= '&maxDateUTC='.date("Y-m-d",$maxDateUTC).'T'.date("H:i:s",$maxDateUTC);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$pest = new Pest(SMSClient::m_baseURL);
|
|||
|
|
|
|||
|
|
$result = array(
|
|||
|
|
'Data' => '',
|
|||
|
|
'SourceAddress' => '',
|
|||
|
|
'DestinationAddress' => '',
|
|||
|
|
'ID' => null);
|
|||
|
|
try {
|
|||
|
|
$result = json_decode($pest->get($requestString),true);
|
|||
|
|
} catch( Exception $e ) {
|
|||
|
|
$errorInfo = json_decode($e->getMessage());
|
|||
|
|
unset($pest);
|
|||
|
|
throw( new SMSError_Exception( $errorInfo->Desc, $errorInfo->Code));
|
|||
|
|
}
|
|||
|
|
unset($pest);
|
|||
|
|
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Запрос статистики по SMS-рассылкам
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
* @static
|
|||
|
|
*
|
|||
|
|
* @param string $sessionID ID сессии. @see getSessionID_St
|
|||
|
|
* @param mixed $startDate начало периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
* @param mixed $stopDate конец периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
*
|
|||
|
|
* @return array массив с информацией по статистике
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public static function getStatistics_St( $sessionID, $startDate, $stopDate ) {
|
|||
|
|
$requestString = '/Sms/Statistics?sessionId='.$sessionID;
|
|||
|
|
|
|||
|
|
if (gettype($startDate) == "string") {
|
|||
|
|
$requestString .= '&startDateTime='.$startDate;
|
|||
|
|
} else if (gettype($startDate) == "integer") {
|
|||
|
|
$requestString .= '&startDateTime='.date("Y-m-d",$startDate).'T'.date("H:i:s",$startDate);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (gettype($stopDate) == "string") {
|
|||
|
|
$requestString .= '&endDateTime='.$stopDate;
|
|||
|
|
} else if (gettype($stopDate) == "integer") {
|
|||
|
|
$requestString .= '&endDateTime='.date("Y-m-d",$stopDate).'T'.date("H:i:s",$stopDate);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$pest = new Pest(SMSClient::m_baseURL);
|
|||
|
|
$result = array();
|
|||
|
|
try {
|
|||
|
|
$result = json_decode($pest->get($requestString),true);
|
|||
|
|
} catch( Exception $e ) {
|
|||
|
|
$errorInfo = json_decode($e->getMessage());
|
|||
|
|
unset($pest);
|
|||
|
|
throw( new SMSError_Exception( $errorInfo->Desc, $errorInfo->Code));
|
|||
|
|
}
|
|||
|
|
unset($pest);
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//////////////////////////////// Методы для работы с классом ////////////////////////////////
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Сохраненный идентификатор сессии
|
|||
|
|
*
|
|||
|
|
* @access protected
|
|||
|
|
*/
|
|||
|
|
protected $m_sessionID = "";
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Сохраненный логин
|
|||
|
|
*
|
|||
|
|
* @access protected
|
|||
|
|
*/
|
|||
|
|
protected $m_login = "";
|
|||
|
|
/**
|
|||
|
|
* Сохраненный пароль
|
|||
|
|
*
|
|||
|
|
* @access protected
|
|||
|
|
*/
|
|||
|
|
protected $m_password = "";
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Конструктор. В него передаются логин и пароль.
|
|||
|
|
*
|
|||
|
|
* @param string $login Логин
|
|||
|
|
* @param string $password Пароль
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
function __construct( $login, $password ) {
|
|||
|
|
$this->m_login = $login;
|
|||
|
|
$this->m_password = $password;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Запрос ID сессии.
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
*
|
|||
|
|
* @return string Идентификатор сессии
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public function getSessionID() {
|
|||
|
|
$this->m_sessionID = SMSClient::getSessionID_St( $this->m_login, $this->m_password );
|
|||
|
|
return $this->m_sessionID;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Запроса баланса
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
*
|
|||
|
|
* @return double Баланс
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public function getBalance() {
|
|||
|
|
$balance = SMSClient::getBalance_St( $this->m_sessionID );
|
|||
|
|
return $balance;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отправка SMS-сообщения
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
*
|
|||
|
|
* @param string $sourceAddres отправитель. До 11 латинских символов или до 15 цифровых.
|
|||
|
|
* @param string $destinationAddress адрес назначения. (Код страны+код сети+номер телефона, Пример: 79031234567
|
|||
|
|
* @param string $data Текст сообщения
|
|||
|
|
* @param mixed $sendDate дата отправки сообщения. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp. Необязательный параметр.
|
|||
|
|
* @param integer $validity Время жизни сообщения в минутах. Необязательный параметр
|
|||
|
|
*
|
|||
|
|
* @return
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public function send( $sourceAddres, $destinationAddress, $data, $sendDate=null, $validity=0 ) {
|
|||
|
|
$result = SMSClient::send_St( $this->m_sessionID, $sourceAddres, $destinationAddress, $data, $sendDate, $validity );
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отправка SMS-сообщения с учетом часового пояса получателя.
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
*
|
|||
|
|
* @param string $sourceAddres отправитель. До 11 латинских символов или до 15 цифровых.
|
|||
|
|
* @param string $destinationAddress адрес назначения. (Код страны+код сети+номер телефона, Пример: 79031234567
|
|||
|
|
* @param string $data Текст сообщения
|
|||
|
|
* @param mixed $sendDate дата отправки сообщения по местному времени получателя. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
* @param integer $validity Время жизни сообщения в минутах. Необязательный параметр
|
|||
|
|
*
|
|||
|
|
* @return
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public function sendByTimeZone( $sourceAddres, $destinationAddress, $data, $sendDate, $validity=0 ) {
|
|||
|
|
$result = SMSClient::sendByTimeZone_St( $this->m_sessionID, $sourceAddres, $destinationAddress, $data, $sendDate, $validity );
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отправка SMS-сообщения с учетом часового пояса получателя.
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
*
|
|||
|
|
* @param string $sourceAddres отправитель. До 11 латинских символов или до 15 цифровых.
|
|||
|
|
* @param array $destinationAddresses массив строк адресов назначения. (Код страны+код сети+номер телефона, Пример: 79031234567
|
|||
|
|
* @param string $data Текст сообщения
|
|||
|
|
* @param mixed $sendDate дата отправки сообщения. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp. Необязательный параметр.
|
|||
|
|
* @param integer $validity Время жизни сообщения в минутах. Необязательный параметр
|
|||
|
|
*
|
|||
|
|
* @return
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public function sendBulk( $sourceAddres, $destinationAddresses, $data, $sendDate=null, $validity=0 ) {
|
|||
|
|
$result = SMSClient::sendBulk_St( $this->m_sessionID, $sourceAddres, $destinationAddresses, $data, $sendDate, $validity );
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Запрос статуса SMS-сообщения
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
*
|
|||
|
|
* @param string $messageID ID сообщения.
|
|||
|
|
*
|
|||
|
|
* @return array массив полей:
|
|||
|
|
* State - статус сообщения. @see SMSClientSMSStatus
|
|||
|
|
* SMSClientSMSStatus - дата и время получения ответа
|
|||
|
|
* StateDescription - описание статуса
|
|||
|
|
* CreationDateUtc - дата создания
|
|||
|
|
* SubmittedDateUtc - дата отправки
|
|||
|
|
* ReportedDateUtc - дата доставки
|
|||
|
|
* Price - цена за сообщение
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public function getSMSState( $messageID ) {
|
|||
|
|
$result = SMSClient::getSMSState_St( $this->m_sessionID, $messageID );
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Запрос входящих SMS-сообщений
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
*
|
|||
|
|
* @param mixed $minDateUTC начало периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
* @param mixed $maxDateUTC конец периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
*
|
|||
|
|
* @return array массив объектов с полями:
|
|||
|
|
* string Data - текст сообщения
|
|||
|
|
* string SourceAddress - адрес отправителя
|
|||
|
|
* string DestinationAddress - адрес приема входящих сообщений
|
|||
|
|
* string ID - идентификатор сообщения
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public function getInbox( $minDateUTC, $maxDateUTC ) {
|
|||
|
|
$result = SMSClient::getInbox_St( $this->m_sessionID, $minDateUTC, $maxDateUTC );
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Запрос статистики по SMS-рассылкам
|
|||
|
|
*
|
|||
|
|
* @access public
|
|||
|
|
*
|
|||
|
|
* @param mixed $startDate начало периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
* @param mixed $stopDate конец периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
*
|
|||
|
|
* @return array массив с информацией по статистике
|
|||
|
|
* @throws SMSError_Exception
|
|||
|
|
*/
|
|||
|
|
public function getStatistics( $startDate, $stopDate ) {
|
|||
|
|
$result = SMSClient::getStatistics_St( $this->m_sessionID, $startDate, $stopDate );
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//////////////////////////////// Служебные методы ////////////////////////////////
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Функция готовит строку запроса для методов отправки сообщения
|
|||
|
|
*
|
|||
|
|
* @access protected
|
|||
|
|
* @static
|
|||
|
|
*
|
|||
|
|
* @param string $sessionID ID сессии. @see getSessionID_St
|
|||
|
|
* @param string $sourceAddres отправитель. До 11 латинских символов или до 15 цифровых.
|
|||
|
|
* @param mixed $destinationAddress адрес или массив адресов назначения. (Код страны+код сети+номер телефона, Пример: 79031234567
|
|||
|
|
* @param string $data Текст сообщения
|
|||
|
|
* @param mixed $sendDate дата отправки сообщения. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
|
|||
|
|
* @param integer $validity Время жизни сообщения в минутах
|
|||
|
|
*
|
|||
|
|
* @return array Массив с параметрами
|
|||
|
|
*/
|
|||
|
|
protected static function createRequestParameters( $sessionID, $sourceAddres, $destinationAddress, $data, $sendDate, $validity ) {
|
|||
|
|
$parameters = array(
|
|||
|
|
'sessionId' => $sessionID,
|
|||
|
|
'sourceAddress' => $sourceAddres,
|
|||
|
|
'data' => $data
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
if (gettype($destinationAddress) == "string") {
|
|||
|
|
|
|||
|
|
$parameters['destinationAddress'] = $destinationAddress;
|
|||
|
|
|
|||
|
|
} else if (gettype($destinationAddress) == "array") {
|
|||
|
|
$parameters['destinationAddresses'] = $destinationAddress;//$destinationAddressesString;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (gettype($sendDate) == "string") {
|
|||
|
|
$parameters['sendDate'] = $sendDate;
|
|||
|
|
} else if (gettype($sendDate) == "integer") {
|
|||
|
|
$parameters['sendDate'] = date("Y-m-d",$sendDate).'T'.date("H:i:s",$sendDate);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ((gettype($validity) == "integer") && ($validity != 0)) {
|
|||
|
|
$parameters['validity'] = $validity;
|
|||
|
|
}
|
|||
|
|
return $parameters;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Список констант с кодами ошибок
|
|||
|
|
*/
|
|||
|
|
class SMSClientError {
|
|||
|
|
const ERROR_OK = 0;
|
|||
|
|
const ERROR_ArgumentCanNotBeNullOrEmpty = 1;
|
|||
|
|
const ERROR_InvalidAgrument = 2;
|
|||
|
|
const ERROR_InvalidSessionID = 3;
|
|||
|
|
const ERROR_UnauthorizedAccess = 4;
|
|||
|
|
const ERROR_NotEnoughCredits = 5;
|
|||
|
|
const ERROR_InvalidOperation = 6;
|
|||
|
|
const ERROR_Forbidden = 7;
|
|||
|
|
const ERROR_GatewayError = 8;
|
|||
|
|
const ERROR_InternalServerError = 9;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Список констант с кодами статусов SMS-сообщений
|
|||
|
|
*/
|
|||
|
|
class SMSClientSMSStatus {
|
|||
|
|
const SMS_STATUS_Send = -1;
|
|||
|
|
const SMS_STATUS_InQueue = -2;
|
|||
|
|
const SMS_STATUS_Deleted = 47;
|
|||
|
|
const SMS_STATUS_Stopped = -98;
|
|||
|
|
const SMS_STATUS_Delivered = 0;
|
|||
|
|
const SMS_STATUS_InvalidSourceAddress = 10;
|
|||
|
|
const SMS_STATUS_InvalidDestinationAddress = 11;
|
|||
|
|
const SMS_STATUS_UnallowedDestinationAddress = 41;
|
|||
|
|
const SMS_STATUS_RejectedBySMSCenter = 42;
|
|||
|
|
const SMS_STATUS_TimeOut = 46;
|
|||
|
|
const SMS_STATUS_Rejected = 69;
|
|||
|
|
const SMS_STATUS_Unknown = 99;
|
|||
|
|
const SMS_STATUS_UnknownByTimeout = 255;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Генерируемое исключение при ошибке отправки SMS
|
|||
|
|
*/
|
|||
|
|
class SMSError_Exception extends Exception {}
|