Для сохранение входящих и отправленных смс в файл в программе nhsms можно использовать командные файлы (bat файлы).
Командные файлы прописываются в конфигурации nhsms и автоматически вызываются при отправке/приёме смс.
Эта функция будет полезна:
- для записи смс, отправленных в режиме базы данных (режим базы данных присутствует, начиная с версии nhsms v3.0.0), так как встроенная запись в файл работает только в режиме без базы данных
- для записи смс в каком-то определённом формате файла
Далее приводятся примеры bat файлов и информация, как их добавить в конфигурацию nhsms.
Обработка отправленных смс
Написание командного файла
Командный файл запускается программой nhsms, и параметры сообщения доступны в виде переменных среды окружения (environment).
Например, проверить тип смс можно используя переменную sms_type:
rem Обрабатываем только исходящие СМС if not "%sms_type%" == "SMS-SUBMIT" exit /b 0
Переменная sms_resultcode даёт возможность проверить результат отправки, чтобы обработать только смс с ошибками:
rem Обрабатываем только смс с ошибками отправки if not "%sms_type%" == "SMS-SUBMIT" exit /b 0 if "%sms_resultcode%" == "0" exit /b 0 rem дальнейшая обработка...
Запись смс в файл в одну строку на сообщение можно организовать перенаправлением echo
вывода переменных
sms_phone,
sms_messagetext,
sms_senttime,
sms_id,
sms_ResultCode:
rem Запись в файл в одну строку echo "%sms_phone%" "%sms_messagetext%" "%sms_senttime%" "%sms_id%" "%sms_ResultCode%" >> sms-submit.txt
Запись смс в формате INI файла — один параметр на строку:
rem Запись в файл в формате INI файла echo [%sms_id%] >> sms-submit-ini-format.txt echo Phone=%sms_phone% >> sms-submit-ini-format.txt echo Text=%sms_messagetext% >> sms-submit-ini-format.txt echo SentTime=%sms_senttime% >> sms-submit-ini-format.txt echo ResultCode=%sms_ResultCode% >> sms-submit-ini-format.txt echo. >> sms-submit-ini-format.txt
Командный файл даёт гибкость обработки информации, например, можно сохранять в разные файлы в зависимости от номера телефона, результата отправки и т.д. Для этого можно просто формировать имя файла из тех же переменных
echo %sms_messagetext% > "%sms_phone%.txt"
Прописывание командного файла в конфигурации nhsms
Созданный bat/cmd файл необходимо прописать в активной конфигурации программы nhsms, для этого необходимо в редакторе конфигурации открыть страницу Исходящие сообщения и добавить команду запуска.
Если указать просто путь и имя bat/cmd файла, то выходная информация будет записана в кодировке OEM — для русской Windows это кодировка 866.
Чтобы файлы писались в Unicode, необходимо записать команду с ключами /u /c (подробнее см. В bat файле вывести текст в Unicode):
cmd.exe /u /c scripts\save_to_text\sms-submit.cmd
Запись считанных смс
Написание командного файла
Параметры сообщения доступны в виде переменных среды окружения (environment).
Необходимо проверять тип принятого сообщения, потому что это может быть как смс, так и отчёт о статусе сообщения.
rem Обрабатываем только входящие СМС if not "%sms_type%" == "SMS-DELIVER" exit /b 0
Можно отфильтровать определенного отправителя с помощью sms_sender, например, номер, используемый для тестирования:
rem Пример: фильтрация отправителя по номеру if not "%sms_sender%" == "79161111111" exit /b 0
Запись в файл производится командой echo
с оператором перенаправления в файл. Этот пример показывает запись входящих сообщений в общий файл в виде списка, по одному сообщению на строку. Такой файл удобен для просмотра, но для машинной обработки не очень подходит, потому что нет отметки, обработана ли строка.
rem Пример: сохранение в общий файл echo %sms_senttime% %sms_sender% "%sms_messagetext%" >> sms-deliver.txt
Для записи каждого сообщения в отдельный файл также используется перенаправление echo
в файл, но для каждого сообщения формируется свой файл, называемый по дате/времени и номеру отправителя. Этот вариант не так удобен для просмотра, зато он удобнее для обработки входящих файлов — какая-то программа или скрипт обрабатывает файлы по очереди и удаляет их.
rem Пример: сохранение каждого смс в отдельный файл, по дате/времени и номеру echo %sms_messagetext% > "%sms_senttime_year%-%sms_senttime_month%-%sms_senttime_day% %sms_senttime_hour%-%sms_senttime_min%-%sms_senttime_sec% %sms_sender%.txt"
Можно добавить в bat файл проверку переменной sms_messagetext и, в зависимости от текста входящего смс, выполнять ту или иную команду:
rem Примеры: проверка текста сообщения if "%sms_messagetext%" == "Restart" nhss -r if "%sms_messagetext%" == "Rebuild" start D:\Dev\rebuild.cmd
Прописывание командного файла в конфигурации nhsms
Созданный bat/cmd файл необходимо прописать в активной конфигурации программы nhsms, для этого необходимо в редакторе конфигурации открыть страницу Входящие сообщения и добавить команду запуска.
Если указать просто путь и имя bat/cmd файла, то выходная информация будет записана в кодировке OEM — для русской Windows это кодировка 866.
Чтобы файлы писались в Unicode, необходимо записать команду с ключами /u /c (подробнее см. В bat файле вывести текст в Unicode):
cmd.exe /u /c scripts\save_to_text\sms-submit.cmd
Файлы для скачивания
См. также
В bat файле вывести текст в Unicode