itpanda-llc/smspilot-messenger-sdk

Library for integration with the SMSPILOT.RU messaging service

dev-master 2021-05-16 05:44 UTC

This package is auto-updated.

Last update: 2024-03-16 11:20:21 UTC


README

Библиотека для интеграции с сервисом рассылки сообщений "SMSPILOT.RU"

Packagist Downloads Packagist License Packagist PHP Version Support

Ссылки

Возможности

  • Отправка SMS (HTTP/API-1, HTTP/API-2)
  • Проверка статусов SMS (HTTP/API-2)
  • Баланс (HTTP/API-1)
  • Информация о пользователе (HTTP/API-1)
  • Входящие SMS (HTTP/API-1)
  • HLR-запросы и PING-сообщения (HTTP/API-1, HTTP/API-2)
  • Голосовые сообщения (HTTP/API-1, HTTP/API-2)
  • 2WAY - SMS на которые можно ответить (HTTP/API-1, HTTP/API-2)
  • Управления именами и шаблонами (HTTP/API-1)

Требования

  • PHP >= 7.2
  • cURL
  • JSON

Установка

composer require itpanda-llc/smspilot-messenger-sdk

Подключение

require_once 'vendor/autoload.php';

Использование

Создание сервиса / Аутентификация

use Panda\SmsPilot\MessengerSdk;

// API-ключ
$pilot = new MessengerSdk\Pilot('apikey');

// или

/*
 * Логин
 * Пароль
 */
$pilot = new MessengerSdk\Pilot('login', 'password');

Установка параметров

// Адрес электронной почты (Отладка HTTP-запросов)
$pilot->setDebug('info@smspilot.ru')

    // Реферер
    ->setR('r');

Отправка SMS (Одиночное сообщение) (HTTP/API-1)

Способ №1

  • Создание запроса
use Panda\SmsPilot\MessengerSdk;

/*
 * Текст сообщения
 * Номер мобильного телефона, или список номеров через запятую
 * Зарегистрированный отправитель
 */
$singleton = new MessengerSdk\Singleton('Все начинается с сообщения!', '79995550011', MessengerSdk\Sender::VIBER);
  • Установка параметров
use Panda\SmsPilot\MessengerSdk;

// Текст сообщения
$singleton->setSend('DEVELOPER')

    // Номер мобильного телефона, или список номеров через запятую
    ->setTo('79995550011')

    // Зарегистрированный отправитель
    ->setFrom(MessengerSdk\Sender::GOLOS)

    // Формат ответа сервера
    ->setFormat(MessengerSdk\Format::JSON)

    // Кодировка ответа и запроса
    ->setCharset(MessengerSdk\Charset::WINDOWS_1251)

    // Язык возвращаемых ошибок
    ->setLang(MessengerSdk\Lang::RU)

    // Время отправки
    ->setSendDatetime('2015-04-07 09:10:00')

    // Время жизни сообщения
    ->setTtl(1440)

    // Список возвращаемых атрибутов SMS через запятую
    ->setFields(MessengerSdk\Fields::ALL)

    // Обычная отправка / Рассчитать стоимость
    ->setCost(MessengerSdk\Cost::YES)

    // Обычная отправка / Без передачи оператору (эмулятор)
    ->setTest(MessengerSdk\Test::YES)

    // URL адрес скрипта для асинхронного приёма статуса
    ->setCallback('https://smspilot.ru')

    // Post или get
    ->setCallbackMethod(MessengerSdk\CallbackMethod::POST);
  • Выполнение запроса
use Panda\SmsPilot\MessengerSdk;

