SMS Client
, (*1)
PHP-класс для работы с API сервисов СМС уведомлений, (*2)
В настоящий момент поддержка DevinoTelecom http://www.devinotele.com/, (*3)
Установка зависимостей через Composer
Для работы проекта требуется подтянуть необходмые зависимости, (*4)
Для этого запустите, (*5)
php composer.phar install
Для установки в свой проект, (*6)
php composer.phar require sintsov/smsclient "dev-master"
Требования
Классы и методы, (*7)
Класс SmsClient\DevinoSMS\Api
Реализует основные методы Devino REST API, (*8)
### send
Описание: Отправка СМС сообщения, (*9)
Параметры
$sourceAddress: string, отправитель. До 11 латинских символов или до 15 цифровых.
$destinationAddress: string|array, адрес или массив адресов назначения. (Код страны+код сети+номер телефона, Пример: 79031234567)
$data: string, текст сообщения
$sendDate: mixed. дата отправки сообщения. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp (необязательный параметр)
$validity: integer, время жизни сообщения в минутах (необязательный параметр), (*10)
Возвращаемое значение
array массив ID сообщений, (*11)
Пример
$devinoSMS->send('test', '7905000000', 'Тестовое сообщение!'); // отправка SMS
$devinoSMS->send('test', '7905000000', 'Тестовое сообщение!', '2015-07-09T11:55:00'); // отправка SMS в указанное время
$devinoSMS->send('test', '7905000000', 'Тестовое сообщение!', '2015-07-09T11:55:00', '10'); // отправка SMS в указанное время и указанием времени жизни сообщения (10 минут)
### sendByTimeZone
Описание: Отправка СМС сообщения с учетом часового пояса получателя, (*12)
Параметры
$sourceAddress: string, отправитель. До 11 латинских символов или до 15 цифровых.
$destinationAddress: string, адрес назначения. (Код страны+код сети+номер телефона, Пример: 79031234567
$data: string, текст сообщения
$sendDate: mixed. дата отправки сообщения. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
$validity: integer, время жизни сообщения в минутах (необязательный параметр), (*13)
Возвращаемое значение
array массив ID сообщений, (*14)
Пример
$devinoSMS->sendByTimeZone('test', '7905000000', 'Тестовое сообщение!', '1436608063'); // отправка SMS в указанное время с учетом часового пояса получателя указанного в виде timestamp
$devinoSMS->sendByTimeZone('test', '7905000000', 'Тестовое сообщение!', '2015-07-09T11:55:00'); // отправка SMS в указанное время с учетом часового пояса получателя
$devinoSMS->sendByTimeZone('test', '7905000000', 'Тестовое сообщение!', '2015-07-09T11:55:00', '10'); // отправка SMS в указанное время с учетом часового пояса получателя и указанием времени жизни сообщения (10 минут)
### getSMSStatus
Описание: Запрос статуса SMS-сообщения, (*15)
Параметры
$messageID: string, ID сообщения (который возвращает методы send и sendByTimeZone), (*16)
Возвращаемое значение
object объект, вида:
* State: статус сообщения
* TimeStampUtc: дата и время получения ответа
* StateDescription: описание статуса
* CreationDateUtc: дата создания
* SubmittedDateUtc: дата отправки
* ReportedDateUtc: дата доставки
* Price: цена за сообщение, (*17)
Пример
$devinoSMS->getSMSStatus($id); // Запрос статуса SMS-сообщения
### getInbox
Описание: Запрос входящих SMS-сообщений за указанный период, (*18)
Параметры
$minDateUTC: mixed, начало периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
$maxDateUTC: mixed, конец периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp, (*19)
Возвращаемое значение
array массив объектов с полями:
* Data: текст сообщения
* SourceAddress: адрес отправителя
* DestinationAddress: адрес приема входящих сообщений
* ID: идентификатор сообщения, (*20)
Пример
$devinoSMS->getInbox('2015-07-09T09:00:00', '2015-07-09T19:00:00'); // Запрос входящих SMS-сообщений за указанный период
$devinoSMS->getInbox('1436608063', '1436861906'); // Запрос входящих SMS-сообщений за указанный период используя timestamp
### getStatistics
Описание: Запрос статистики по SMS-рассылкам за указанный период, (*21)
Параметры
$startDate: mixed, начало периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp
$endDate: mixed, конец периода выборки. Строка вида (YYYY-MM-DDTHH:MM:SS) или Timestamp, (*22)
Возвращаемое значение
array массив с информацией по статистике, (*23)
Пример
$devinoSMS->getStatistics('2015-07-09T09:00:00', '2015-07-09T19:00:00'); // Запрос статистики по SMS-рассылкам за указанный период
$devinoSMS->getStatistics('1436608063', '1436861906'); // Запрос статистики по SMS-рассылкам за указанный период используя timestamp
### getSessionID
Описание: Получить ID сессии (в рамках API метод вызывается в конструкторе) и отдельно вызывать его не требуется, (*24)
Возвращаемое значение
string ID сессии, (*25)
Пример
$devinoSMS->getSessionID(); // получить ID сесси
### getBalance
Описание: Запроса баланса, (*26)
Возвращаемое значение
double Баланс, (*27)
Пример
$devinoSMS->getBalance(); // получить баланс
### getClient
Описание: Получить клиента, (*28)
Возвращаемое значение
object SmsClient\Client\ClientInterface, (*29)
Пример
$client = $devinoSMS->getClient(); // получить клиента
$client->setTimeout(2); // установить таймаут соединения
Пример использования API
DevinoTelecom
require_once 'vendor/autoload.php';
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(-1);
use SmsClient\DevinoSMS\Api;
$devinoSMS = new Api('login', 'password');
// пример установки таймаута в секундах, по дефолту используется 1 секунда
$devinoSMS->getClinet()->setTimeout(2);
try {
$sessionID = $devinoSMS->getSessionID();
echo "
SessionID: {$sessionID}
";
echo "
Balance: {$devinoSMS->getBalance()} руб
";
$list = $devinoSMS->send('test', '7905000000', 'Тестовое сообщение!');
$id = reset($list);
echo "<h2>Send SMS: {$id}</h2>";
$list = $devinoSMS->sendByTimeZone('test', '7905000000', 'Тестовое сообщение с учетом часового пояса!', '2015-07-09T11:55:00');
$id = reset($list);
echo "<h2>Send SMS By Time Zone: {$id}</h2>";
$list = $devinoSMS->send('test', array('7905000000', '7905000001'), 'Массовое тестовое сообщение!');
$mes = print_r($list, true);
echo "<h2>Send SMS Bulk: {$mes}</h2>";
$result = $devinoSMS->getSMSStatus($id);
$mes = print_r($result, true);
echo "<h2>SMS Status: {$mes}</h2>";
$result = $devinoSMS->getStatistics('2015-07-09T09:00:00', '2015-07-09T19:00:00');
$mes = print_r($result, true);
echo "<h2>Get Message statistics: {$mes}</h2>";
$result = $devinoSMS->getInbox('2015-07-09T09:00:00', '2015-07-09T19:00:00');
$mes = print_r($result, true);
echo "<h2>Get Message Inbox: {$mes}</h2>";
} catch (\SmsClient\DevinoSMS\Exception $e) {
echo $e->getMessage();
}
TODO
- [ ] реализовать DI и нормальный интерфейс
- [ ] вынести настройки в конфиги
- [ ] написать тесты