В отдельных случаях, когда возможностей WNAM по отправке СМС через провайдера недостаточно, то есть не срабатывают штатные интеграции через API провайдеров, SMPP-подключение, отправка через HTTP GET/POST запросы, возможно реализовать полностью управляемый процесс отправки СМС написанием скрипта на стороне сервера.
Для этого в разделе выбора метода авторизации укажите "Локальный скрипт", и укажите полный путь до него в поле "Заголовок". Поля Логин и Пароль заполнять не требуется:
Скрипт будет вызван сервером 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-порт.