СМС-сервисы для отправки уведомлений

Список розділів Кухня Розробка

Опис: Пропозиції, питання, обговорення

#1 Nazar Tokar » 06.04.2013, 21:25

Демократия это не всегда плохо. Я решил написать инструкцию, как подключаться к разным смс-шлюзам для отправки уведомлений. Для этого мне нужны сервисы, с которыми вы уже имели опыт работы и которые вас устроили.

Напишите, какие сервисы вы хотели бы использовать. Страна и язык роли не играет.

Начну с smsipmple и sms.ru
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 148
Повідомлення: 2501
Теми: 100
З нами: 4 роки 6 місяців

#2 delitoff » 07.04.2013, 10:45

Назар, пожалуйста сделайте для этого сервиса http://sms-fly.com/
Спасибо.
delitoff M
Аспирант
Вік: 37
Звідки: 37600
Репутація: 1
Повідомлення: 14
З нами: 4 роки 6 місяців

#3 Nazar Tokar » 07.04.2013, 14:22

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

#4 delitoff » 08.04.2013, 22:54

Dedushka, будем ждать.
delitoff M
Аспирант
Вік: 37
Звідки: 37600
Репутація: 1
Повідомлення: 14
З нами: 4 роки 6 місяців

#5 Павел » 10.04.2013, 18:33

Вот выдержка из описания одного скрипта. Доступны шлюзы:

1) http://am4u.ru
оплата за доставленные смс
тест 20 смс, 0,15 р. спеццена для пользователей модуля).

2) http://sms-sending.ru
тест 50 смс

3) http://mainSMS.ru
тест 50 смс, цена 0,15 р., не нужно регистрировать имя отправителя.

4) http://kompeito.ru
тест 40 смс, от 0,11 до 0,25 р.

5) http://infosmska.ru
тест 11 смс, цена от 0,15 до 0,35., только РФ

6) http://bytehand.com
тест 11 смс, макс. 0,40 р.

7) http://www.epochtasms.ru/
тест 10 смс, имя отправителя без регистрации.

8) http://axtele.com/
прямые подключения к МТС, Билайну, Мегафону

9) http://mobilmoney.ru
тест 14 смс, 10 рублей

10) http://turbosms.ua
тест 10 смс

11) http://imobis.ru

12) http://giper.mobi

13) http://nssms.ru
Павел

#6 Nazar Tokar » 10.04.2013, 22:08

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

проблема с отправкой

#7 MVS » 11.04.2013, 21:52

Сегодня дошли руки установить отправку СМС
Промучился наверное час, оказалось что хостер сволочь, закрыл порт 3800.
Вот переписка
Спойлер
Здравствуйте. Ваш код не работает, потому что требует соединения через порт 3800, который закрыт на сервере виртуального хостинга в целях безопасности. Если работа даного порта критична для Вашего сайта, вы можете расположить сайт на ВПС https://www.ukraine.com.ua/vps/ где Вы будете иметь права администратора и сможете самостоятельно устанавливать или убирать те или иные ограничения.
а вот продолжение переписки
Спойлер
> это мое пятое или шестое обращение в техподдержку, и каждый раз оператор после первого моего вопроса, то есть в первом ответе, пытается мне навязать впс

Мы не навязываем своих услуг, мы обьяснили Вам причину неработоспособности функции и предложили альтернативу. Решение в любом случае остается за Вами.

К сожалению мы не можем отрыть указанный порт на сервере, где находится Ваш сайт, поскольку на этом же сервере находятся аккаунты других наших клиентов и это действие может нарушить безопасность и стабильность работы их сайтов. Спасибо за понимание.
-
Назар, что вы можете предложить за альтернативу?
Нужна отправка по Украине, не могу найти нормальных сервисов - хоть плачь!
Зображення
MVS M
Модератор
Аватар
Вік: 41
Звідки: Украина
Репутація: 48
Повідомлення: 146
З нами: 4 роки 5 місяців

