Для сохранение входящих и отправленных смс в файл в программе 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

Файлы для скачивания

cmd файлы в zip

См. также

В bat файле вывести текст в Unicode

bat файлы записи смс в файл
Метки:    

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *