artem
22.10.2013
27117

Отправка и прием SMS сообщений с помощью пакета smstools3 и GSM модема

В данной статье будет описан способ организации SMS-шлюза c помощью модема Huawei E1750 и пакета smstools3. Описанные шаги верны для дистрибутива CentOS 5.8. Настройка модема Настройка smstools3

Настройка модема

1. Для переключения устройства в режим модема, воспользуемся инструментом usb_modeswitch. Готовый RPM-пакет есть в репозитории rpmforge, скачиваем, устанавливаем:

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
yum install usb_modeswitch

Добавляем в /etc/usb_modeswitch.conf

DefaultVendor = 0x12d1
DefaultProduct = 0x1001
MessageEndpoint = 0x01
MessageContent = «55534243000000000000000000000011060000000000000000000000000000»

Переключаем устройство в режим модема командой

usb_modeswitch -c /etc/usb_modeswitch.conf

Если usb_modeswitch отработает без ошибок, в системе должно появиться некоторое количество устройств /dev/ttyUSB*. Если этого не произошло, значит драйвер usbserial нужно загружать вручную

modprobe usbserial vendor=0x12d1 product=0x1001

Чтобы не делать этого вручную после каждой перезагрузки, нужно добавить в конфиг udev строку

SYSFS{idVendor}==»12d1″, SYSFS{idProduct}==»1001″, RUN+=»/sbin/modprobe usbserial vendor=0x12d1 product=0x1001″

2. Устанавливаем пакет minicom, настраиваем устройство для постоянной работы в режиме модема

yum install minicom
minicom -s

В «Serial port setup» выставляем значения «Serial Device» — /dev/ttyUSB0, «Bps/Par/Bits» — 38400 8N1. Выбиваем пункт «Save setup as dfl» для сохранения настроек и подключаемся к модему. Посылаем модему команду

AT^U2DIAG=0

Это заставит устройство всегда включаться в режиме модема, не возвращаясь в режим хранилища данных. Использование usb_modeswitch более не понадобится.

Настройка smstools3

1. Скачиваем smstools3 с сайта разработчика, устанавливаем

wget http://smstools3.kekekasvi.com/packages/smstools3-3.1.15.tar.gz
cd smstools3
make install

2. Настройка smstools3

Настройки smstools3 хранятся в файле /etc/smsd.conf. Пример настроек:

devices = GSM1
logfile = /var/log/smsd.log
loglevel = 2

pidfile = /var/run/smsd/smsd.pid
infofile = /var/run/smsd/smsd.working

checkhandler = /opt/sms_to_ucs2.sh
eventhandler = /opt/sms_from_ucs2.sh

[GSM1]
device = /dev/ttyUSB0
baudrate = 115200
init = AT+CPMS=»ME»,»ME»,»ME»
incoming = high

Пояснения:

  • GSM1 — произвольное имя
  • при loglevel равном 2, в лог пишется только информация о запуске/завершении программы. Для начала, лучше поставить сделать значение равным 7 и проверить лог на предмет ошибок.
  • checkhandler — в этом параметре указан путь к скрипту, который будет запускаться каждый раз при отправке сообщения. Путь к файлу сообщения передается в первом параметре, текст скрипта будет приведен ниже.
  • eventhandler — в этом параметре указан путь к скрипту, который будет запускаться каждый раз при получении сообщения. Путь к файлу сообщения передается во втором параметре, текст скрипта будет приведен ниже.
  • init — команды, которые будут отправлены модему перед получением и отправкой сообщений. Команда AT+CPMS казывает, какую память следует использовать для работы с SMS. В данном случае, для всех операций с SMS будет использоваться память модема.
  • incoming — значение high означает, что получение сообщений будет происходить с большим приоритетом, чем отправка. Если это поведение нежелательно, данный параметр указывать не нужно.

3. Скрипты для обработки отправляемых и получаемых SMS сообщений

SMS сообщения, содержащие символы кириллицы, приходят в кодировке UCS2 и отправляться должны в кодировке UCS2.
Отправка SMS:

#!/bin/bash

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

FROM_FILE=»$1″
[ ! -r «$FROM_FILE» ] && exit 1

if grep -q ‘[а-яА-Я]’ $FROM_FILE; then
TMPFILE=$(mktemp /tmp/smsd_XXXXXX)
sed -e ‘/^$/ q’ < «$FROM_FILE» > $TMPFILE
echo ‘Alphabet: Unicode’ >> $TMPFILE
sed -e ‘1,/^$/ d’ < «$FROM_FILE» | iconv -f UTF-8 -t UNICODEBIG >> $TMPFILE
mv $TMPFILE «$FROM_FILE»
fi

Отправлять SMS можно с помощью команды sendsms (входит в пакет smstools3)

sendsms <номер> «<текст>»

Получение SMS, пересылка на почту [email protected]

#!/bin/bash

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

[email protected]
[email protected]
FROM_FILE=»$2″
[ ! -r «$FROM_FILE» ] && exit 1
[[ ! $FROM_FILE == /var/spool/sms/incoming* ]] && exit 0

TEXT=»
CONV=»
if sed -e ‘/^$/ q’ < «$FROM_FILE» | grep -q «^Alphabet: UCS2»; then
CONV=yes
fi

if [ ! «$CONV» ]; then
TEXT=»$(sed -e ‘1,/^$/ d’ < «$FROM_FILE»)»
else
TMPFILE=$(mktemp /tmp/smsd_XXXXXX)
sed -e ‘/^$/ q’ < «$FROM_FILE» | sed -e ‘s/Alphabet: UCS2/Alphabet: UTF-8/g’ > $TMPFILE
TEXT=»$(sed -e ‘1,/^$/ d’ < «$FROM_FILE» | iconv -f UNICODEBIG -t UTF-8)»
echo «$TEXT» >> $TMPFILE
mv $TMPFILE «$FROM_FILE»
fi
NUM=»$(grep -E ‘^From:’ «$FROM_FILE» | sed -e ‘s|^From:[[:space:]]*(.*)|1|’)»

cat <<__eof__ sendmail=»» -t=»» br=»»>From: $MAIL_FROM
To: $MAIL_TO
Subject: Входящее SMS сообщение с номера $NUM
Content-Type: text/plain; charset=»UTF-8″
Content-Transfer-Encoding: 8bit

$TEXT
__EOF__

Книга 101 функция Asterisk
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Скачать книгу
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.