try {
    print_r($pilot->request($singleton));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Способ №2

use Panda\SmsPilot\MessengerSdk;

try {
    /*
     * Текст сообщения
     * Номер мобильного телефона, или список номеров через запятую
     * Зарегистрированный отправитель
     */
    print_r($pilot->sendSingleton('Все начинается с сообщения!','79995550011', MessengerSdk\Sender::VIBER));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Отправка SMS (Пакетная отправка) (HTTP/API-2)

Способ №1

  • Создание запроса
use Panda\SmsPilot\MessengerSdk;

/*
 * Текст сообщения
 * Телефонный номер абонента
 * Имя отправителя
 */
$packet = new MessengerSdk\Packet('Все начинается с сообщения!', '79995550011', MessengerSdk\Sender::VIBER);
  • Установка параметров
use Panda\SmsPilot\MessengerSdk;

/*
 * Вызов методов "setFrom", "setDatetime", "setCallback", "setCallbackMethod", "setTtl"
 * сразу после создания экземпляра класса позволит использовать соответствующие параметры
 * по умолчанию для всех сообщений в пакете
 */

/*
 * Текст сообщения
 * Телефонный номер абонента
 * Имя отправителя
 */
$packet->addSend('Все начинается с сообщения!', '79995550011', MessengerSdk\Sender::VIBERSMS)
    ->addSend('Уже началось!', '79995550012', MessengerSdk\Sender::VIBERSMS)
    
    // Уникальный код сообщения в вашей системе
    ->setId('id')

    // Имя отправителя
    ->setFrom(MessengerSdk\Sender::GOLOS)

    // Время отложенной отправки сообщения
    ->setSendDatetime('2015-04-07 09:10:00')

    // URL адрес скрипта для приѐма статуса
    ->setCallback('https://smspilot.ru')

    // get или post вызов скрипта приёма статусов
    ->setCallbackMethod(MessengerSdk\CallbackMethod::POST)

    // Время жизни сообщения
    ->setTtl(1440)

    // Обычная отправка / Без передачи оператору (эмулятор)
    ->setTest(MessengerSdk\Test::YES)

    // Обычная отправка / Рассчитать стоимость
    ->setCost(MessengerSdk\Cost::YES);
  • Выполнение запроса
use Panda\SmsPilot\MessengerSdk;

try {
    print_r($pilot->request($packet));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Способ №2

use Panda\SmsPilot\MessengerSdk;

try {
    /*
     * Текст сообщения
     * Номер мобильного телефона, или список номеров через запятую
     * Зарегистрированный отправитель
     */
    print_r($pilot->sendPacket('Все начинается с сообщения!', '79995550011', MessengerSdk\Sender::VIBER));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Проверка статусов SMS (HTTP/API-2)

Способ №1

  • Создание запроса
use Panda\SmsPilot\MessengerSdk;

// Код сообщения
$status = new MessengerSdk\Status('id');
  • Установка параметров
use Panda\SmsPilot\MessengerSdk;

// Код сообщения
$status->addId('id')
    ->addId('id')

    // Код пакета
    ->setPacketId('packetId');
  • Выполнение запроса
use Panda\SmsPilot\MessengerSdk;

try {
    print_r($pilot->request($status));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Способ №2

use Panda\SmsPilot\MessengerSdk;

try {
    // Код сообщения
    print_r($pilot->getStatusById('id'));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

// или

try {
    // Код пакета
    print_r($pilot->getStatusByPacketId('packetId'));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Баланс (HTTP/API-1)

Способ №1

  • Создание запроса
use Panda\SmsPilot\MessengerSdk;

// Единица измерения
$balance = new MessengerSdk\Balance(MessengerSdk\Balance::SMS);

// или

// Единица измерения
$balance = new MessengerSdk\Account(MessengerSdk\Balance::SMS);
  • Установка параметров
use Panda\SmsPilot\MessengerSdk;

// Единица измерения
$balance->setBalance(MessengerSdk\Balance::RUR)

    // Формат ответа сервера
    ->setFormat(MessengerSdk\Format::JSON)

    // Кодировка ответа и запроса
    ->setCharset(MessengerSdk\Charset::WINDOWS_1251)

    // Язык возвращаемых ошибок
    ->setLang(MessengerSdk\Lang::RU);
  • Выполнение запроса
use Panda\SmsPilot\MessengerSdk;

try {
    print_r($pilot->request($balance));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Способ №2

use Panda\SmsPilot\MessengerSdk;

try {
    // Единица измерения
    print_r($pilot->getBalance(MessengerSdk\Balance::RUR));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Информация о пользователе (HTTP/API-1)

Способ №1

  • Создание запроса
use Panda\SmsPilot\MessengerSdk;

// Единица измерения
$account = new MessengerSdk\Account(MessengerSdk\Balance::SMS);
  • Установка параметров
use Panda\SmsPilot\MessengerSdk;

// Единица измерения
$account->setBalance(MessengerSdk\Balance::RUR)

    // Формат ответа сервера
    ->setFormat(MessengerSdk\Format::JSON)

    // Кодировка ответа и запроса
    ->setCharset(MessengerSdk\Charset::WINDOWS_1251)

    // Язык возвращаемых ошибок
    ->setLang(MessengerSdk\Lang::RU);
  • Выполнение запроса
use Panda\SmsPilot\MessengerSdk;

try {
    print_r($pilot->request($account));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Способ №2

use Panda\SmsPilot\MessengerSdk;

try {
    // Единица измерения
    print_r($pilot->getAccount(MessengerSdk\Balance::RUR));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Входящие SMS (HTTP/API-1)

Способ №1

  • Создание запроса
use Panda\SmsPilot\MessengerSdk;

// Дата/время с которого начинается выборка
$inbound = new MessengerSdk\Inbound(MessengerSdk\Inbound::ALL);
  • Установка параметров
use Panda\SmsPilot\MessengerSdk;

// Дата/время с которого начинается выборка
$inbound->setInbound('2010-06-03 09:45:41')

    // Формат ответа сервера
    ->setFormat(MessengerSdk\Format::JSON)

    // Кодировка ответа и запроса
    ->setCharset(MessengerSdk\Charset::WINDOWS_1251)

    // Язык возвращаемых ошибок
    ->setLang(MessengerSdk\Lang::RU);
  • Выполнение запроса
use Panda\SmsPilot\MessengerSdk;

try {
    print_r($pilot->request($inbound));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Способ №2

use Panda\SmsPilot\MessengerSdk;

try {
    // Дата/время с которого начинается выборка
    print_r($pilot->getInbound(MessengerSdk\Inbound::ALL);
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Имена отправителя (HTTP/API-1)

Способ №1

  • Создание запроса
use Panda\SmsPilot\MessengerSdk;

/*
 * Имя отправителя
 * Название проекта, адрес сайта, примеры сообщений
 * Адрес для уведомления о результате проверки
 */
$sender = new MessengerSdk\Sender('SMSPilot',
    'Сайт: https://smspilot.ru; Деятельность: Телематические услуги связи...',
    'info@smspilot.ru');
  • Установка параметров
use Panda\SmsPilot\MessengerSdk;

// Имя отправителя
$sender->setAddSender('SMSPilot')

    // Название проекта, адрес сайта, примеры сообщений
    ->setDescription('Сайт: https://smspilot.ru; Деятельность: Телематические услуги связи...')

    // Адрес для уведомления о результате проверки
    ->setCallback('info@smspilot.ru')

    // Получить список отправителей
    ->setList(MessengerSdk\Sender::SENDERS)

    // Формат ответа сервера
    ->setFormat(MessengerSdk\Format::JSON)

    // Кодировка ответа и запроса
    ->setCharset(MessengerSdk\Charset::WINDOWS_1251)

    // Язык возвращаемых ошибок
    ->setLang(MessengerSdk\Lang::RU)

    // Обычная отправка / Без передачи оператору (эмулятор)
    ->setTest(MessengerSdk\Test::YES);
  • Выполнение запроса
use Panda\SmsPilot\MessengerSdk;

try {
    print_r($pilot->request($sender));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Способ №2

use Panda\SmsPilot\MessengerSdk;

try {
    /*
     * Имя отправителя
     * Название проекта, адрес сайта, примеры сообщений
     * Адрес для уведомления о результате проверки
     */
    print_r($pilot->registerSender('SMSPilot',
        'Сайт: https://smspilot.ru; Деятельность: Телематические услуги связи...',
        'info@smspilot.ru');
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Анти-спам шаблоны (HTTP/API-1)

Способ №1

  • Создание запроса
use Panda\SmsPilot\MessengerSdk;

/*
 * Текст шаблона
 * Адрес для уведомления о результате проверки
 */
$template = new MessengerSdk\Template('Ваш ребенок покинул(а) школу в __:__. Школа №1.',
    'http://smspilot.ru/api.php');
  • Установка параметров
use Panda\SmsPilot\MessengerSdk;

// Имя отправителя
$template->setAddTemplate('Ваш ребенок покинул(а) школу в __:__. Школа №1.')

    // Адрес для уведомления о результате проверки
    ->setCallback('http://smspilot.ru/api.php')

    // Формат ответа сервера
    ->setFormat(MessengerSdk\Format::JSON)

    // Кодировка ответа и запроса
    ->setCharset(MessengerSdk\Charset::WINDOWS_1251)

    // Язык возвращаемых ошибок
    ->setLang(MessengerSdk\Lang::RU);
  • Выполнение запроса
use Panda\SmsPilot\MessengerSdk;

try {
    print_r($pilot->request($template));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

Способ №2

use Panda\SmsPilot\MessengerSdk;

try {
    print_r($pilot->registerTemplate('Код подтверждения: _____', 'http://smspilot.ru/api.php'));
} catch (MessengerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}