Краткая предыстория
В ходе работ над одним из клиентских сайтов, сделали форму «Не можете дозвониться?».
Сама форма очень простая, и на электронную почту сообщение приходит без проблем. Только сотрудники могут оказаться на обеде, могут быть заняты какими-то другими делами, что-то может случиться с подключением к интернету в конце концов.
А клиент ждет звонка. И чем быстрее, тем лучше.
Так что в тот момент, когда посетитель нашего сайта нажимает кнопочку «Отправить» в форме, будем отправлять не только письмо, но и SMS c его именем и номером телефона.
Инструменты
- Contact Form 7 — для создания и вывода форм на сайте, работающем под управлением WordPress.
- LittleSMS.ru — для отправления SMS по 50 копеек за штуку.
Реализация
Рассказывать о создании форм не буду. Данный процесс интуитивно понятен, особенно, учитывая то, что плагин Contact Form 7 переведен на русский язык.
А вот после того, как формы настроены и сообщения отправляются на электронную почту, займемся SMS-уведомлениями.
- Идем в Готовые решения LittleSMS.ru и скачиваем «Класс для PHP»
- Безо всяких изменений закачиваем его в папку с используемой на сайте темой WordPress.
- В этой же папке редактируем файл functions.php, в конец которого надо добавить следующий код:
<?php add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' ); function your_wpcf7_mail_sent_function( $contact_form ) { $title = $contact_form->title; $posted_data = $contact_form->posted_data; if ( 'НАЗВАНИЕ_ВАШЕЙ_ФОРМЫ_CF7' == $title ) { // Если вы используете несколько форм на сайте, то здесь надо указать название той, после заполнения которой будет отправляться SMS. $submission = WPCF7_Submission::get_instance(); $posted_data = $submission->get_posted_data(); $yourphone = $posted_data['your-phone']; // Cохраняем в переменные те данные, которые будут оправляться в SMS. $yourname = $posted_data['your-name']; require_once 'LittleSMS.class.php'; $api = new LittleSMS('LittleSMS-Login', 'LittleSMS-API-key', false); $api->sendSMS('79101111111-получатель SMS', "$yourname - $yourphone", 'От чьего имени отправляем сообщение - с некоторых пор этот номер должен быть зарегистрирован в LittleSMS'); } } ?> |
После этого остается лишь добавить денег на баланс и убедиться, что все исправно работает. 🙂
Заключение
Очевидно, что сервис LittleSMS.ru способен на большее. И применять его, естественно, можно на любых сайтах.
Но даже такое простое дополнение способно существенно повысить качество обслуживания клиентов. Ведь и вашему клиенту будет приятно, если ему перезвонят через минуту после заполнения формы о заказе услуг. 😉
И хочется поблагодарить автора Contact Form 7 за отзывчивость и помощь в решении данной задачи.
Сделал все точно как тут, заменив в коде данные на свои. Блин, не работает.
С контактом знаком, форма работает, а смски просто не приходят. Какие варианты?
Тема, если не работает, значит, что-то сделали не так. 🙂
Просто SMS c LittleSMS.ru уходят?
да, просто уходят. а с вордпресса нет. в контакте есть переменная your-phone и your-name.
вместо LittleSMS-Login написал логин апи-юзера (пробовал и свой)
вместо LittleSMS-API-key написал пароль апи-юзера (пробовал и свой апи)
далее свой номер, ну и имя латиницей.
не хочет. с чего начать?
Мы используем GET запрос через смс сервис смсвеб.рф. Просто и быстро.
Тем, у кого не получается :
Вместо ‘Callback’ пишем заголовок формы, после заполнения которой, должна отправлятся смс.
и попробуйте sendSMS заменить на messageSend
Настроил все работает отлично, только я не к littlesms.ru, а к rek38.ru, там потому что мне техподдержка с кодами помогла. Отличная статья! Автору спасибо!
Все отлично работает. Обратите внимание на комментарий Валентины, это важно.
Так же важен ‘От чьего имени отправляем сообщение’ — это название профиля, от которого будут приходить сообщение. Его следует брать с закладки «Имя отправителя» (находится в личном кабинете littlesms при редактировании профиля)
Автору и Валентине большое спасибо. Решил для себя задачу и доволен как удав:)
Подскажите как сделать, чтоб после того как клиент заполнит форму «заказать звонок» СМС приходило ему?
Татьяна, собственно надо изменить одну строку. 🙂
$api->sendSMS(‘79101111111-получатель SMS’, «$yourname — $yourphone», ‘От чьего имени отправляем сообщение’);
Вот там, где «получатель СМС» надо вставить $yourphone — ибо это и есть номер телефона, который нам указали в форме.
Данный код еще актуален? Просто применил все исправления, рекомендуемые в комментариях — смс не приходит и деньги не снимают в личном кабинете
Да, Константин, код вполне актуален. У меня работает с момента написания этой статьи.
Здравствуйте!
Код успешно работал некоторое время, потом перестали приходить данные «$yourname — $yourphone». Приходит только тире.
Не подскажете в чем проблема?
Ярослав, в ContactForm7 поменялись названия переменных, пришлось немного допиливать код. Сейчас попробую статью обновить, если вспомню чего где изменилось. 🙂
Обновил код для Contact Form 7 версии 3.9.3.
Владимир, спасибо!