#8 v001 » 11.04.2013, 23:41

mvs,
Я тоже выяснял вопрос про порт 3800 на своем хостинге freehost.com.ua
Ответ хостера удовлетворителен: "Нет, мы не закрываем порты на исход."
Но смс все равно не работает.

А тот список, что выложил Павел, я так и не понял что с ним делать дальше...
v001
Репутація: 0
Повідомлення: 4
Теми: 1
З нами: 4 роки 5 місяців

#9 Nazar Tokar » 12.04.2013, 15:18

MVS написав:Назар, что вы можете предложить за альтернативу?
Нужна отправка по Украине, не могу найти нормальных сервисов - хоть плачь!
Со временем будут другие варианты отправки смс без необходимости этого открытого порта. Навязывают VPS? Хотят заработать :). Альтернатива? Реально перейти на хороший хост, VPS это норм вариант при нагрузках средних и выше. Если надо помощь, пишите, могу порекомендовать хостера долларов на 20-25 в месяц.

По поводу отправки сообщений: как и обещал, собираю заказы на сервисы и со временем сделаю инструкцию по настройке самых нормальных из них.

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

#10 MVS » 12.04.2013, 20:17

Вот выбрал вариант для Украины sms-fly.com, есть API - сижу разбираюсь.
Спойлер
<?php
// iconv используетс для корректного перекодирования кириллических сообщений в UTF-8
// для тех, кто изначально работает с UTF-8 ¬преобразование делать не нужно.

$text = iconv('windows-1251', 'utf-8', htmlspecialchars('Заметьте, что когда герой фильма подписывает договор с Сатаной, он не подписывает копию договора и не получает ее.'));
$description = iconv('windows-1251', 'utf-8', 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;
$source = 'Test'; // Alfaname
$recipient = '380501234567';
$user = 'user';
$password = 'password';

$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);

// вывод результата в браузер для удобства чтения обрамлен в textarea
echo '<textarea spellcheck="false" name="111" rows="25" cols="150">';
echo $response;
echo '</textarea>';;
?>
Кому интересно - присоединяемся!
Зображення
MVS M
Модератор
Аватар
Вік: 41
Звідки: Украина
Репутація: 48
Повідомлення: 146
З нами: 4 роки 5 місяців

#11 Nazar Tokar » 13.04.2013, 00:28

MVS, по факту надо вообще весь запрос свести к нескольким переменным: логин, пароль/id, номер получателя, текст и подпись. Все остальное уже детали. Именно до такого максимально простого функционала надо свести запрос.
Читайте твітер.
Nazar Tokar M
Автор теми, Администратор
Аватар
Звідки: Україна
Репутація: 148
Повідомлення: 2501
Теми: 100
З нами: 4 роки 6 місяців

#12 MVS » 13.04.2013, 02:40

