Настройка SMS в Callme и Buyme [инструкция]

Список розділів Скрипти Callme — скрипт замовлення зворотнього дзвінка

Опис: Свіжа версія — 1.9.5 (2013-12-21)

#21 Nazar Tokar » 14.10.2013, 00:31

Anarfin1, да. Пример с смс.ру

Спойлер
Skylink - 60 копеек
Абхазия - 25 копеек
Азербайджан - 80 копеек
Армения - 60 копеек
Беларусь - 60 копеек
Великобритания - 1 руб 80 копеек
Германия - 2 руб 50 копеек
Дания - 80 копеек
Египет - 60 копеек
Казахстан - 60-80 копеек
Киргизия - 60 копеек
Китай - 1 руб 60 копеек
Латвия - 1 руб 70 копеек
Молдова - 1 руб 80 копеек
США - 85 копеек * нет возможности смены отправителя
Таиланд - 60 копеек
Таджикистан - 80 копеек
Украина - 60 копеек
Узбекистан - 80 копеек
Черногория - 1 руб
Чехия - 1 руб 80 копеек
Швеция - 2 руб 50 копеек
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 148
Повідомлення: 2501
Теми: 100
З нами: 4 роки 6 місяців

#22 master.freebsd » 16.10.2013, 12:12

Сколько будет стоить интеграция с таким сервисом как alphasms.ua ?
master.freebsd
Репутація: 0
Повідомлення: 2
З нами: 3 роки 11 місяців

#23 Nazar Tokar » 16.10.2013, 12:54

master.freebsd, да нисколько. Найдите их публичный API и я напишу вам функцию для работы.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 148
Повідомлення: 2501
Теми: 100
З нами: 4 роки 6 місяців

#24 master.freebsd » 18.10.2013, 04:01

У них платный сервис публичного ключа нет могу предоставить свой ключ
master.freebsd
Репутація: 0
Повідомлення: 2
З нами: 3 роки 11 місяців

#25 miker » 05.11.2013, 02:24

Возможна ли отправка смс клиенту заполнившему форму типа "Ваш заказ принят"?
miker
Аспирант
Репутація: -1
Повідомлення: 17
З нами: 3 роки 10 місяців

#26 Nazar Tokar » 05.11.2013, 13:49

miker, да, для этого надо в lib/send.php найти:

Код: Виділити все
@sendSMS($num, $sms["msg"]);

и рядом добавить:

Код: Виділити все
@sendSMS("телефон клиента", "Сообщение");
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 148
Повідомлення: 2501
Теми: 100
З нами: 4 роки 6 місяців

#27 Anarfin » 25.11.2013, 02:13

А можно ли как то в скрипте ограничить отправку СМС каким то временем? Например "отправлять смс только в случае если сейчас время с 7 утра до 9 вечера по такому то часовому поясу"...

А в остальное (в ночное) время чтобы отправлялась инфа только е-мейлом!
Anarfin
Аспирант
Репутація: 0
Повідомлення: 23
Теми: 5
З нами: 3 роки 11 місяців

#28 Nazar Tokar » 25.11.2013, 10:50

Anarfin, можно было бы и название скрипта сказать...
Для Callme вот так.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 148
Повідомлення: 2501
Теми: 100
З нами: 4 роки 6 місяців

#29 Anarfin » 25.11.2013, 12:43

Большое спасибо!
Anarfin
Аспирант
Репутація: 0
Повідомлення: 23
Теми: 5
З нами: 3 роки 11 місяців

:smile:

#30 kodzero » 23.12.2013, 16:27

Скрипт супер, спасибо. Версия 1.9.5. На почту все приходит. Но вот СМС через sms.ru не работает.... На хостинге PHP 5.5 стоит. Если в браузере вставить строчку смс приходит.

Пробовал разные варианты в скрипте. Там где отсылка вообще убрал переменные и вписал сразу всю строчку http.....
Нифина... Смс не приходит. Вот фрагмент кода за СМС -

