Работа с smsd на роутерах iRZ серии R0, R2, R4

Эта статья актуальна для роутеров с установленным встроенным ПО версии v20.4(2022-07-14) и выше.


smsd - сервис для приёма и отправки SMS на роутерах iRZ


Что делает smsd?


- Периодически опрашивает модем на наличие новых SMS

- Считывает SMS из памяти SIM-карты

- Считывает SMS из памяти модема

- Декодирует SMS, экспортирует переменные среды и по очереди запускает скрипты, находящиеся в директории

/etc/uagent.d/smsd/ Порядок сортировки скриптов - алфавитный (по имени)

- Удаляет принятые SMS из памяти SIM/модема

- Получает SMS, передваваемые на отправку через утилиту send-sms

- Перемещает SMS в очередь "на отправку", дожидается когда модем освободится, и затем передаёт SMS. Если отправка невозможна, переносит SMS в конец очереди и повторяет попытку позже.


    Приём SMS

    Переменные окружения для скриптов из /etc/uagent.d/smsd/

    DEVICE - tty интерфейс модема, с которого считана SMS, например '/dev/ttyMODEM1_AUX'

    FROM - номер телефона в формате <код страны><код оператора><номер телефона>, без + и без 8

    MODEM - имя модема из конфига, например 'modem1'

    TEXT- декодированый текст сообщения

    REPR - всё вышеперечисленное в json формате, например

    '{"FROM":"7XXXYYYZZQQ","TEXT":"Test message","MODEM":"modem1","DEVICE":"/dev/ttyMODEM1_AUX"}'
    PWD='/'


    Добавление собственных скриптов обработки SMS

    Для добавления собственных обработчиков достаточно положить скрипт в /etc/uagent.d/smsd/

    Пример скрипта, который будет сохранять SMS и вызывать стороннее приложение /usr/bin/external.bin с аргументами FROM и TEXT


    cat <<EOF > /etc/uagent.d/smsd/00-custom.sh     # начало записи скрипта в файл
    #!/bin/sh                                       # указание интерпретатора
    TEMP_DIR="/var/sms/incoming"                    # запись в переменную строки пути временной директории
    mkdir -p $TEMP_DIR                              # создание временной директории, если ее нет
    DATE="$(date +%Y-%m-%d_%H-%M-%S)"               # запись в переменную строки текущей даты, например 2022-09-13_13-25-27
    FNAME="${TEMP_DIR}/${FROM}_${DATE}.txt"         # запись в переменную пути временного файла
    echo "FROM=$FROM" > $FNAME                      # создание временного файла и запись в него строки с номером адресата
    echo "TEXT=\"$TEXT\"" >> $FNAME                 # дописывание во временный файл текста сообщения
    /usr/bin/external.bin "$FROM" "$TEXT"           # запуск внешней программы с аргументами номера и текста сообщения
    EOF                                             # конец записи скрипта в файл


    Отправка SMS

    Пример отправки сообщения через утилиту send-sms


    send-sms [OPTIONS] RECIPIENT TEXT0 [TEXT1:...]

    Для отправки SMS с конкретного модуля используется ключ -m с указанием номера модема:

    send-sms -m 1 7XXXYYYZZQQ Test message

    Эта статья помогла Вам?

    Сервис поддержки клиентов работает на платформе UserEcho