В общем, после пары часов труда и 9 убитых СМС, получилось вот такое, у меня работает на ура, СМС-ка приходит быстрее, чем письмо на мыло.
Для сервиса sms-fly.com
Создаем в папке callme файл под названием sms_fly_com.php и копируем туда этот код:
Спойлер
<?php
function SMS_info($phone,$name,$comment) {
$sms_text = $phone.','.$name.','.$comment;
$sms_text = preg_replace("|[+)(]|is","",$sms_text);
$sms_text = preg_replace("|[\s]+|is"," ",$sms_text);
$sms_text = trim($sms_text);
$sms_text = mb_substr($sms_text, 0, 330);
// Translit function, thanks to ProgrammerZ.Ru
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","Ч"=>"CH","Ш"=>"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","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y","ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya");
return strtr($str,$tr);
}
$sms_text = mb_substr(translit($sms_text), 0, 159);
$text = htmlspecialchars($sms_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;
$source = 'SMS'; // Alfaname
$recipient = '380670000000'; //кому отправляем СМС
$user = '380950000000'; // ваш логин в сервисе http://sms-fly.com/
$password = 'пароль'; // ваш пароль в сервисе http://sms-fly.com/

$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);
}
?>
Далее, ищем 2 строки в папке callme в файле index.php
Код: Виділити все
$message = "Спасибо, сообщение отправлено."; //сообщение об отправке
if ($id) { @sendSMS($num_sms, $msg_sms); }
и заменяем ее на
Код: Виділити все
$message = "Спасибо, сообщение отправлено."; //сообщение об отправке
if ($message) { @SMS_info($phone,$name,$comment); }
Далее, в этом же файле, в самом верху ищем
Код: Виділити все
<?php
// www.nazartokar.com
// www.dedushka.org
// [email protected]
и заменяем на это:
Код: Виділити все
<?php
// www.nazartokar.com
// www.dedushka.org
// [email protected]
include('../callme/sms_fly_com.php');
Потом идем на сайт sms-fly.com и регаем аккаунт, ищем в файле sms_fly_com.php вот такие строки и вводим свои данные
Код: Виділити все
$recipient = '380670000000'; //кому отправляем СМС
$user = '380950000000'; // ваш логин в сервисе http://sms-fly.com/
$password = 'пароль'; // ваш пароль в сервисе http://sms-fly.com/
Ну вроде и все, должно работать. Не забывайте о кодировке.
Зображення
MVS M
Модератор
Аватар
Вік: 41
Звідки: Украина
Репутація: 48
Повідомлення: 146
З нами: 4 роки 5 місяців

#13 Nazar Tokar » 13.04.2013, 10:26

MVS, отлично, только в этом примере все уведомления будут отправляться одному ии тому же получателю. Надо кроме сообщения указывать также переменную с номером адресата сообщения. Думаю, более гибкой будет такая настройка: в index.php добавить н-ное количество функций, для каждого из провайдеров.

Далее в начале нужно будет указать логин, ключ и/или пароль и свой номер/подпись, а также указать, каким провайдером пользоваться. Ну и всё, по названию провайдера будет использоваться та или иная функция отправки. Так можно будет при желании легко менять сервис.

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

#14 MVS » 13.04.2013, 10:38

Можно указать до 100 номеров получателя!
Вот только вопрос - а зачем? мы ведь его используем на своем сайте для себя, то есть дублировать письма с почты на телефон, и при таком раскладе кому еще нужна СМС-ка кроме нас? Одного номера нашего телефона - вполне.
Зображення
MVS M
Модератор
Аватар
Вік: 41
Звідки: Украина
Репутація: 48
Повідомлення: 146
З нами: 4 роки 5 місяців

#15 delitoff » 13.04.2013, 10:50

MVS, сделал как Вы написали но почему-то не отправляются смс, при нажатии "перезвоните мне" идет статус "отправка" и все, письмо приходит. http://hardware.delitoff.com/
delitoff M
Аспирант
Вік: 37
Звідки: 37600
Репутація: 1
Повідомлення: 14
З нами: 4 роки 6 місяців

#16 MVS » 13.04.2013, 11:09

установка в 4 шага
1. Создаем в папке callme файл под названием sms_fly_com.php и копируем туда код
2. ищем 2 строки в папке callme в файле index.php и заменяем
3. в этом же файле, в самом верху вставляем include('../callme/sms_fly_com.php');
4. в файле sms_fly_com.php прописываем логин, пароль и кому отправлять
Смотрите, возможно ошиблись с названием файла

Додано через 36 хвилин 27 секунд:
В общем так как все это делал на старом callme, то не обратил внимание на то, что уже был один кусок кода в новом, в итоге функция подключалась два раза что и вызвало ошибку.
Вот новый файл sms_fly_com.php
Спойлер
<?php
function SMS_info($phone,$name,$comment) {
$phone = preg_replace("|[+)(-\s]+|is","",$phone);
$sms_text = $phone.','.$name.','.$comment;
$sms_text = preg_replace("|[\s]+|is"," ",$sms_text);
$sms_text = trim($sms_text);
$sms_text = mb_substr($sms_text, 0, 330);
$sms_text = mb_substr(translit($sms_text), 0, 159);
$text = htmlspecialchars($sms_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;
$source = 'SMS'; // Alfaname
$recipient = '380670000000'; //кому отправляем СМС
$user = '380950000000'; // ваш логин в сервисе http://sms-fly.com/
$password = '12345'; // ваш пароль в сервисе http://sms-fly.com/

$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);
}
?>
Зображення
MVS M
Модератор
Аватар
Вік: 41
Звідки: Украина
Репутація: 48
Повідомлення: 146
З нами: 4 роки 5 місяців

