Инструкция по работе с SMS на роутерах iRZ

#роутеры #20.x

Отправка SMS

В роутерах iRZ есть несколько способов отправки смс для различных ситуаций. Рассмотрим три способа отправить SMS с помощью роутера.

Способ №1: отправка из пункта меню Send SMS

В данном способе необходимо перейти в раздел Tools → Send SMS и вписать в поле Recipient Phone Number номер телефона получателя SMS, а в поле Message – желаемый текст. После нажать кнопку Send.

Одновременно можно отправить SMS только на один номер телефона.

Recipient Phone Number

Способ №2: отправка по событию на GPIO порту

В разделе меню Tools → GPIO настроить цифровые порты ввода-вывода на реагирование изменения их состояния с отправкой смс на указанный номер.

Роутер может реагировать:

  • на появление напряжения на указанном порту

  • на пропажу напряжения

  • на оба этих события

Выбор регулируется в столбце Trigger.

Nastroit porty GPIO

Способ №3: отправка посредством web api роутера

Для отправки сообщения необходимо выполнить POST запрос по протоколу HTTP на адрес роутера к URI /api/sendsms и передать в теле запроса JSON объект вида:

"recipient": "+79991234567",
"message": "test\n"

где:
recipient - номер получателя,
message - текст сообщение.

Данные необходимо передавать в кодировке utf-8.

В ответ роутер сообщит об отправке сообщения JSON-объектом вида:

{
"result": "ok",
"_board": {
"platform": "irz_ra01",
"name": "RU11w"
}
}

где result - результат отправки: ok или fail

Пример работы через утилиту curl:

# curl -X POST http://root:root@192.168.1.1/api/sendsms -d '{"recipient": "+79991234567", "message": "test\n=)"}'

Ответ:

{"result": "ok", "_board": { "platform": "irz_ra01", "name": "RU11w" }}

Для операционных систем семейства WINDOWS так же есть утилита curl, но синтаксис команды выглядит по-другому:

curl -H "Content-Type: application/json" -X POST http://root:root@192.168.1.1/api/sendsms -d "{\"recipient\": \"+79111234567\", \"message\": \"test\"}"
Данный метод тестировался на windows 10 и утилите curl с сайта curl.com ver.8. В других версиях windows с другими версиями утилиты curl синтаксис может не совпадать.

Получение SMS

В роутерах iRZ нет возможности просмотра SMS-сообщений через веб-интерфейс. Читать входящие SMS можно в логе роутера, либо записывать SMS в файл.

Действия следует выполнять из консоли роутера по протоколу SSH или Telnet, подключившись с помощью утилит: putty, winscp (протокол scp).

  1. Создать на роутере скрипт /etc/uagent.d/smsd/01-save-sms со следующим содержанием:

#!/bin/sh
# "$FROM" "$TEXT" "$MODEM" "$DEVICE"
DATE="$(date +%F_%T)"
FILE="/opt/sms/incoming-${FROM}-$DATE"
mkdir -p /opt/sms/
echo "From: $FROM" > $FILE
echo "Date: $DATE" >> $FILE
echo -en "Message: $TEXT" >> $FILE
echo "===END===" >> $FILE

Этот скрипт предназначен для сохранения входящих сообщений в нестираемый при обновлении и сбросе настроек раздел /opt

Не забывайте иногда очищать этот раздел!
  1. Аналогичным образом добавить скрипт /www/api/sms для отображения входящих SMS в веб-интерфейсе:

#!/bin/sh

board=$(cat /tmp/sysinfo/board_name)

set_error(){
  case "$1" in
    404)  code="404 Not Found" ;;
    406)  code="406 Not Acceptable" ;;
    409)  code="409 Conflict" ;;
    *)    code="400 Bad Request" ;;
 esac

  echo "Status: $code"
  echo ""
  echo -e "$2"

  exit 1
}

set_header(){
  echo "Content-type: text/plain; charset=utf-8"
  echo ""
}

set_header
cat /opt/sms/incoming* 2>/dev/null
Важно не забыть сделать скрипт исполняемым:
chmod +x /www/api/sms
  1. После перехода в браузере по адресу https://192.168.1.1/api/sms откроется страница, на которой будут доступны SMS, полученные роутером.