В отдельных случаях, когда возможностей WNAM по отправке СМС-сообщений через провайдера недостаточно (не срабатывают штатные интеграции через API-провайдеров, SMPP-подключение, отправка через HTTP GET/POST запросы), возможно реализовать полностью управляемый процесс отправки СМС-сообщений при помощи написания скрипта на стороне сервера. Для этого в разделе выбора метода авторизации ("Конфигурация" → "Гостевая авторизация" → "Авторизация") необходимо указать "Отправка СМС абоненту", в поле выбора провайдера СМС указать "Локальный скрипт" и указать полный путь до него в поле "Заголовок". Поля "Логин" и "Пароль" заполнять не требуется:

Скрипт будет вызываться сервером WNAM при каждой отправке сообщения. На вход скрипта будет передаваться два аргумента: номер телефона в международном формате (начиная со знака +), и текст сообщения. Для корректной работы способа авторизации необходимо создать на сервере WNAM соответствующий файл скрипта, содержащий (для примера) следующее:

cd /home/wnam/
cat > send_sms.sh 
#!/bin/bash
echo $1 $2 >> /tmp/sms.log
^D

Для того, чтобы скрипт был исполняем, необходимо воспользоваться командой:

chmod +x send_sms.sh 

Далее следует проверить возможность запуска скрипта, используя команду:

./send_sms.sh +7900123456 Message

После успешной проверки запуска этого тестового скрипта следует убедиться, что в лог-файле /tmp/sms.log присутствуют новые строки.

Следует выполнить тестовую отправку сообщения, нажав на кнопку "Тест" в окне настройки метода авторизации и указать номер телефона. В файле /home/wnam/logs/wnam.log появится запись об отправке:

24 мая 2020 20:27:09.878 DEBUG [c.n.w.web.cp.CaptivePortalController:1063] - getTestSend phone=79991234567, site_id=, resend=false, message='Проверка WNAM 24.05.2020, 20:27:02'
24 мая 2020 20:27:09.879 DEBUG [com.netams.wnam.services.SmsService:203] - script sms_to: +79991234567, path=/home/wnam/send_sms.sh, text='Проверка WNAM 24.05.2020, 20:27:02'
24 мая 2020 20:27:09.896 DEBUG [com.netams.wnam.services.SmsService:208] - script sms_to: +79991234567 return 0

Также в файле  /tmp/sms.log появится дополнительная запись:

+79991234567 Проверка WNAM 24.05.2020, 20:27:02

Этот скрипт вы можете модифицировать пожд вашу конкретную реализацию способа отправки. Например, можно удалить из телефонного номера ведущий символ +, если того требует ваш СМС-шлюз, переформатировать текст сообщения, сформировать GET- или POST-запрос для утилиты curl, вызвать системную утилиту, записать какую-либо информацию в лог-файл и т.п. Скрипт также можно реализовать не только на bash, но и на любом языке программирования, который поддерживает ваша операционная система. Главное правило при написании скрипта - файл должен быть исполняемым.

Запуск скрипта ведется от системного пользователя wnam. Будьте внимательны, если скрипту требуются особые разрешения, например запись в файл или tty-порт. В таком случае предоставьте ему дополнительные права через механизмы sudoers или suid-флага.


  • No labels