Выпущена новая версия nhsms v3.1.0 с изменениями в записи информации об смс.

Новые возможности

Новый параметр sms_custom_id

Для возможности идентификации отправленных смс при отправке через текстовые файлы добавлен новый параметр sms_custom_id, который может быть использован как пользовательский идентификатор смс сообщения.

  • При считывании смс из файла программа заносит в sms_custom_id значение, указанное в квадратных скобках.
  • При запуске скрипта после отправки смс программа передаёт это значение, позволяя скрипту связать отправленное смс с какими-то пользовательскими данными.

Исправления

Исправление sms_referencenumber для отправленных смс

Исправлена работа параметра sms_referencenumber в скриптах обработки отправленных смс (SMS-SUBMIT) для возможности связывания отчетов о доставке (SMS-STATUS-REPORT) с отправленными смс (SMS-SUBMIT): параметр передаётся в скрипт обработки отправленных смс.

Исправление sms_resultcode и sms_resulttext для длинных смс

Переменные sms_resultcode и sms_resulttext теперь формируются и для длинных смс, со значениями:

  • 0 – все части длинного смс отправлены успешно
  • 536870935 – одна или несколько частей длинного смс не были отправлены из-за ошибки
  • 536870936 – все части длинного смс не были отправлены из-за ошибки

Обновление bat файлов для записи смс в файлы

Обновлены/добавлены bat файлы для записи смс сообщений в текстовые файлы:

  • sms-submit.cmd – файл для записи отправленных смс, можно указывать файл для сохранения параметром
  • sms-submit-error.cmd – файл для особой обработки с ошибок отправки, имеет фильтрацию по коду отправки
  • sms-deliver.cmd – файл для сохранения входящих смс
  • sms-status.cmd – файл для сохранения или обработки отчетов о статусе доставки отправленных смс
  • sms-all-details.cmd – файл, использующий команду set для вывода всех переменных, относящихся к sms

Исправление кодов возврата при отправки через параметры запуска

В v3.1.0.43 исправлено формирование кода возврата программы nhsms.exe/nhsmscl.exe для варианта запуска с отправкой смс через параметр командной строки. Подробнее см. возвращается 0, независимо от результатов выполнения

Исправление даты для SQL Server

В v3.1.0.43 исправлена запись даты полей SentTime и DeliveredTime в режиме с базой данных при использовании SQL Server. Подробнее см. дата в режиме БД SQL

Исправление USSD запросов через файлы в режиме БД

В v3.1.0.43 исправлена работа USSD запросов, отправляемых через текстовые файлы в режиме с базой данных.

Загрузка и установка

nhsms v3.1.0

