Страница 1 из 1

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

Добавлено: 01 июл 2017, 11:24
Kolivan
Здравствуйте. В моём случае это 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...", готов отблагодарить символической суммой денег...

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

Добавлено: 06 июл 2017, 20:34
Kolivan
Собственно сам отвечаю на свой вопрос:
В микротике создаём скрипт с названием 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"
}

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

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

Добавлено: 18 дек 2017, 22:54
Sertik
В Вашем скрипте:

: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, который можно также программно анализировать.

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

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