ePochta
Компонент реализует API сервиса ePochta в части отправки СМС на номер, а так же представляет функционал валидации номера сотового телефона через ввод кодового слова (притом не обязательно с отправкой на СМС - в плагине можно указывать отправку почты, например)
Настройка компонента
- ID переадресации - используется при валидации номера по SMS, если не 0 – то после успешного завершения пользователь будет переадресован на ID этой страницы.
- Длина кода – длина кодового слова в SMS сообщении при валидации
- Символы SMS кода – JSON массив С указанием требуемых символов, которые могут использоваться в коде.
- Время жизни СМС-кода - время действия СМС кода, указывает через какой интервал будет сгенерирован новый проверочный код для пользователя.
- Таймаут отправки СМС – время между двумя возможными отправками SMS.
Основные настройки
В личном кабинете активируем API 3.0. Выбираем требуемый вариант отправки из списка ниже, если выбран с буквенным именем то его нужно указать в настройках компонента.
В настройках компонента
- От кого СМС – буквенное имя отправителя. Спецсимволы лучше не использовать.
- Приватный ключ – копируем из ЛК
- Публичный ключ – копируем из ЛК
- Время жизни СМС - лучше оставить по умолчанию
- Режим тестирования - при тестировании сообщения будут уходить на сервер EPochta и не отправляться клиенту , если выставить НЕТ – то будет боевой режим и СМС будут отсылаться.
- URL сервиса - лучше оставить по умолчанию.
Принцип работы
Компонент позволяет делать простую отправку СМС на определенный номер, для этого достаточно сделать вызов
$ePochta->sendSMS_now($phone, $message, 0))
где $phone
- номер телефона в международном формате, $message
- текст сообщения, 0
- отправить немедленно
Отправка СМС
<?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,а в лог выдастся подробная ошибка с набором данных:
[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
- событие после успешного ввода номера
В стандартной поставке идёт плагин, который проверяет уникальность номера телефона, а так же отправляет смс и, в случае успешного подтверждения, меняет номер в профиле.