Получайте новые записи в блоге через RSS RSS
6 августа 2011 | WordPress

Как отправить 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

  1. Тема (11 января 2012, 23:35)
  2. Сделал все точно как тут, заменив в коде данные на свои. Блин, не работает.
    С контактом знаком, форма работает, а смски просто не приходят. Какие варианты?

  3. Владимир Лапшин (12 января 2012, 07:06)
  4. Тема, если не работает, значит, что-то сделали не так. 🙂
    Просто SMS c LittleSMS.ru уходят?

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

  7. Катерина (5 декабря 2012, 00:23)
  8. Мы используем GET запрос через смс сервис смсвеб.рф. Просто и быстро.

  9. Валентина (23 марта 2013, 21:26)
  10. Тем, у кого не получается :

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

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

  11. Виктор (27 марта 2013, 05:58)
  12. Настроил все работает отлично, только я не к littlesms.ru, а к rek38.ru, там потому что мне техподдержка с кодами помогла. Отличная статья! Автору спасибо!

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

  15. Татьяна (7 февраля 2014, 04:50)
  16. Подскажите как сделать, чтоб после того как клиент заполнит форму «заказать звонок» СМС приходило ему?

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

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

  19. Константин (18 июля 2014, 17:39)
  20. Данный код еще актуален? Просто применил все исправления, рекомендуемые в комментариях — смс не приходит и деньги не снимают в личном кабинете

  21. Владимир Лапшин (18 июля 2014, 18:00)
  22. Да, Константин, код вполне актуален. У меня работает с момента написания этой статьи.

  23. Ярослав (29 сентября 2014, 19:55)
  24. Здравствуйте!
    Код успешно работал некоторое время, потом перестали приходить данные «$yourname — $yourphone». Приходит только тире.
    Не подскажете в чем проблема?

  25. Владимир Лапшин (30 сентября 2014, 20:57)
  26. Ярослав, в ContactForm7 поменялись названия переменных, пришлось немного допиливать код. Сейчас попробую статью обновить, если вспомню чего где изменилось. 🙂

  27. Владимир Лапшин (30 сентября 2014, 21:06)
  28. Обновил код для Contact Form 7 версии 3.9.3.

  29. Ярослав (1 октября 2014, 10:38)
  30. Владимир, спасибо!

Напишите комментарий