Skip to content
  1. Компоненты
  2. ePochta

ePochta

Компонент реализует API сервиса ePochta в части отправки СМС на номер, а так же представляет функционал валидации номера сотового телефона через ввод кодового слова (притом не обязательно с отправкой на СМС - в плагине можно указывать отправку почты, например)

Настройка компонента

  • ID переадресации - используется при валидации номера по SMS, если не 0 – то после успешного завершения пользователь будет переадресован на ID этой страницы.
  • Длина кода – длина кодового слова в SMS сообщении при валидации
  • Символы SMS кода – JSON массив С указанием требуемых символов, которые могут использоваться в коде.
  • Время жизни СМС-кода - время действия СМС кода, указывает через какой интервал будет сгенерирован новый проверочный код для пользователя.
  • Таймаут отправки СМС – время между двумя возможными отправками SMS.

Основные настройки

В личном кабинете активируем API 3.0. Выбираем требуемый вариант отправки из списка ниже, если выбран с буквенным именем то его нужно указать в настройках компонента.

В настройках компонента

  • От кого СМС – буквенное имя отправителя. Спецсимволы лучше не использовать.
  • Приватный ключ – копируем из ЛК
  • Публичный ключ – копируем из ЛК
  • Время жизни СМС - лучше оставить по умолчанию
  • Режим тестирования - при тестировании сообщения будут уходить на сервер EPochta и не отправляться клиенту , если выставить НЕТ – то будет боевой режим и СМС будут отсылаться.
  • URL сервиса - лучше оставить по умолчанию.

Принцип работы

Компонент позволяет делать простую отправку СМС на определенный номер, для этого достаточно сделать вызов

php
$ePochta->sendSMS_now($phone, $message, 0))

где $phone - номер телефона в международном формате, $message - текст сообщения, 0 - отправить немедленно

Отправка СМС

php
<?php
$message = 'Тест';
$phone = 7922; // номер в международном формате, например 79657008900

$ePochta = $modx->getService('epochta', 'ePochta', $modx->getOption('epochta_core_path', null, $modx->getOption('core_path') . 'components/epochta/') . 'model/epochta/', $scriptProperties);
$ePochta->initialize();
if (!($ePochta instanceof ePochta)) exit('Could not initialize ePochta!');

if (!$ePochta->sendSMS_now($phone, $message, 0)) {
  // вернется false если сообщение не отправилось
  echo "ERROR!";
}

В случае неудачи функция вернет FALSE,а в лог выдастся подробная ошибка с набором данных:

php
[2014-03-11 22:36:53] (ERROR @ /index.php) [ePochta] Error send sms to [7922], text [Тест] user_id [2]
[2014-03-11 22:36:53] (ERROR @ /index.php) Array
(
  [error] => no_good_recipients
  [code] => 303
  [result] => 464322
)

Сниппет epValidate

Параметры:

  • tplCheck - чанк с формой для валидации номера телефона.
  • tplExists - чанк для вывода формы, когда у пользователя уже есть привязанный номер телефона (Mobile Phone).

Принцип работы

Все упирается в авторизированного пользователя. Если он авторизирован – делается проверка на наличие mobilephone в его профиле.Если такое поле пустое – то тогда будет выведена форма с подтверждением сотового телефона, если нет – то будет выведен чанк tplExists.

Если номера нет, то может выдастся как первая часть формы (с вводом номера) так и вторая – с полем для ввода кода. Все зависит от параметра таймаута отправки SMS сообщений. Именно исходя из этого параметра и рассчитывается таймер обратного отсчета для повторной отправки кода или смены номера.

Сниппет использует процессоры, а процессор в ходе своей работы вызывает 4 разных событий:

  • OnBeforeCodeValidate - событие до валидации кода
  • OnAfterCodeValidate - событие после успешной валидации кода
  • OnBeforePhoneCheck - соответственно событие до валидации номера
  • OnAfterPhoneCheck - событие после успешного ввода номера

В стандартной поставке идёт плагин, который проверяет уникальность номера телефона, а так же отправляет смс и, в случае успешного подтверждения, меняет номер в профиле.