SMS с формы
Нужно реализовать отправку сообщения из формы по смс. Может есть готовые решения и кто-то пользуется?
Комментарии: 5
hook для Formit, отсылает сообщения через sms.ru, вызываем перед хуком email:
Предварительно создаем настройки
sms_ru_api_id — api ключ, который дадут при регистрации на сайте
manager_phone — номер телефона получателя
Предварительно создаем настройки
sms_ru_api_id — api ключ, который дадут при регистрации на сайте
manager_phone — номер телефона получателя
<?php
// API id
$api_id = $modx->getOption('sms_ru_api_id', null, null);
if(empty($api_id)) {
$modx->log(xPDO::LOG_LEVEL_ERROR,'SMS.RU hook: empty API ID!.');
// так как это hook, то даже в случае неудачи возвращаем true
return true;
}
// Support phone number
$phone = $modx->getOption('manager_phone', null, null);
if(empty($phone)) {
// так как это hook, то даже в случае неудачи возвращаем true
return true;
}
$ch = curl_init("https://sms.ru/sms/send");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
"api_id" => $api_id,
"to" => $phone,
"text" => "ТЕКСТ СООБЩЕНИЯ",
));
$body = curl_exec($ch);
curl_close($ch);
return true;
Скажите, а как вместо ТЕКСТ СООБЩЕНИЯ передавать данные, которые вводит пользователь в FormIt?
<?php
// API id
$api_id = $modx->getOption('sms_ru_api_id', null, null);
if(empty($api_id)) {
$modx->log(xPDO::LOG_LEVEL_ERROR,'SMS.RU hook: empty API ID!.');
// так как это hook, то даже в случае неудачи возвращаем true
return true;
}
// Support phone number
$manager_phone = $modx->getOption('manager_phone', null, null);
if(empty($manager_phone)) {
// так как это hook, то даже в случае неудачи возвращаем true
return true;
}
$name = $hook->getValue('name');
$phone = $hook->getValue('phone');
$message = $hook->getValue('message');
$allFormFields = $hook->getValues();
$ch = curl_init("https://sms.ru/sms/send");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
"api_id" => $api_id,
"to" => $manager_phone,
"text" => "БРОНИРОВАНИЕ С САЙТА
<p></strong>От кого: $name</p>
<p></strong>Телефон: $phone</p>
<p></strong>Сообщение:</strong> $message</p>",
));
$body = curl_exec($ch);
curl_close($ch);
return true;
На примере смс.ру
Создаёте сниппет sms с примерно таким содержанием:
api_id=****** — берете с личного кабинета смс.ру
Потом указываете sms в нужном Formit перед redirect
Создаёте сниппет sms с примерно таким содержанием:
$name = urlencode($hook->getValue('name'));
$phone = $hook->getValue('phone');
$message = urlencode($hook->getValue('message'));
file_get_contents ("https://sms.ru/sms/send?api_id=******&to=$phone&msg=$message&json=1");
В первых трех строках (в скобках) меняете название полей на ваши с формитаapi_id=****** — берете с личного кабинета смс.ру
Потом указываете sms в нужном Formit перед redirect
Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.