Код: Виділити все
$sms["id"] = "";
$sms["key"] = "xxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxxx";
$sms["log"] = "";
$sms["pss"] = "";
$sms["frm"] = "callme"; // добавьте новую подпись в смс-шлюзе и дождитесь апрува
$sms["num"] = "XXXXXXXXXXX"; // ваш номер в формате без + (79218886622)
$sms["prv"] = "sms.ru"; // на выбор: sms.ru, infosmska.ru, bytehand.com, sms-sending.ru, smsaero.ru

function uc ($s)
{
   $s = urlencode($s);
   return $s;
}

function gf ($s) // no shit
{
   $s = substr( (htmlspecialchars($_GET[$s])), 0, 500);
   if (strlen($s) > 1) return $s;
}

function sendSMS ($to, $msg)
{
   global $sms;
   $u['sms.ru'] = "sms.ru/sms/send?api_id=".uc($sms["key"])."&to=".uc($sms["num"])."&text=".uc($msg);
   $u['bytehand.com'] = "bytehand.com:3800/send?id=".uc($sms["id"])."&key=".uc($key)."&to=".uc($sms["num"])."&partner=callme&from=".uc($sms["frm"])."&text=".uc($msg);
   $u['sms-sending.ru'] = "lcab.sms-sending.ru/lcabApi/sendSms.php?login=".uc($sms["log"])."&password=".uc($sms["pss"])."&txt=".uc($msg)."&to=".uc($sms["num"]);
   $u['infosmska.ru'] = "api.infosmska.ru/interfaces/SendMessages.ashx?login=".uc($sms['log'])."&pwd=".uc($sms["pss"])."&sender=SMS&phones=".uc($sms["num"])."&message=".uc($msg);
   $u['smsaero.ru'] = "gate.smsaero.ru/send/?user=".uc($sms["log"])."&password=".md5 (uc($sms["pss"]))."&to=".uc($sms["num"])."&text=".uc($msg)."&from=".uc($sms["frm"]);
   @$r = file_get_contents("http://".$u[$sms["prv"]]);   
}


Пробовал тут

Код: Виділити все
@$r = file_get_contents("http://".$u[$sms["prv"]]);   
на
@$r = file_get_contents("http://sms.ru/sms/send?api_id=xxxxxxxxx-a3f0-8194-e1f1-48e94a0bbf17&to=74950000001&text=hello+world);   

нифига нет даже так. Верный API для теста скинул в личку.
kodzero
Репутація: 1
Повідомлення: 3
З нами: 3 роки 9 місяців

#31 Nazar Tokar » 23.12.2013, 16:50

kodzero, если у вас php5.5, то file_get_contents должно работать нормально. Проверьте на всякий случай, включена ли эта функция в php.ini. В остальном проверяйте настройки, я тестировал sms.ru и проверял неоднократно. При условии включения упомянутой выше функции все работает.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 148
Повідомлення: 2501
Теми: 100
З нами: 4 роки 6 місяців

#32 kodzero » 25.12.2013, 14:39

Спасибо большое за наводку.
Помогло в файл .htaccess
php_flag allow_url_fopen On

Но читал, что это не безопасно, если через php.ini. Подозреваю, что и в штаккес тоже не безопасно. Не знате случаем, как сделать это правило только для определенного сайта?
kodzero
Репутація: 1
Повідомлення: 3
З нами: 3 роки 9 місяців

#33 Nazar Tokar » 25.12.2013, 15:30

kodzero, .htaccess работает для одного сайта. А если в папке, то только для нее. Если все скрипты вы сами загружаете и никто кроме вас не имеет доступа к фтп, то ничего страшного в этой функции нет. Если доступ кроме вас могут получить злоумышленники, то эта функция в случае отключения никак не помешает им.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 148
Повідомлення: 2501
Теми: 100
З нами: 4 роки 6 місяців

#34 kodzero » 25.12.2013, 18:48

Ясно, спс :wink:
С наступающим Вас.
kodzero
Репутація: 1
Повідомлення: 3
З нами: 3 роки 9 місяців

#35 EgorKus » 27.02.2014, 23:54

Назар, не совсем понятно, почему ещё к Вашему шикарному модулю не добавлены украинские шлюзы для отправки СМС.
Здесь можно скачать API одного из украинских операторов: http://sms-fly.com/api.zip
Будет здорово, если Вы "прикрутите" к модулю CallMe возможность отправлять СМС через него. Нам дешевле, проще и удобней работать с украинским оператором.
А благодарность украинских пользователей не будет иметь границ. :smile:
EgorKus
Аспирант
Репутація: 0
Повідомлення: 10
З нами: 3 роки 7 місяців

#36 Nazar Tokar » 28.02.2014, 16:08

EgorKus, я вообще сам из Украины :). Самые низкие тарифы на отправку, которые я нашёл, у sms.ru.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 148
Повідомлення: 2501
Теми: 100
З нами: 4 роки 6 місяців