#17 delitoff » 13.04.2013, 12:19

MVS, разобрался, только приходят латиницей, так и должно быть?
Может подскажите как данный сервис настроить с buyme?
delitoff M
Аспирант
Вік: 37
Звідки: 37600
Репутація: 1
Повідомлення: 14
З нами: 4 роки 6 місяців

#18 MVS » 13.04.2013, 12:25

вот руководствовался этим:
    Какое допустимое кол-во символов при отправке одного и длинных SMS сообщений?
    При подсчете кол-ва символов в сообщении учитываются знаки препинания, пробелы, символы перевода строки.
    Ограничения для одного SMS-сообщения
    - Кириллица - 70 символов;
    - Латиница - 160 символов;
    Если количество символов превышает вышеуказанные, тогда сообщение делится на несколько частей, получается, так называемое - длинное SMS.
    Ограничение для каждой части длинного SMS сообщения:
    - Кириллица - 67 символов;
    - Латиница - 153 символа.
    (6 байт используется для передачи технической информации)

То есть кириллицей сообщение получается мелковатое, да и Назар тоже считает так, что нужно отправлять латиницей,оригинал его шедевра тоже ведь отправляет латиницей!
Сцылко на ресурс http://sms-fly.com/Info/VoprosOtvet/
Зображення
MVS M
Модератор
Аватар
Вік: 41
Звідки: Украина
Репутація: 48
Повідомлення: 146
З нами: 4 роки 5 місяців

#19 delitoff » 13.04.2013, 12:35

Оригинал данного шедевра я так и не увидел (закрыты порты) :).
MVS, к buyme прикрутите?
delitoff M
Аспирант
Вік: 37
Звідки: 37600
Репутація: 1
Повідомлення: 14
З нами: 4 роки 6 місяців

#20 MVS » 13.04.2013, 12:48

buyme еще не смотрел, скачал, но так ни разу не открыл, сегодня посмотрю.

Додано через 2 години 25 хвилин:
для bayme только два действия, нужно найти в папке bayme файл index.php и в нем заменить
1. вот это
Код: Виділити все
if ($bytehandId) {
      @sendSMS($num_sms, $msg_sms);
   }
на это
Код: Виділити все
/* if ($bytehandId) {
      @sendSMS($num_sms, $msg_sms);
   }*/
   $phone = $contact;
   $comment = preg_replace("|<br>|is"," ",getOptions()).','.$comment;
   if ($message) { @SMS_info($phone,$name,$comment); }
2. и в самом верху аналогично как и в callme вот это
Код: Виділити все
<?
// www.nazartokar.com
// www.dedushka.org
// [email protected]
на это
Код: Виділити все
<?php
// www.nazartokar.com
// www.dedushka.org
// [email protected]
include('../callme/sms_fly_com.php');
Больше ничего ни добавлять, ни убирать.Вроде все, должно работать.

Додано через 10 хвилин 38 секунд:
Да, и в файле
Код: Виділити все
sms_fly_com.php
уберите в третьей строке +(плюс), то есть вот так
Код: Виділити все
$phone = preg_replace("|[)(-\s]+|is","",$phone);
Зображення
MVS M
Модератор
Аватар
Вік: 41
Звідки: Украина
Репутація: 48
Повідомлення: 146
З нами: 4 роки 5 місяців

Наст.

Повернутись в Розробка

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

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

cron