SMS шлюз из Mikrotik c LTE интерфейсом

Сегодня SMS всё реже используется в качестве способа общения. За то этот сервис стал весьма популярным инструментом для идентификации и двухфакторной авторизации. Если у вас большой объём исходящих сообщений – то конечно собственным шлюзом с одной сим картой отделаться не получится. А вот для личных целей можно использовать свою сим карту с дешёвым смс пакетом. А я расскажу вам о том, как это сделать максимально просто, имея в наличии Mikrotik с LTE и минимальный веб сервер с поддержкой php.

У меня уже имеется Mikrotik LTaP mini kit, который обеспечивает мне резервный канал, так что мне понадобилось лишь докупить SMS пакет. И нет, отправка SMS никак не мешает раздачи интернета с симки. ;)

Первое, что понадобится для этого – это php класс для работы с api routeros. Его можно взять тут.
Кидаем класс в нужную директорию на вебсервере и создаём рядышком скрипт для отправки.

vi sendtest.php

<?php

require('routeros_api.class.php');

$API = new RouterosAPI();

$API->debug = false;

if ($API->connect('адрес_роутера', 'логин_для_mikrotik', 'пароль')) {

   $ARRAY = $API->comm("/tool/sms/send", array(
		"message"=> "Test message",
		"phone-number" => "+99899XXXXXXX",
		
   ));
	
   print_r($ARRAY);

   $API->disconnect();
}

?>

Со стороны роутера необходимо включить доступ к api

Я использую api без ssl, поскольку роутер и веб сервер у меня находятся в приватной сети и не доступны извне. В случае работы через “мир” необходимо зашифровать соединение.

Создадим группу и пользователя для API с минимальным набором полномочий
Всё готово! Можно проверять. Осталось отредактировать скрипт отправки в соответствии с собственными нуждами. Если ваш скрипт принимает номер телефона в качестве аргумента – рекомендую ограничить формат номера локальной маской, если не хотите получить огромный счёт за международные и платные номера…