#37 EgorKus » 28.02.2014, 18:02

Назар, видел, что Вы из Украины. :hi:
Если не сильно затруднит - прикрутите, пожалуйста. Проще платить в гривнах по месту, внутри страны... :smile:
EgorKus
Аспирант
Репутація: 0
Повідомлення: 10
З нами: 3 роки 7 місяців

#38 EgorKus » 01.03.2014, 19:47

Назар, ведь готовое решение по украинскому шлюзу СМС для старой версии CallMe было: /viewtopic.php?f=16&t=36.
Прикрутите, его, пожалуйста, к текущей версии.
EgorKus
Аспирант
Репутація: 0
Повідомлення: 10
З нами: 3 роки 7 місяців

#39 EgorKus » 02.03.2014, 12:47

MVS, здравствуйте!
У Вас есть прекрасное решение для отправки СМС сообщений из CallMe через украинский шлюз: /viewtopic.php?f=16&t=36
Буду чрезвычайно признателен Вам, если Вы подключите данный сервис к последней версии CallMe 1.9.5.
Уверен, к моей признательности присоединится большое число украинских польтзователей.
Спасибо!
EgorKus
Аспирант
Репутація: 0
Повідомлення: 10
З нами: 3 роки 7 місяців

#40 MVS » 02.03.2014, 16:00

Отправка СМС сообщений из CallMe через украинский шлюз: "sms-fly.com"
Замените содержимое файла "send.php" на это содержимое:
Спойлер
Код: Виділити все
<?php
// dedushka.org // nazartokar.com // qbx.me // [email protected]

//require("smtp.php");
header ("Content-Type: text/html; charset=utf-8"); //кодировка

//адрес почты для отправки уведомления
$to = "[email protected]"; //получатель

// не трогать
$HTTP_HOST = parse_url ("http://".$_SERVER["HTTP_HOST"]);
$HTTP_HOST = str_replace (array ("http://","www."), "", $HTTP_HOST["host"]);
$from = "[email protected]".$HTTP_HOST; // отправитель. Если настраиваете smtp, не забудьте указать в $from ваше мыло

// данные для отправки смс

$sms["id"] = "";  // id (используют не все сервисы)
$sms["key"] = ""; // ключ (используют не все сервисы)
$sms["log"] = "38092XXXXXXX"; // логин (для сервиса sms_fly - это номер телефона при регистрации)
$sms["pss"] = "XXXXXXX"; // пароль
$sms["frm"] = "SMS"; // добавьте новую подпись в смс-шлюзе и дождитесь апрува // Alfaname
$sms["num"] = "38092XXXXXXX"; // ваш номер в формате без + (79218886622) // для sms_fly куда посылать SMS-ку
$sms["prv"] = "sms_fly"; // на выбор: sms.ru, infosmska.ru, bytehand.com, sms-sending.ru, smsaero.ru, sms_fly

function uc ($s)
{
   $s = urlencode($s);
   return $s;
}

function gf ($s) // no shit
{
   $s = substr( (htmlspecialchars($_GET[$s])), 0, 500);
   if (strlen($s) > 1) return $s;
}

function sendSMS ($to, $msg)
{
   global $sms;
   $u['sms.ru'] = "sms.ru/sms/send?api_id=".uc($sms["key"])."&to=".uc($sms["num"])."&text=".uc($msg);
   $u['bytehand.com'] = "bytehand.com:3800/send?id=".uc($sms["id"])."&key=".uc($key)."&to=".uc($sms["num"])."&partner=callme&from=".uc($sms["frm"])."&text=".uc($msg);
   $u['sms-sending.ru'] = "lcab.sms-sending.ru/lcabApi/sendSms.php?login=".uc($sms["log"])."&password=".uc($sms["pss"])."&txt=".uc($msg)."&to=".uc($sms["num"]);
   $u['infosmska.ru'] = "api.infosmska.ru/interfaces/SendMessages.ashx?login=".uc($sms['log'])."&pwd=".uc($sms["pss"])."&sender=SMS&phones=".uc($sms["num"])."&message=".uc($msg);
   $u['smsaero.ru'] = "gate.smsaero.ru/send/?user=".uc($sms["log"])."&password=".md5 (uc($sms["pss"]))."&to=".uc($sms["num"])."&text=".uc($msg)."&from=".uc($sms["frm"]);
   @$r = file_get_contents("http://".$u[$sms["prv"]]);   
}

function translit ($str)
{
   $tr = array("А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I","Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"4","Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"","Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j","з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l","м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h","ц"=>"ts","ч"=>"4","ш"=>"sh","щ"=>"sch","ъ"=>"y","ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya");
   return strtr($str, $tr);
}
// translit * ProgrammerZ.Ru

function addToMess ($c, $o)
{
   global $mess;
   if (strlen ($o) > 2) {
      $mess = $mess.'<div style="margin:3px 0;background: #ffe1e0;border: 1px solid #cecece;padding:10px"><b>'.$c.':</b><br>'.$o.'</div>';
   }
}

function jsAnswer ($result, $cls, $time, $message)
{
   echo '{"result": "'.$result.'","cls": "'.$cls.'","time": "'.$time.'","message": "'.$message.'"}';
   exit ();
}

function getOptions ($o)
{ // get callme options
   $cs = $_GET["cs"];
   $os = $_GET["os"];
   $i = 0;   
   $opts = " ";

   if ($o == 1)
      {
      $opts = '<div style="background:#fffce8;border:1px solid #cecece;padding:10px 10px 0">';

      foreach ($os as $value)
      {
         if((strlen($value) != 0) && ($value != "0")) {
            $opts .= "<b>".$cs[$i]."</b>:<br>".$value."<br><br>";
         }
         $i++;
      }
      $opts .= '</div>';
   } else {
      foreach ($os as $value)
      {
         if ((strlen($value) != 0) && ($value != "0")) {
            $opts .= $cs[$i]."(".$value.") ";
         }
         $i++;
      }      
   }
   return $opts;
}

$time = time (); // время отправки
$interval = $time - (gF("ctime"));
if ($interval < 1) // интервал отправки (сек)
{
   jsAnswer ("error", "c_error", "", "Сообщение уже было отправлено.");
} else {
   //$get_data = gF('os');
   $get_data = $_GET["cs"];

   if (count ($get_data) > 1){ // data to send
   $os = $_GET["os"];
   $cs = $_GET["cs"];
   $ip = $_SERVER["REMOTE_ADDR"];

//get city

   $ip = $_SERVER["REMOTE_ADDR"];
   @$geo = file_get_contents ("http://freegeoip.net/json/".$ip);
   @$geo = json_decode ($geo, true);

   $title = "CallMe: обратный звонок";
   $title = "=?UTF-8?B?".base64_encode($title)."?=";
   $mess = "";

   $mess .= getOptions(1);

   addToMess ("Откуда запрос", ($geo['city']." / ".$geo['country_name']." / ".$ip));

   $mess = $mess."<hr><a href='http://dedushka.org/tag/callme/'>Следите</a> за обновлениями.<br>Спасибо за то, что пользуетесь CallMe.";
   
   $headers = "Content-type: text/html; charset=utf-8 \r\n";
   $headers.= "From: CallMe 1.9.5 <".$from.">\r\n";

   $sms["msg"] = translit("CallMe ".(getOptions(0)));
   $sms["msg"] = substr($sms["msg"], 0, 160);

@mail($to, $title, $mess, $headers);   
   if ( ($sms["id"] != "") || ($sms["key"] != "") || ($sms["log"] != "") )
   {
    if ( $sms["prv"] != 'sms_fly' ) {
        @sendSMS($num, $sms["msg"]);
       } else {
        @SMS_info($sms["log"], $sms["pss"], $sms["num"], $sms["frm"], $sms["msg"]);     
       }
   }
      jsAnswer("success", "c_success", "", "Спасибо, сообщение отправлено");
   } else {
      jsAnswer("error", "c_error", "", "Ошибка");
   }
}

// модуль отправки SMS через сервис http://sms-fly.com
function SMS_info($user, $password, $recipient, $source, $text) {
$description = htmlspecialchars('Звонок с сайта');
$start_time = date("Y-m-d H:i:s");
$end_time = date("Y-m-d H:i:s", time() + 10800); // плюс 3 часа
$rate = 120;
$livetime = 4;

$myXML     = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$myXML    .= "<request>";
$myXML    .= "<operation>SENDSMS</operation>";
$myXML    .= '<message start_time="'.$start_time.'" end_time="'.$end_time.'" livetime="'.$livetime.'" rate="'.$rate.'" desc="'.$description.'" source="'.$source.'">'."\n";
$myXML    .= "<body>".$text."</body>";
$myXML    .= "<recipient>".$recipient."</recipient>";
$myXML    .= "</message>";
$myXML    .= "</request>";

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD , $user.':'.$password);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, 'http://sms-fly.com/api/api.php');
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml", "Accept: text/xml"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $myXML);
$response = curl_exec($ch);
curl_close($ch);
}
?>
Зарегистрируйтесь на сайте "sms-fly.com" , если нужно Альфаимя - зарегистрируйте его, помните, процедура регистрации Альфаимени занимает иногда более 24 часов, после этого пропишите данные в скрипт.
Должно все работать должным образом!

P.S. Работа производилась только в файле "send.php" , который находится: callme/lib/send.php
Что добавлено:
В строке 139 добавлена часть кода
Спойлер
Код: Виділити все
if ( $sms["prv"] != 'sms_fly' ) {
      @sendSMS($num, $sms["msg"]);
   } else {
      @SMS_info($sms["log"], $sms["pss"], $sms["num"], $sms["frm"], $sms["msg"]);     
   }
ну и собственно сам модуль отправки СМС в самом низу
Спойлер
Код: Виділити все
// модуль отправки SMS через сервис http://sms-fly.com
function SMS_info($user, $password, $recipient, $source, $text) {
$description = htmlspecialchars('Звонок с сайта');
$start_time = date("Y-m-d H:i:s");
$end_time = date("Y-m-d H:i:s", time() + 10800); // плюс 3 часа
$rate = 120;
$livetime = 4;

$myXML     = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$myXML    .= "<request>";
$myXML    .= "<operation>SENDSMS</operation>";
$myXML    .= '<message start_time="'.$start_time.'" end_time="'.$end_time.'" livetime="'.$livetime.'" rate="'.$rate.'" desc="'.$description.'" source="'.$source.'">'."\n";
$myXML    .= "<body>".$text."</body>";
$myXML    .= "<recipient>".$recipient."</recipient>";
$myXML    .= "</message>";
$myXML    .= "</request>";

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD , $user.':'.$password);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, 'http://sms-fly.com/api/api.php');
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml", "Accept: text/xml"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $myXML);
$response = curl_exec($ch);
curl_close($ch);
}
Ну и конечно-же нужно прописать само название шлюза в строке 23:
$sms["prv"] = "sms_fly"; // на выбор: sms.ru, infosmska.ru, bytehand.com, sms-sending.ru, smsaero.ru, sms_fly
Зображення
MVS M
Модератор
Аватар
Вік: 41
Звідки: Украина
Репутація: 48
Повідомлення: 146
З нами: 4 роки 5 місяців

Поперед.Наст.

Повернутись в Callme — скрипт замовлення зворотнього дзвінка

Хто зараз на форумі (базується на активності користувачів за останні 30 хвилин)

Зараз переглядають цей розділ: 4 гостей

cron