Скрипт отправки сообщений через API SMS-шлюз

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Kolivan
Сообщения: 16
Зарегистрирован: 20 мар 2012, 13:10
Откуда: Оренбург
Контактная информация:

Здравствуйте. В моём случае это SMSPilot.ru
Сам некогда учился на программиста на Delphi, но это было давно и не правда. На сайте оператора SMS нашёл некоторое количество скриптов под PHP, C#, Net, Python, Ruby, Node.js, Delphi, VBA (Excel), 1C, Perl, Bash и Консоль Windows. Глядя на тот же скрипт в Delphi, в котором я мало-мальски разбираюсь, понял, что код скрипта минимален. Проблема в том, что нет времени разбираться в синтаксисе MikroTik.
Ребят, если для кого не составит труда, переделайте пожалуйста любой из предложенных скриптов под микротик. Мне необходима интеграция в The Dude для оповещения админов о пропаже связи. Если кто-то готов пройти путь до конца, т.е. реализовать задачу так, чтобы дудка отправляла СМСки типа "Упал WEBSERVER, Billig, ESXi, Baza5G в 15:34...", готов отблагодарить символической суммой денег...


Kolivan
Сообщения: 16
Зарегистрирован: 20 мар 2012, 13:10
Откуда: Оренбург
Контактная информация:

Собственно сам отвечаю на свой вопрос:
В микротике создаём скрипт с названием SMSSend

Код: Выделить всё

:global SMSSend do={
:local text;
:set text ($device . " - " . $status . "+" . [/system clock get time])
tool fetch url="http://www.smspilot.ru/api.php\?send=$text&to=79123456789&from=NetMonitoring&apikey=XXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZXXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZ"
}

Далее по аналогии с этой темой, начиная со слов "Помещаем ее в автозагрузку при старте микротика..."


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

В Вашем скрипте:

:global SMSSend do={
:local text;
:set text ($device . " - " . $status . "+" . [/system clock get time])
tool fetch url="http://www.smspilot.ru/api.php\?send=$text&to=79123456789&from=NetMonitoring&apikey=XXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZXXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZ"
}

переменные $device и $status сначала объявить и наполнить нужно чем то ... Рубрика то называется "готовые скрипты", а не "эфимерные примеры". Может smspilot.ru и работает так, но вряд ли и скорее всего нужно вызывать в этом случае fetch методом post с указанием параметров http-method и http-data (новые параметры этой команды, в Wiki нет, в терминале видны). По крайней мере sms.ru у меня работает только так.
И не надо $text в функции формировать. Это же функция ! Формируем $text как параметр функции без "$" в другом скрипте и вызываем нашу функцию. Вот тогда это будет "функция отправки произвольного СМС через API", а не черт знает что.


:global SMSAPI do={
/tool fetch url="https://sms.ru/sms/send\?api_id=$apikey" mode=https http-method=post http-data="&to=$phoneSMS&msg=$text&json=1" dst-path="answer.txt"
:delay 2s;
:local SMSanswer [/file get answer.txt contents];
/file remove answer.txt;
:return $SMSanswer;
}

А вызов функции из других скриптов такой:

:global SMSAPI;
:local SMStext ("$[/system identity get name] $[/system clock get time] $[/system clock get date] ONLINE");
:local SMSanswer [$SMSAPI apikey="Ваш apikey на sms.ru" phoneSMS="Номер телефона для отправки с кодом страны без плюса" text=$SMStext];

Вот так будет работать ! В переменной $SMSanswer будет ответ сервиса sms.ru, который можно также программно анализировать.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

На сервисе sms.ru можно зарегистрировать несколько аккаунтов, если у Вас есть несколько Сим-карт. Регистрация каждого аккаунта проводится на одну Сим-карту (номер телефона). На каждую Сим-карту дается в сутки 5 бесплатных СМС. Если не хочется платить можно загнать apikey каждого полученного аккаунта в массив и выбирать из них по пять SМS Микротиком по мере расходования отправки сообщений роутером через функцию, представленную выше. Таким образом Вы получите n*5 бесплатных СМС, где n-число Ваших Сим-карт.
Можно использовать для регистрации Сим-карты родственников. С них ничего не убудет - Вам плюс пять бесплатных СМС для рассылки с каждого аккаунта.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить