Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    Отправка SMS с символами GSM7

    Отправка SMS с символами GSM7

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Отправка SMS с символами GSM7, RouterOS
     
    dmke
    Guest
    #1
    0
    21.02.2022 13:00:00
    Привет! Я пытаюсь отправить SMS через RBSXTR (RouterOS v7.1.3) по API (с использованием библиотеки gopkg.in/routeros.v2 на Go). Большая часть работает, но при отправке текста «Hellö!» происходит ошибка — приходит просто «Hell!» (номер телефона я замаскировал по понятным причинам):

    // опускаю обработку ошибок для краткости  
    client, _ := routeros.Dial("192.168.0.123", "api", "apipassword")  
    client.Run("/tool/sms/send", "=port=lte1", "=phone-number=+4917611111111", "=message=Hellö!")  

    В tcpdump я вижу, что запрос API содержит символ ö (0xC3B6 в UTF-8 кодировке):

    В логах встречаются такие записи:  
    12:34:48 lte,async lte1: sent AT+CMGS=17\r  
    12:34:48 lte,async lte1: sent 0021000D91947116111111F1001105C8329B1D02\0x1a  
    12:34:49 lte,async,event lte1: +CMGS: 65  
    12:34:49 lte,async lte1: rcvd +CMGS: 65  
    12:34:49 lte,async lte1: rcvd OK  
    12:34:50 lte,async,event lte1: +CDS: 27\r  
    12:34:50 lte,async,event 079194710600400706410d91947116111111f12220122143354022201221­4345400000  

    CMGS PDU 0021000D91947116111111F1001105C8329B1D02 уже содержит только сообщение «Hell!».  

    Согласно GSM спецификации (3GPP TS 23.038, «Alphabets and language-specific information», § 6.2.1 GSM 7 bit Default Alphabet, стр. 20), символ ö должен кодироваться как 0x7C (до упаковки и полуоктального кодирования).  

    В одном посте от 2012 года предлагается преобразовать строку сообщения в Windows-1252, но и это не сработало (ö = 0xF6).  

    По моему мнению, команда /tool/sms/send производит очистку входных данных и вырезает этот символ. Есть ли способ обойти это?  

    Я также пробовал напрямую отправлять низкоуровневую команду AT+CMGS через /interface/lte/at-chat, но не смог заставить маршрутизатор принять команду — не понял, как передать порт LTE в качестве аргумента.
     
     
     
    dmke
    Guest
    #2
    0
    08.03.2022 18:49:00
    По сути, в строковый тип ROS вставляешь одиночные 8-битные символы, используя экранирование "\" с последующим 8-битным шестнадцатеричным кодом, например, “\20\20\20” (три пробела). Спасибо за совет, попробую так сделать, если ещё доведётся отправлять SMS через SXT. Пока что я сменил настройку на RPi с дешёвым LTE/USB модемом Huawei. Не думаю, что это будет работать круглосуточно без сбоев, но мне нужно отправлять максимум 50 сообщений в день без жёстких временных ограничений. Зато у меня есть простой последовательный консольный порт, и я могу «просто» отправлять обычные AT-команды.
     
     
     
    Amm0
    Guest
    #3
    0
    08.03.2022 22:16:00
    LOL, «всего лишь»… Ну, если «всего лишь» открыть AT-канал на SXT через System>Port>Remote Access, И найти какой-то скрипт на Linux для отправки AT-команд для SMS, И подключить TCP-порт как /dev, чтобы связать удалённый TCP-порт с «последовательным портом». Тогда, наверное, RPi сможет через какой-то Linux-скрипт с AT-командами для SMS подключиться к SXT через TCP-to-serial AT. Вот что-то вроде этого открывает AT-порт (нужно подстроить канал, порт, tcp-порт и так далее), но это «всего лишь» лёгкая часть: /port remote-access add port=usb1 protocol=raw channel=1 tcp-port=9999 Удалённый TCP-сокет к последовательному AT-каналу не будет делать никакого кодирования — это ваш плюс. А вот именно Mikrotik’ов at-chat «очищает» команды. Но да, найти или написать Linux-скрипт с AT-командами для SMS — задача не из приятных.
     
     
     
    dmke
    Guest
    #4
    0
    09.03.2022 14:41:00
    Я никогда не говорил, что это просто. Большую часть сложности я могу вынести в библиотечный код (за последний месяц я нашёл и дополнил https://github.com/xlab/at), и в любом случае мне нужен прокси перед этим для авторизации, очередей сообщений и обратных вызовов уведомлений о доставке. С этого момента затраты по сложности и усилиям при работе с последовательным интерфейсом и API RouterOS примерно одинаковы. Я даже не знал, что это возможно.
     
     
     
    Amm0
    Guest
    #5
    0
    09.03.2022 15:30:00
    Настоящая кроличья нора. Но почему я упомянул «удалённый доступ» — в принципе можно запускать Go-код на RPi, а библиотека xlab/at будет использовать TCP-порт, который открывает AT-канал Mikrotik с помощью указанной выше команды. Я не знаю Go и эту библиотеку, но, кажется, можно преобразовать TCP-сокет в os.File, который использует xlab/at. Когда Mikrotik добавит поддержку контейнеров, ваш код теоретически сможет работать как Docker на Mikrotik (хотя, скорее всего, придётся всё равно использовать TCP-порт удалённого доступа, смотрите http://forum.mikrotik.com/t/v7-1rc3-adds-container-support/151712/251).

    Со стороны Mikrotik нужно убедиться, что есть AT-канал, который можно открыть через /port remote-access. Ещё есть /system/serial-terminal port=usb1 channel=1 — его можно использовать, чтобы проверить, работают ли вообще AT-команды. Опять же, поиграйтесь с port/channel, а команда /port print покажет количество каналов модема в SXT. Некоторые каналы — это AT, другие могут быть NMEA (GPS) или «Qualcomm Debug» — всё зависит от версии RouterOS, типа модема и режима работы. Названия портов иногда usb2 и так далее.

    Если использовать SXT только для SMS и работы с AT, то, возможно, можно переключить /interface/lte/settings/set mode=serial, это даст вам больше портов (но при этом потеряете LTE-интерфейс на Mikrotik). Я точно не вижу, как это может работать, но, в принципе, можно попытаться сделать «проксирование» модуля LTE-модема через последовательный порт в TCP. Насчёт скорости — не знаю.
     
     
     
    dmke
    Guest
    #6
    0
    09.03.2022 18:21:00
    Я учту это, спасибо за ваши замечания.
     
     
     
    Amm0
    Guest
    #7
    0
    13.03.2022 17:57:00
    @dmke, я видел одну недавнюю тему на этом форуме, не совсем такая же проблема, но вспомнил про твои сложности с SMS. Оказывается, кто-то написал логику парсинга PDU и i18n кодировок прямо в скрипте RouterOS — настоящий монстр: http://forum.mikrotik.com/t/script-for-sending-incoming-sms-to-mail-with-full-parsing/140125/1. У тебя на самом деле обратная ситуация, но, возможно, какой-то из этих помощников по кодировкам можно использовать, чтобы как-то сгенерировать правильную последовательность для «at-chat». Правда, я Go не знаю, но это всё равно кажется проще.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры