Русский
Русский
English
Статистика
Реклама

Sms server GoIP

Как устанавливать смс сервер от GoIP не буду расписывать. Вот пример установки и настройки смс сервера voxlink.ru/kb/voip-devices-configuration/986.

Здесь будет краткое руководство как пользоваться их API. В свое время нужно было привязать отправку и получение смс к своему программному обеспечению. Каждый раз лазить в вебморду смс сервера от GoIP и проверять вх./исх. сообщения было неудобно.

API сервера



Для отправки смс используется API
http://192.168.1.35/goip/en/dosend.php?USERNAME=root&PASSWORD=root&smsprovider=1&smsnum=13800138000&method=2&Memo=hello


Бывает, что сообщение не уходит, тогда нужно его отправить повторно
http://192.168.1.35/goip/en/resend.php?messageid=уникальный_номер_смс_сообщения_в_бд&USERNAME=root&PASSWORD=root'


Вот пример методов класса для отправки смс сообщения

public function send(){// Номер телефона на который нужно отправить сообщение.// Формат номера 10 значный номер (XXX-XXX-XX-XX) без 8, +7// $smsnum = '9658795588';// Получаем номер телефона с клиента$smsnum = substr($_POST['phone'],2,10);// Код сотового оператора$code = substr($smsnum,0,3);$regexp = '/9[0,1,2,3,5,6,7,9][0,1,2,3,4,5,6,7,8,9]/';// Проверяем Коды сотовых операторовif( !preg_match($regexp, $code)) {return 'Ошибка. Номер телефона неверный.';}// Само сообщение// $msg = 'тест';// $msg = mb_substr(trim($_POST['smsText']),0,335,'UTF-8');$msg = trim($_POST['smsText']);// Массив или объект содержащий свойства$arr = array('Memo' => $msg);// Генерирует URL-кодированную строку запроса$msg = http_build_query($arr);// MTC 910, 915, 916, 917, 919, 985, 986$regexp = '/910|915|916|917|919|985|986|/';// Сообщения на номера МТС отправляем со второй группы линии, // остальные с первой группыif(preg_match($regexp, $code)) {$smsprovider = 2;} else {$smsprovider = 1;}// С помощью такого Url мы отправляем сообщение на смс сервер GoIp$url = 'http://192.168.1.35/goip/en/'.'dosend.php?USERNAME=root&PASSWORD=root&smsprovider='.$smsprovider.'&smsnum='.$smsnum.'&method=2&'.$msg;// Читает содержимое файла в строку, в нашем случае мы должны получить messageid$get = file_get_contents($url);//echo htmlspecialchars($get);// Убираем пробелы, иначе функция preg_match не может найти подстроку$str = str_replace(" ","",$get);// Шаблон для поиска $reg = '/resend.php\?messageid=(.*?).*USERNAME=root.*PASSWORD=root/';// Результат пишет в массивpreg_match($reg, $str, $matches);$url = 'http://192.168.1.35/goip/en/'.$matches[0];//Делаем Get запрос чтобы смс сообщение было отправленоfile($url);return $res = 1;}public function resend(){// Номер сообщения которое нужно переотправить$msgid = (int) $_POST['msgid'];$url = 'http://192.168.1.35/goip/en/resend.php?messageid='.$msgid.'&USERNAME=root&PASSWORD=root';// Делаем Get запрос чтобы смс сообщение было отправленоfile($url);return $res = 1;}


Данные по исх./вх. сообщениям хранятся в таблицах receive и sends
// Запрос на получение всей истории переписки по заданному номеру$query = "(SELECT 'in' AS route,time,goipname,msg,0 AS msgid,"."CHAR_LENGTH(msg) AS msg_length,'0' AS over"." FROM `receive` WHERE `srcnum`='".$srcnum."')"." UNION "."(SELECT 'out' AS route,T2.time,T3.name AS goipname,T2.msg,";."T1.messageid AS msgid,"."CHAR_LENGTH(T2.msg) AS msg_length,T1.over"." FROM `sends` AS T1"." INNER JOIN message AS T2 ON T1.messageid=T2.id"." INNER JOIN goip AS T3 ON (T2.goipid=T3.id OR T1.goipid=T3.id)"." WHERE telnum='".$srcnum."')"." ORDER BY time";


Готовых примеров применения вышеописанных кодов уже не осталось. Года 2 тому назад был изучен обмен данными между родным смс сервером и самим шлюзом GoIP. На основании полученных данных написал собственный смс-сервер. Плюсом стало, что можно отслеживать статус доставки смс сообщения. Но там есть нюанс, что статус доставки смс сообщения отразится, если телефон включен в момент отправки. Если номер включат позже на несколько часов или дней, то статус доставки не увидим, хотя само сообщение будет доставлено. А в остальном только плюсы.

Если есть опыт работы с wireshark, то можно проследить следующий алгоритм общения между GoIP и родным смс сервером. Далее несложно написать свой собственный смс сервер.
1.BulkSMSRequest2.BulkSMSConfirm/BulkSMSReject3.AuthenticationRequest5.SubmitNumberRequest 14.AuthenticationConfirm6.SubmitNumberStatus 17.SubmitNumberRequest 28.SubmitNumberStatus 29.EndRequest10.EndConfirm


Сам код проекта с примерами выложить в краткой форме не получится. Слишком много данных, и все это привязано к другому проекту. В ближайшее время планирую запустить тестовую версию смс сервера на PHP, скоро выложу ссылку на проект.
Источник: habr.com
К списку статей
Опубликовано: 20.06.2020 10:15:54
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Api

Goip sms server

Категории

Последние комментарии

© 2006-2020, personeltest.ru