SMS с формы

Нужно реализовать отправку сообщения из формы по смс. Может есть готовые решения и кто-то пользуется?
Михаил
01 февраля 2018, 13:41
modx.pro
3
1 473
+1

Комментарии: 5

Наумов Алексей
01 февраля 2018, 16:46
4
+4
hook для Formit, отсылает сообщения через sms.ru, вызываем перед хуком email:

Предварительно создаем настройки
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;
    Spirit_Ninja
    19 января 2022, 18:12
    0
    Скажите, а как вместо ТЕКСТ СООБЩЕНИЯ передавать данные, которые вводит пользователь в FormIt?
      Spirit_Ninja
      19 января 2022, 19:12
      0
      <?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;
    Evgeniy
    01 февраля 2018, 16:50
    0
    На примере смс.ру

    Создаёте сниппет 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
      Михаил
      02 февраля 2018, 13:18
      0
      Спасибо!
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5