Отправка и прием 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__
Остались вопросы?
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.