nhsms v3.1.0: 41 комментарий

  • 09.09.2017 в 17:10
    Постоянная ссылка

    Добрый день.
    Сегодня при отправке СМС в ответ почти на все приходит следующее:
    99 Ошибка, СМСЦ прекратил передачу СМС.
    Подскажите, что это может значить? СМСЦ просто не захотел или что-то ему не понравилось, или все абоненты вне зоны действия и он перестал, т.к. закончилось время хранения СМС у оператора?

    Ответить
    • 09.09.2017 в 19:17
      Постоянная ссылка

      У меня вчера и сегодня, примерно треть получателей смски не получили с таким же статусом. Отправлено около 30 сообщений. Мой оператор теле2. В основном, не получили абоненты Мегафона. Может из-за магнитных бурь? Но так как некоторые, таки, получили, то проблема не в nhsms.

      Ответить
    • 09.09.2017 в 19:38
      Постоянная ссылка

      Может, и оператор по какой-то причине блокирует.
      Сейчас вспомнил, у меня был случай, когда я отлаживал USSD запросы в nhsms, и за час отправил где-то сто запросов на баланс и ещё каких-то, и через час на этом номере перестали выполняться любые USSD запросы – каждый раз было сообщение об ошибке. Наутро USSD заработало нормально.

      Ответить
  • 30.08.2017 в 19:55
    Постоянная ссылка

    Доброго времени суток. Пытаюсь прикрутить отправку из командной строки к стандартной одинэсной процедуре RunApp(), умеющей считывать коды возврата. Качнул наугад несколько версий — 2.8.1, 2.14.0.30, 3.0.3.38, 3.1.0.40. С завидным упорством возвращается 0, независимо от результатов выполнения (включая отсутствующий модем).

    Ваши предложения? Заранее благодарен.

    Ответить
    • 31.08.2017 в 12:42
      Постоянная ссылка

      Добрый день, посмотрим, почему так получается. Вообще, больше рекомендуется использовать отправку смс через текстовые файлы или базу данных – в этим режимах больше возможностей
      http://nhutils.ru/blog/nhsms/usage/

      Ответить
  • 22.08.2017 в 20:00
    Постоянная ссылка

    Вчера решил переустановить программу (до этого два года сидел на v2.14.0.30) чтобы воспользоваться функциями БД.
    При отправке USSD в БД не меняется статус сообщения — сначала Q — поставлено в очередь, затем S — идет отправка. И все!
    Ну и ответ ussd не вносится в БД. Сейчас там пусто.
    Проверил на v3.1.0.38 — 39 — 40

    Ответить
      • 23.08.2017 в 16:53
        Постоянная ссылка

        Спасибо, заработало!

        Еще прошу учесть в будущих релизах (это не ошибка, а пожелание):
        Сейчас в БД число частей одного SMS пишется в колонку «Notes» как «Parts=4»
        Если Parts вывести в отдельную колонку, то одним запросом можно получить число отправленных в день сообщений, делая отбор по дате и суммируя Parts.
        В Parts должны попадать только тарифицируемые сообщения (без входящих и ussd).

        Ответить
        • 23.08.2017 в 22:55
          Постоянная ссылка

          Насколько точным будет это значение, если в него будут попадать и неотправленные (из-за ошибок) смс (или их части), и бесплатные смс (например, служебные на короткий номер 111 для МТС)?
          И для чего потом использовать это значение? Если для контроля превышения лимитов, то в будущих версиях будет специальная функция для этого, как писал здесь — http://nhutils.ru/forum/viewtopic.php?f=3&t=2893&p=4028

          Ответить
          • 24.08.2017 в 00:17
            Постоянная ссылка

            Да, это мои «хотелки».
            Во-первых, провайдер считает отправленные сообщения, а не доставленные. Как обрабатываются короткие номера — нужно тестировать, но, скорее всего, также как и на длинные.
            Во-вторых, сейчас отправил длинное сообщение (4 части) на свой городской телефон, на который sms точно не может быть доставлена. Счетчик провайдера его легко тарифицировал. Программа вернула статус «T-отправлено».
            Кстати, на версиях с БД (последние 3-4 релиза) я ни разу не видел статуса «доставлено». Может тупит мой Теле2. Но, возможно, программа его не возвращает. На версии 2.14 в файл сохранялось «Сообщение доставлено».

          • 24.08.2017 в 15:34
            Постоянная ссылка

            Со статусом доставки разобрался. Не стояла галочка: «Запрос отчета о статусе».

          • 28.08.2017 в 15:42
            Постоянная ссылка

            Добавлю о статусе доставки в БД версии:
            сейчас статус проверяется только в момент запуска программы.
            Висящая в трее программа за пять часов статусы не обновила ни разу.
            Закрыл -> открыл: ура, статусы обновлены!

          • 29.08.2017 в 15:11
            Постоянная ссылка

            Сейчас проверил – статус отправленного меняется с T (sent) на D (Delivered) сразу после прихода отчёта SMS-STATUS-REPORT.

          • 29.08.2017 в 15:56
            Постоянная ссылка

            Да, они обновляются сразу, как только приходят. Но статусы SMS-STATUS-REPORT у меня приходят только в момент запуска программы.
            Сколь долго в запущенном виде NHSMS не будет висеть в трее — статусы не обновляются.
            Уточню: программа с БД, запущена не как сервис и свернута в трей. Система XP.
            Возможно сервис работает иначе. Но я пока ее настраиваю на своем компьютере. Потом она переедет на другой комп.

          • 29.08.2017 в 16:09
            Постоянная ссылка

            Я проверяю на nhsms.exe.
            Если программа получает отчеты о статусе только на запуске (когда программа делает опрос модема на наличие входящих сообщений), то возможно, что настроено получение смс по уведомлению, но оно не работает корректно. В этом случае имеет смысл поменяеть режим на опрос. Настраивается здесь.

  • 18.08.2017 в 14:14
    Постоянная ссылка

    Добрый день.
    Скачал версию 3.1.0.39 службы. Установил. Запустил.
    Входящие СМС и отчеты о доставке не формируют файлы, т.к. в скриптах sms-deliver.cmd и sms-status.cmd все переменные имеют пустое значение, в том числе %sms_type%
    Может надо перезагрузить ПК после установки службы или еще что-то сделать?

    Установил обратно предыдущую версию 3.0.2.37 без перезагрузки, все стало работать как до обновления.

    Ответить
    • 20.08.2017 в 19:26
      Постоянная ссылка

      Добрый день, есть проблема со входящими, завтра исправлю. С отчётами пока проблема не подтвердилась, завтра посмотрю ещё.

      Ответить
      • 22.08.2017 в 08:43
        Постоянная ссылка

        Добрый день. К сожалению ничего не изменилось. По-прежнему в скриптах sms-deliver.cmd и sms-status.cmd все переменные окружения имеют пустое значение.
        Может быть вам какие-то файлы выслать, например, nhsms.ini?

        Ответить
          • 22.08.2017 в 15:31
            Постоянная ссылка

            После установки службы последней версии отправил смс на симку своего модема. В файле sms-deliver.txt ничего не появилось.
            Заремарил строку if not «%sms_type%» == «SMS-DELIVER» exit /b 0
            в файле sms-deliver.cmd и после отправки очередной смс на модем
            в файле sms-deliver.txt появилась строка — без скобок конечно же.
            Т.е. скрипт запускается и отрабатывает, но пишутся пустые значения.
            Аналогично и для командника sms-status.cmd

            Для установки новой версии скачал nhsms-v3.1.0.40-service-setup.exe
            В процессе установки блымнуло cmd-окно и затем появилось окно с ошибкой «setx failed» от Windows Script Host.
            Закрыл окно и настроил автозапуск службы.
            Файлы nhsmssvc.exe и nhsmscfg.exe имеет версию 3.1.0.40
            Подскажите, какие еще exe-файлы необходимо проверить на версию?

            п.с. после запуска nhsmscfg.exe и донастройки запуска sms-status.cmd в файле nhsms.ini внизу обновился блок
            [Version]
            Configuration=v3.1.0.40

            Вроде все проверил.

          • 22.08.2017 в 15:34
            Постоянная ссылка

            Не удалось в предущем посте передать пустую строку из файла sms-deliver.txt
            Опишу словами: пробел пробел кавычка кавычка пробел

          • 22.08.2017 в 15:36
            Постоянная ссылка

            Собственно сам командник sms-deliver.cmd:

            @echo off

            rem Обрабатываем только входящие СМС
            if not «%sms_type%» == «SMS-DELIVER» exit /b 0

            rem Пример: фильтрация отправителя
            if «%sms_sender%» == «79161111111» exit /b 0

            set filename=%1
            if «%filename%» == «» set filename=sms-deliver.txt

            rem Пример: сохранение в общий файл
            echo %sms_senttime% %sms_sender% «%sms_messagetext%» >> «%filename%»

            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»

            rem Примеры: проверка текста сообщения
            if «%sms_messagetext%» == «Restart» nhss -r
            if «%sms_messagetext%» == «Rebuild» start D:\Dev\rebuild.cmd

            rem Дальнейшая обработка…

          • 22.08.2017 в 20:44
            Постоянная ссылка

            Запуск происходит я так понимаю по инициативе службы в соответствии с настройками из nhsms.ini
            Вот фрагмент из этого файла:
            [Read]
            ReadingTextMessages=scanning
            ReadMaxIntervalMs=10000
            MessageStorage=
            CommandLine0=scripts\save_to_text\sms-deliver.cmd
            CommandLine1=scripts\save_to_text\sms-status.cmd

          • 22.08.2017 в 20:47
            Постоянная ссылка

            Вот фрагмент из файла nhsms.out
            ……………
            2017-08-22 08:39:38 считываю из ‘MT’…
            2017-08-22 08:39:38 считываю из ‘SM’…
            2017-08-22 08:39:41 отчет о статусе сообщения для 7XXXXXXXXXX отправлено 2017-08-22 08:39:35, время 2017-08-22 08:39:38 — Сообщение доставлено
            2017-08-22 08:39:41 Запускаю «scripts\save_to_text\sms-deliver.cmd»… OK
            2017-08-22 08:39:41 Запускаю «scripts\save_to_text\sms-status.cmd»… OK
            2017-08-22 08:39:44 считываю из ‘SR’…
            2017-08-22 08:39:45 считано сообщений: 1
            2017-08-22 08:39:55 Считываю входящие сообщения…
            2017-08-22 08:39:55 считываю из ‘ME’…
            ……………

          • 23.08.2017 в 15:24
            Постоянная ссылка

            Входящие заработали.
            Отчеты тоже, но значения переменных %sms_id% %sms_custom_id% в файле sms-status.txt пустые (выводятся только кавычки).

            Вырезка из sent.sms:
            [5173]
            Phone=7XXXXXXXXXX
            PhoneType=international
            Alert=0
            StatusReportRequest=1
            Text=Тест 8
            Parts=1
            SentTm=2017-08-23 15:13:07
            ResultCode=0
            ResultText=Операция успешно завершена.
            Alphabet=UCS2 (16 bit)
            MessageReference=21

            Вырезка из sms-submit.txt:
            «7XXXXXXXX» «Тест 8» «2017-08-23 15:13:07» «» «0» custom_id=»5173″

            Вырезка из sms-status.txt:
            кавычка кавычка пробел кавычка кавычка 7XXXXXXXXXX «0» «Сообщение доставлено» «2017-08-23 15:13:18»

          • 23.08.2017 в 15:35
            Постоянная ссылка

            Да. Эти переменные %sms_id% и %sms_custom_id% идентифицируют соответствующее отправленное смс и определяются только в режиме с базой данных.

          • 23.08.2017 в 17:09
            Постоянная ссылка

            Все работает. Спасибо. Подскажите, за чисткой БД (access) мы уже сами следим, правильно? А то разрастется бесконтрольно…

          • 23.08.2017 в 22:51
            Постоянная ссылка

            Сейчас программа не делает ничего для очистки устаревшей информации.
            В будущем будет автоматическое удаление старых сообщений по дате. Но сжатие (compress) файла БД останется на администраторе системы.

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

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