Как отправить SMS с данными формы на WordPress-сайте

Краткая предыстория

В ходе работ над одним из клиентских сайтов, сделали форму «Не можете дозвониться?».

Сама форма очень простая, и на электронную почту сообщение приходит без проблем. Только сотрудники могут оказаться на обеде, могут быть заняты какими-то другими делами, что-то может случиться с подключением к интернету в конце концов.

А клиент ждет звонка. И чем быстрее, тем лучше.

Так что в тот момент, когда посетитель нашего сайта нажимает кнопочку «Отправить» в форме, будем отправлять не только письмо, но и SMS c его именем и номером телефона.

Инструменты

  • Contact Form 7 — для создания и вывода форм на сайте, работающем под управлением WordPress.
  • LittleSMS.ru — для отправления SMS по 50 копеек за штуку.

Реализация

Рассказывать о создании форм не буду. Данный процесс интуитивно понятен, особенно, учитывая то, что плагин Contact Form 7 переведен на русский язык.

А вот после того, как формы настроены и сообщения отправляются на электронную почту, займемся SMS-уведомлениями.

  1. Идем в Готовые решения LittleSMS.ru и скачиваем «Класс для PHP»
  2. Безо всяких изменений закачиваем его в папку с используемой на сайте темой WordPress.
  3. В этой же папке редактируем файл 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 за отзывчивость и помощь в решении данной задачи.

15 комментариев для “Как отправить SMS с данными формы на WordPress-сайте”

  1. Сделал все точно как тут, заменив в коде данные на свои. Блин, не работает.
    С контактом знаком, форма работает, а смски просто не приходят. Какие варианты?

  2. да, просто уходят. а с вордпресса нет. в контакте есть переменная your-phone и your-name.
    вместо LittleSMS-Login написал логин апи-юзера (пробовал и свой)
    вместо LittleSMS-API-key написал пароль апи-юзера (пробовал и свой апи)
    далее свой номер, ну и имя латиницей.
    не хочет. с чего начать?

  3. Валентина

    Тем, у кого не получается :

    Вместо ‘Callback’ пишем заголовок формы, после заполнения которой, должна отправлятся смс.

    и попробуйте sendSMS заменить на messageSend

  4. Настроил все работает отлично, только я не к littlesms.ru, а к rek38.ru, там потому что мне техподдержка с кодами помогла. Отличная статья! Автору спасибо!

  5. Все отлично работает. Обратите внимание на комментарий Валентины, это важно.
    Так же важен ‘От чьего имени отправляем сообщение’ — это название профиля, от которого будут приходить сообщение. Его следует брать с закладки «Имя отправителя» (находится в личном кабинете littlesms при редактировании профиля)
    Автору и Валентине большое спасибо. Решил для себя задачу и доволен как удав:)

  6. Татьяна

    Подскажите как сделать, чтоб после того как клиент заполнит форму «заказать звонок» СМС приходило ему?

  7. Татьяна, собственно надо изменить одну строку. 🙂
    $api->sendSMS(‘79101111111-получатель SMS’, «$yourname — $yourphone», ‘От чьего имени отправляем сообщение’);

    Вот там, где «получатель СМС» надо вставить $yourphone — ибо это и есть номер телефона, который нам указали в форме.

  8. Константин

    Данный код еще актуален? Просто применил все исправления, рекомендуемые в комментариях — смс не приходит и деньги не снимают в личном кабинете

  9. Ярослав

    Здравствуйте!
    Код успешно работал некоторое время, потом перестали приходить данные «$yourname — $yourphone». Приходит только тире.
    Не подскажете в чем проблема?

  10. Ярослав, в ContactForm7 поменялись названия переменных, пришлось немного допиливать код. Сейчас попробую статью обновить, если вспомню чего где изменилось. 🙂

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

Ваш адрес email не будет опубликован.