Blog. Just Blog

Отправка сообщений через API PROSTOR-SMS на PHP

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Отправка сообщений через API PROSTOR-SMS на PHP
Отправка сообщений через API PROSTOR-SMS на PHP

При возникновении какой-либо чрезвычайной ситуации очень важно, чтобы были своевременно оповещены все ответственные лица. У нас это делается при помощи бота в Telegram, но в качестве дополнительного канала используются старые добрые SMS-сообщения. В качестве шлюза для отправки SMS мы уже давно выбрали PROSTOR-SMS. Это не реклама, сервис платный и ни разу не дешевый, но мне с этой статьи ни копейки не капает.

Для взаимодействия с внешними приложениями у сервиса есть несколько интерфейсов API, в том числе REST. Готового официального кода для взаимодействия с API не было, а примеры, мягко говоря, оставляют желать лучшего. Поэтому пришлось рисовать свой вариант. Может быть пригодится кому-нибудь еще.

Для работы надо зарегистрироваться на сайте, если хотите, то можно сразу пополнить счет. Что хорошо, там нет никакой подписки, внесенные деньги тратятся только на отправку сообщений. Ну а дальше подключаем класс и отправляем сообщения.
  1. // Класс для отправки смс
  2. $sms = new sms();
  3. // Настройки подключения
  4. $sms->username $login;
  5. $sms->password $passeord;
  6. // Сервер для отправки SMS
  7. $sms->server 'http://api.prostor-sms.ru';
  8.  
  9. // Подключиться к серверу и проверить текущий баланс счета
  10. if ($sms->connect()) && $sms->get_balance()>100) {
  11.     // Номер для отправки
  12.     $num='+70001234567';
  13.     // Текст сообщения
  14.     $message='Проблемы с сервером BACKUP1';
  15.     // Имя отправителя
  16.     $sender='ALARMA';
  17.  
  18.     // Проверить имя отправителя
  19.     if ($senders=$sms->get_senders() && in_array($sender$senders)) {
  20.         // Отправить сообщение
  21.         $sms_id=$sms->send($num,$message,$sender);
  22.  
  23.         // Получить статус отправки
  24.         $status=$sms->get_status($sms_id);
  25.         if ($status=='delivered') {
  26.             // Сообщение доставлено
  27.         }
  28.         elseif ($status=='delivery error' || $status=='smsc reject') {
  29.             // Перманентная ошибка доставки
  30.             // delivery error - Ошибка доставки SMS (абонент в течение времени
  31.             // доставки находился вне зоны действия сети или номер абонента
  32.             // заблокирован)
  33.             // smsc reject - Сообщение отвергнуто SMSC (номер заблокирован или
  34.             // не существует)
  35.         }
  36.         else {
  37.             // queued - Сообщение находится в очереди
  38.             // smsc submit - Сообщение доставлено в SMSC
  39.             // incorrect id - Неверный идентификатор сообщения
  40.             // unknown error - Произошло что-то непонятное
  41.         }
  42.     }
  43. }
Имя отправителя задается в настройках аккаунта на сайте, оно не должно совпадать с названиями банков, мобильных операторов, специальных и экстренных служб и т.п. После отправки статус SMS некоторое время может находиться в значении "queued", это абсолютно нормально, сообщение поставлено в очередь на отправку. Поэтому статусы отправленных сообщений надо периодически проверять до получения статуса "delivered" или какой-либо ошибки.

Дополнительно в классе есть метод is_opsos, который проверят принадлежность номера российским операторам сотовой связи. Он используется, чтобы случайно не отправить SMS на заграничный или стационарный номер.

В приложении скрипт класса на PHP, который реализует работу с API PROSTOR-SMS.

SMS Prostor 1.0SMS Prostor 1.0

SMS.Prostor.1.0-PCL.zip (2,524 bytes)


Поделиться ссылкой ВКонтакте
Просмотров: 244 | Комментариев: 2

Метки: PHP

Комментарии

Отзывы посетителей сайта о статье
ManHunter (26.07.2024 в 15:43):
Несколько лет назад было можно, только там получался вообще конский ценник. Как сейчас - хз, не пробовал. У нас адресаты только по России.

Коды операторов тоже, наверное, было бы хорошо обновить. А то как сделал список, так и работает.
morgot (26.07.2024 в 15:41):
Спасибо за код. Не знаешь случайно, там только по России смс, или можно и другие страны? На сайте не найду информации.

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.0044 сек.) / Память: 4.5 Mb
Наверх