Меню Рубрики

Установка и настройка kannel

Установка SMPP сервера kannel

Содержание

Общее описание

kannel — это open source wap и sms шлюз, предназначенный для передачи SMS сообщений оператору сотовой связи по протоколу SMPP. Приложение очень гибкое. Возможность настроить модем для передачи SMS тоже имеется. Но самое главное преимущество этого программного обеспечения — это бесплатность и нормальная работа (настроил и забыл).

Конфигурируется kannel через командную строчку, что не является особой проблемой лично для меня (GUI нет). Придется внимательно почитать документацию и забыть про какую-либо поддержку. Приложение c 20 октября 2010 не обновляется создателями.

Мониторинг за работой сервера осуществляется через Web-интерфейс — простое приложение на php, входит в комплект поставки kannel.

Сервер состоит из нескольких демонов (далее по тексту бинарники):

  1. bearerbox — основная часть приложения осуществляющая маршрутизацию сообщений от любых демонов сервера оператору;
  2. smsbox — демон, который позволяет отправлять SMS по протоколу http;
  3. wapbox — wap-шлюз (работает по протоколу UDP, служит для отображения WML страниц и не рассматривается в данной статье);
  1. sqlbox — демон позволяющий отправлять SMS через запись в базу данных MySQL;
  2. opensmppbox — SMPP шлюз для подключения дочерних серверов по протоколу SMPP;

Важно! В данном мануале нет информации по настройке USB модемов для передачи смс.

Установка дополнительного ПО

Сборка (компиляция и установка) kannel

Для установки kannel можно использовать deb пакеты sudo apt-get install kannel , но по-умолчанию установится только wapbox и smsbox, при этом чтобы заработал smsbox нужно раскомментировать директиву в файле /etc/default/kannel . Рекомендую установить kannel из deb пакета, чтобы посмотреть что и как работает и запускается.

В том случае, сли вы устанавливаете opensmppbox, sqlbox не в коем случае нельзя использовать собранные пакеты и готовые бинарники. Нужно все пакеты собирать на сервере использования. Это связано с тем, что при сборке дополнительных пакетов используются вновь собранные библиотеки kannel. Если основной сервер имеет другую версию, отличную от дополнителных демонов, то возможны ошибки типа opensmppbox multi-message die это связано с уже собранными библиотеками kannel.

Для установки kannel с поддержкой базы данных нужна библиотека mysql клиента.

источник

Настройка SMS-шлюза Kannel

Оффтопик. Зачем это мне понадобилось?

Я давно работаю над одним проектом, суть которого заключается в проведении реальных городских игр под флагом Мегафона. Сначала это были игры, для которых был создан простенький онлайн-сервис на Zend Framework, в котором можно было регистрироваться, формировать команды, участвовать в играх, получать задания, вводить ответы. Однако, мы с организаторами задумались, каким образом этот процесс можно было бы сделать более доступным для масс и более мобильным. Решили переделать данную платформу для работы с SMS. Сказано – сделано, я связался с технарями Мегафона, узнал каким образом мы могли бы принимать и отправлять SMS (естественно, значительно более предпочтительно было использовать http, т.к. никаких усилий для его интеграции не требовалось и многие sms-сервисы предоставляют такую возможность), в Мегафоне дали лишь голый SMPP. Делать нечего, пришлось выкручиваться.

Долго искал хороший вариант для шлюза, таким вариантом стал Kannel — опенсорсный SMS, WAP шлюз. WAP-составляющая меня не интересовала, однако он оказался действительно очень качественным решением для SMPP-HTTP шлюза (так же его можно использовать для отправки и приема SMS с помощью SMPP в качестве сервера, MySQL для приема и отправки сообщений в виде строк БД).

Перейдем к практике.

Во многом конфиги дублируют то что я приводил в своей статье про интеграцию с Мультифоном, однако здесь именно приводится пример работы с SMPP оператора сотовой связи.

Я пропущу часть установки и первичной настройки, вы с ними можете ознакомиться в ранее упомянутой статье.

Немного теории. Эта система немного нестандартна. Она состоит из нескольких отдельно стоящих демонов. Есть демон, который надзирает над остальными, и, если вдруг процесс умирает, то он его запускает заново. Этот демон прописан при запуске из rc.d или init.d, можете в пусковых скриптах ознакомиться с его параметрами.

bearerbox – главный демон, который держит связь по SMPP в качестве клиента, работает с 3g-донглами, слушает порт для подключения других демонов.
smsbox – демон, отвечающий за прием сообщений из веб-сервиса и передающий их в bearerbox для отправки
opensmppbox – демон, который работает как SMPP сервер для подключения других клиентов. Тоже подключается к bearerbox и работает через него.
wapbox – демон, работающий как wap-гейт. Честно говоря, я толком не разбирался с ним.
sqlbox – отличный интересный демон, который может записывать приходящие сообщения в MySQL БД определенной структуры, а так же отправлять SMS, которые добавляются в MySQL БД. Это дает возможность интегрировать sms непосредственно в модель по MVC. То есть, отправка — это всего лишь создание и сохранение объекта sms внутри вашего MVC приложения, круто, да? И аналогично приём, однако, в таком случае вы не получите callback о том что у вас пришло sms, придется запускать скрипт по крону и это уже будет не realtime.
За каждым из этих демонов должен быть привязан свой run_kannel_box. Это демон-надзиратель, для которого нужно дополнительно прописать в стартовые сценарии, если вы хотите в вашей конфигурации запустить больше одного bearerbox/smsbox/wapbox или присоединить другие демоны. Либо написать собственные сценарии с использованием параметра командной строки —parachute (-P), как предложил в комментариях zerkms.

Конфиг с комментариями

Итак, в данном случае мы рассмотрели подключение к 2м sms-центрам Мегафона с раздельной отправкой в зависимости от параметра smsc.

Так мы отправляем SMS (см. предыдущий пост на счет проблем с кодировками)

А так получаем текст SMS в нашем скрипте (на примере PHP), в данном случае он передается в теле POST запроса.

Опять таки, при наличии фаервола – необходимо открыть соответствующие порты при обращении снаружи или при работе изнутри открыть loopback.

Из ссылок опять привожу юзергайд, т.к. он весьма исчерпывающий. Для испытывающих проблемы с подключением – пишите в комменты или в dev mailing list, там помогут.

источник

kewogc / gist:1d679c6c83977d69106f

# apt-get -y —force-yes remove ntpdate

# apt-get -y —force-yes install ntp

# dpkg-reconfigure tzdata # Add PPA Repository

# apt-get -y —force-yes install python-software-properties

# apt-get -y —force-yes update # apt-fast

# add-apt-repository ppa:tldm217/tahutek.net

# apt-get -y —force-yes install axel

# apt-get -y —force-yes install apt-fast # Build System

# apt-fast -y —force-yes install nano wget cvs subversion curl git-core unzip autoconf automake1.9 libtool flex debhelper pkg-config libpam0g-dev intltool automake checkinstall docbook docbook-xsl build-essential libpcre3 libpcre3-dev libc6-dev g++ gcc autotools-dev bison libncurses5-dev m4 tex-common texi2html texinfo texlive-base texlive-base-bin texlive-latex-base libxml2-dev # Open SSL

# apt-fast -y —force-yes install openssl libssl-dev # Apache

# apt-fast -y —force-yes install apache2 apache2-dev apache2.2-common apache2.2-bin apache2-utils apache2-doc

# a2enmod php5 rewrite actions include suexec ssl deflate auth_mysql

# /etc/init.d/apache2 restart # MySql

# apt-fast -y —force-yes install mysql-server mysql-client libmysqlclient-dev libmysql++-dev # PHP

# apt-fast -y —force-yes install php5 php5-dev php5-common php-pear php5-xcache php5-curl php5-cli php5-cgi php5-gd php5-mysql php5-suhosin php5-memcache php5-imagick php5-sqlite php5-xmlrpc php5-xsl php5-imap php5-mcrypt php5-ffmpeg php5-tidy php5-mhash php5-memcache php5-pspell php5-recode php5-snmp php5-sqlite

Читайте также:  Установка дан на классику

# apt-fast -y —force-yes install phpmyadmin # Installing Kannel Gateway

# svn co https://svn.kannel.org/gateway/trunk

# cd /usr/local/src/kannel/gateway

# ./configure —prefix=/usr/local/kannel —with-mysql —with-mysql-dir=/usr/lib/mysql/ —enable-debug —enable-assertions —with-defaults=speed —disable-localtime —enable-start-stop-daemon —enable-pam

# make bindir=/usr/local/kannel install

# cd # Sql Box Installation

# svn co https://svn.kannel.org/sqlbox/trunk

# cd /usr/local/src/kannel/sqlbox

# ./configure —prefix=/usr/local/kannel —with-kannel-dir=/usr/local/kannel

# make bindir=/usr/local/kannel/sqlbox install

# cd # SMPP Box Installation

# svn co https://svn.kannel.org/opensmppbox/trunk

# mv trunk smppbox cd /usr/local/src/kannel/smppbox

# ./configure —prefix=/usr/local/kannel —with-kannel-dir=/usr/local/kannel

# make bindir=/usr/local/kannel/smppbox install

# cd # Manage & Check Log files

# mkdir /var/log/kannel/gateway

# mkdir /var/log/kannel/smppbox

# cp /usr/local/src/kannel/gateway/gw/smskannel.conf /etc/kannel/kannel.conf

# cp /usr/local/src/kannel/gateway/debian/kannel.default /etc/default/kannel

# cp /usr/local/src/kannel/gateway/debian/kannel.init /etc/init.d/kannel

# cp /usr/local/src/kannel/sqlbox/example/sqlbox.conf.example /etc/kannel/sqlbox.conf

# cp /usr/local/src/kannel/smppbox/example/opensmppbox.conf.example /etc/kannel/opensmppbox.conf

# cp /usr/local/src/kannel/smppbox/example/smpplogins.txt.example /etc/kannel/smpplogins.txt

# update-rc.d kannel defaults # Clean Installtion Files

# du -sh /var/cache/apt/archives

# apt-get -y —force-yes clean # Open Terminal and run following command to test your kannel

# /usr/local/kannel/sbin/bearerbox -v 0 /etc/kannel/kannel.conf

# /usr/local/kannel/sbin/smsbox -v 0 /etc/kannel/kannel.conf

# /usr/local/kannel/sbin/wapbox -v 0 /etc/kannel/kannel.conf

# /usr/local/kannel/sbin/sqlbox -v 0 /etc/kannel/kannel.conf

# /usr/local/kannel/sbin/opensmppbox -v 0 /etc/kannel/opensmppbox.conf

This comment has been minimized.

anildalar commented Jul 22, 2018

How to install and Test with Fake SMSC.

This comment has been minimized.

anildalar commented Feb 16, 2019 •

Hello everyone My Name is Anil Dollor +91-7999452711 www.dollorinfotech.com am going to install kannel on ubuntu v18
let’s go

press Ctrl+L clear console

ip XXX.XX.XXX.XX
u root
p lsb_release -a

sudo apt-get update
sudo apt-get upgrade

//Apache 2
sudo apt install -y apache2

sudo ufw allow ‘Apache’
sudo ufw status
sudo ufw disable

sudo systemctl status apache2

hostname -I
http://your_server_ip

sudo apt-get -y install php
php -v

sudo apt install -y mysql-server
mysql —version

// mysql password is Dollorinfotech@5050

wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
sudo apt update
sudo apt install -y webmin

https://your_server_ip:10000
#to change webmin port
sudo nano -w /etc/webmin/miniserv.conf

sudo service webmin status

sudo service webmin restart

sudo apt-get install -y nano wget cvs subversion curl git-core zip unzip autoconf automake libtool flex debhelper pkg-config libpam0g-dev intltool automake checkinstall docbook docbook-xsl build-essential libpcre3 libpcre3-dev libc6-dev g++ gcc autotools-dev bison libncurses5-dev m4 tex-common texi2html texinfo texlive-base texlive-base-bin texlive-latex-base libxml2-dev openssl libssl-dev software-properties-common axel mysql-client libmysqlclient-dev php-fpm php-cli php-mysql php-gd php-imap php-curl php-xml php-mbstring

a2enmod proxy_fcgi setenvif
systemctl reload apache2
a2enconf php7.2-fpm
systemctl reload apache2

sudo apt-get -y remove bison

wget —no-check-certificate https://ftp.gnu.org/gnu/bison/bison-1.28.tar.gz
tar -xvf bison-1.28.tar.gz
rm bison-1.28.tar.gz
cd bison-1.28

./configure —prefix=/usr/local/bison —with-libiconv-prefix=/usr/local/libiconv/

ln -s /usr/local/bison/bin/bison /usr/bin/bison
ln -s /usr/local/bison/bin/yacc /usr/bin/yacc

groupadd kannel
useradd -g kannel kannel

mkdir /usr/local/src/kannel
cd /usr/local/src/kannel

unzip gateway-1.4.5.zip
rm gateway-1.4.5.zip
mv gateway-1.4.5 gateway
cd gateway/

./configure —prefix=/usr/local/kannel —with-mysql —with-mysql-dir=/usr/lib/mysql/ —enable-debug —enable-assertions —with-defaults=speed —disable-localtime —enable-start-stop-daemon —enable-pam
touch .depend
make depend
make
chmod 0755 gw-config
mkdir /usr/local/kannel
make bindir=/usr/local/kannel install
cd

mkdir /usr/local/src/kannel/sqlbox
cd /usr/local/src/kannel/sqlbox

cp -r /usr/local/src/kannel/gateway/addons/sqlbox/* ./
./bootstrap
./configure —prefix=/usr/local/kannel —with-kannel-dir=/usr/local/kannel
make
make bindir=/usr/local/kannel/sqlbox install
cd

mkdir /usr/local/src/kannel/smppbox
cd /usr/local/src/kannel/smppbox

cp -r /usr/local/src/kannel/gateway/addons/opensmppbox/* ./
./configure —prefix=/usr/local/kannel —with-kannel-dir=/usr/local/src/kannel/gateway
make
make bindir=/usr/local/kannel/smppbox install
cd

mkdir /etc/kannel
mkdir /var/log/kannel
cd /var/log/kannel
mkdir gateway smsbox wapbox smsc sqlbox smppbox
chmod 755 /var/log/kannel

cp /usr/local/src/kannel/gateway/gw/smskannel.conf /etc/kannel/kannel.conf
cp /usr/local/src/kannel/gateway/debian/kannel.default /etc/default/kannel
cp /usr/local/src/kannel/gateway/debian/kannel.init /etc/init.d/kannel
cp /usr/local/src/kannel/sqlbox/example/sqlbox.conf.example /etc/kannel/sqlbox.conf
cp /usr/local/src/kannel/smppbox/example/opensmppbox.conf.example /etc/kannel/opensmppbox.conf
cp /usr/local/src/kannel/smppbox/example/smpplogins.txt.example /etc/kannel/smpplogins.txt

chmod 777 /etc/init.d/kannel
update-rc.d kannel defaults

du -sh /var/cache/apt/archives
apt-get -y clean

mysql
create database kannel;
use kannel;
CREATE USER ‘kannel’@’localhost’ IDENTIFIED BY ‘Dollorinfotech@5050’;
GRANT ALL PRIVILEGES ON * . * TO ‘kannel’@’localhost’;
GRANT ALL PRIVILEGES ON kannel.* TO ‘kannel’@’localhost’;
FLUSH PRIVILEGES;
quit;

источник

SMS и SIP шлюз — Мультифон, Asterisk, Kannel

В данной статье дается описание того, каким образом можно объединить достоинства Asterisk как PBX или IVR, Kannel как SMS-шлюза используя один телефонный номер.

Для этого я использовал Freebsd 8.2 на сервере, модем Huawei E171, но можно использовать любой модем МТС или Мегафон производства huawei (так же было проверено на модеме E1551), сим-карту Мегафона. В качестве софтфонов использовались Telephone и SJphone.

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

Вставляем симку в телефон, скачиваем клиент Мультифона, для бета-версии доступны дистрибутивы для linux и Mac OS X.

Запускаем клиент, регистрируемся, получаем SMS с кодом, вводим код, устанавливаем пароль, убеждаемся, что с клиентом все работает.

Выключаем клиент Мультифона (важно, т.к. нельзя подключить 2 клиента к мультифону одновременно).

Отправляем USSD команду для подключения всех возможностей Мультифона *137#, подтверждаем включение услуги.

Добавляем в /etc/rc.conf или в /etc/default/kannel:

Установка и настройка Asterisk

В интернете есть много описаний, поэтому приведу только конфиг, основанный на официальном конфиге мегафона с некоторыми поправками и пояснениями.

перезагружаем конфигурации с помощью консоли:

Проверяем подключение к мультифону и софтфонам:

Проверяем что изнутри и снаружи звонки проходят.

Подготовка модема

Вынимаем симку из телефона, вставляем ее в модем.
Вставляем модем в сервер, проверяем что устройства найдены:

Если наших устройств не видно, то пересобираем ядро, добавив

Установка и настройка Kannel

Рекомендуется устанавливаеть kannel из SVN, однако я не испытывал проблем и с данной версией, поэтому установим его из портов.

Стоит отметить, что Kannel не создает сам пользователя, поэтому сделаем это сами:

А так же он не заботится о создании директории для PID файлов, сделаем сами:

Еще раз перезапускаем kannel

Убеждаемся что подключение к SMSC в статусе online по адресу
localhost:13000/status

Русскоязычные sms приходят и уходят в кодировке ucs-2be, поэтому преобразуем их. Например в PHP:

coding=2 соответствует опять же кодировке ucs-2be.

Не забываем открыть порты (в том числе порты для RTP, т.к. иначе не будет звука/видео), если включен ipfw, добавляем в скрипт или конфиг:

Таким образом, мы имеем работающий SMS-шлюз и колл-центр на одном номере. Помимо этого, можно организовать IVR с помощью Asterisk, чтобы получать информацию в цифровом виде не только по SMS, но еще и с помощью интерактивного голосового взаимодействия с конечным пользователем.

Прямое подключения симки к Asterisk описано здесь, но стоит заметить, похоже, при первом подключении модем переходит в режим «только модем» и при повторном подключении исчезают устройства, поэтому передергиваем модем и меняем параметры на

Если слишком громко, то меняем параметры на

источник

Настройка Kannel. (Kannel. WAP и SMS гейт).

Эту статью я написал для журнала «Сетевые решения».

Дело было давным-давно (несколько лет назад). Я еще только осваивал Linux и обратил внимание на отличный инструмент – Webmin, который позволял удаленно управлять Linux-машиной. (Сегодня этот инструмент уже не кажется мне таким уж отличным). В одном из разделов я наткнулся на модуль, который назывался Wap & SMS Gate. Это меня заинтересовало, но не более того. Но где-то в мозгу засело – есть такой бесплатный SMS-гейт — Kannel! Совсем недавно (статья датирована 2005г.) я решил заняться этой темой. Что из этого получилось – судить вам.

Читайте также:  Установка заднего бампера приора нового образца

P.S. В статье не описана настройка WAP гейта.

Для чего же может понадобиться этот самый SMS-гейт (или шлюз)? Его задача — принимать и отправлять SMS-сообщения через веб. Он является связующим звеном между пользователем и SMS-центром мобильного оператора. Забегая вперед, скажу, что завязать kannel и SMS-центры наших мобильных операторов (Velcom, MTS) мне не удалось по причине нежелания операторов поделиться информацией об SMS-центрах (но об этом ниже). Но никто не мешает нам создать свой SMS-центр, в роли которого будет выступать ваш лучший друг и помощник – мобильный телефон. Конечно, это уже не так здорово, как соединение с SMS-центром напрямую (деньги за SMS платить все-таки придется). Итак, поставим перед собой задачу – создать SMS-центр, доступ к которому будет осуществляться через веб, и который позволил бы нам отправлять SMS с любого компьютера, подключенного к сети (ну или хотя бы с любой из машин в пределах локальной сети).

Для начала следует загрузить исходники kannel.

Исходные коды Kannel можно свободно загрузить с http://www.kannel.org (около 2.5 мегабайт – радуйтесь, пользователи dial-up). После загрузки приступим непосредственно к установке. Установка стандартна для Linux и занимает совсем немного времени.

С некоторых пор Kannel уже входит в дистрибутив Debian, так что возможно ничего качать не придется.

Можно также собрать kannel с поддержкой базы данных. Мне пока эта возможность не нужна, но я попробовал собирать kannel с поддержкой MySQL. Для этого следует указать опцию –with-mysql при конфигурировании. На моей системе я столкнулся с трудностями. Вот возможное решение проблемы:

запускаем в каталоге с исходниками kannel команду
grep -Frn «list_delete(» *
и затем заменяем в найденных файлах в найденных строках
list_delete на gw_list_delete
После этой операции все собралось без ошибок.

Теперь все готово для запуска kannel.

Kannel состоит из трех частей, которые по терминологии разработчиков называются boxes — Bearerbox, Smsbox и Wapbox. Bearerbox — главный модуль. Он принимает SMS-сообщения с мобильного телефона и пересылает их в wapbox и smsbox. Поддерживается множество WAP- и SMS boxes.

Конфигурация kannelКонфигурационный файл kannel условно можно разделить на три части: конфигурация bearerbox, конфигурация smsbox и конфигурация wapbox. Конфигурационный файл может быть один, но если он у вас разросся до неприличных размеров, то можно разделить его на части следующим образомinclude = «wapbox.conf»

В этом примере в файле wapbox.conf содержатся команды по настройке wapbox. Пустая строка в файле конфигурации служит для разделения различных групп параметров. В моем простом случае деление конфигурационного файла на части я не выполнял.

Конфигурация ядра KannelПриступим! Наипростейшая рабочая конфигурация ядра выглядит примерно так:

group = core
admin-port = 13000
admin-password = mypass

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

Этот параметр должен присутствовать обязательно.

Это также обязательный параметр. Это номер порта, который прослушивает kannel для того, чтобы можно было через веб-интерфейс управлять нашим SMS- и WAP-гейтом. Желательно выставлять значение > 1023.

Пароль для управления нашим WAP- и SMS-гейтом (обязательный параметр).

Пароль для просмотра состояния гейта. Я лично убрал эту строчку из конфигурационного файла.

Этот параметр – номер порта к которому происходит соединение smsbox. Ставим 13001 (вы, конечно, можете поменять его на другой).

Этот параметр – также номер порта, к которому соединяются wapbox. Я пока закомментировал его.

Это понятно – имя лог-файла.

Уровень записи информации в лог файл. 0 — debug, 1 — info, 2 — warning, 3 — error и 4 – panic.

Лог-файл, в который записывается информация о принятых и отправленных SMS.

Файл, в который записываются SMS-сообщения.
Итак, начало моего конфигурационного файла выглядит так:

#KANNEL CONFIG FILE
group = core
admin-port = 13000
admin-password = mypass
smsbox-port = 13001
log-file = /KANNEL/kannel.log
log-level = 0
access-log = /KANNEL/access_kannel.log
store-file = /KANNEL/store_sms

Запуск kannelДля запуска гейта служат команды:

bearerbox /path/to/config/file
smsbox /path/to/config/file
wapbox /path/to/config/file

Поддерживаются также параметры командной строки. Основные параметры:

Уровень вывода отладочной информации. По умолчанию – 0 (debug). Поддерживаются также 1 — info, 2 — warning, 3 — error, 4 – panic.

От имени какого пользователя стартовать.

В какой файл записывать PID

Стартовать в виде демона.
Ну что, попробуем запуститься?

К сожалению, гейт не стартует. Как видно из нижеприведенного фрагмента лога – не определен ни один smsbox.

2005-10-28 16:21:57 [12001] [0] ERROR: No ‘smsbox’ group in configuration, but smsbox-port set

Давайте займемся дальнейшей настройкой.

Настройка SMS-центраЧтобы настроить SMS-центр следует в конфигурационный файл добавить группу smsc.

Это обязательный параметр.

Тип SMS-центра. Поддерживаются следующие типы SMS-центров:
— Nokia CIMD 1.37 and 2.0 (указываем значение cimd);
— CMG UCP/EMI 4.0 and 3.5 (emi);
— SMPP 3.4 (smpp);
— Sema Group SMS2000 OIS 4.0, 5.0 and 5.8 (sema);
— SM/ASI (for CriticalPath InVoke SMS Center 4.x) (smasi);
— GSM modem (at);
— Fake SMSC (fake) – SMS-центр для тестовых целей;
— HTTP-based (указываем значение http).

Так как я использую в качестве SMS-центра мой GSM-телефон Siemens C60, тоя указываю здесь at.

Здесь хотелось бы сделать небольшое отступление. Я в тестовых целях попытался узнать типы используемых нашими мобильными операторами (Velcom, MTS.BY) SMS-центров.
Я отправил с сайтов обоих операторов однотипные письма такого содержания:

Здравствуйте!
Я работаю над статьей, которая будет опубликована в журнале «Сетевые решения».
Тема статьи — настройка Open source WAP- и SMS-гейта Kannel.
Если это не составляет коммерческой тайны, не могли бы вы сообщить тип используемого вашей компанией sms центра.

В течение дня от обоих операторов пришел такой же однотипный ответ:

Уважаемый Kirill!
Сожалеем, что не сможем Вам помочь. Запрашиваемая Вами информация не подлежит разглашению.
С уважением,
Отдел обслуживания клиентов Velcom.

Здравствуйте, Кирилл,
на Ваш запрос уполномочен ответить: к сожалению, тип используемого СМС-центра относится к сведениям, составляющим коммерческую тайну компании. Поскольку настройка WAP изложена на нашем сайте http://www.mts.by, Вы, естественно, можете воспользоваться этим разделом сайта.

С надеждой на дальнейшее плодотворное сотрудничество,
XXXX XXXXXXXXX,
специалист по связям с общественностью.

Так что, к моему великому сожалению, протестировать работу Kannel с реальным SMS-центром не удалось (хотя очень хотелось).
Если бы были известны типы SMS-центров наших мобильных операторов, то можно было бы попробовать обойтись без GSM телефона, а отправлять SMS напрямую оператору. (Как наивен я был в 2005 году!) Но к сожалению подобной информацией я не обладаю. Итак мы определились – используем в качестве SMS-центра мобильный телефон.

Имя лог-файла, в который будет выводиться информация от SMS-центра.

Уровень вывода информации в лог-файл (0-5).

Какой модем использовать. С kannel поставляется конфигурационный файл, который содержит несколько конфигураций для распространенных моделей телефонов. Моего телефона там не оказалось и стандартные конфигурации не заработали, поэтому после поисков во всемирной сети я написал рабочую конфигурацию самостоятельно. Возможно это придется сделать и вам.

Устройство, к которому присоединен телефон.

Скорость обмена данными.
Итак, описание SMS-центра у меня получилось такое:

Group = smsc
smsc = at
smsc- > log-file = sms_centre_log
log-level = 0
modemtype = siemens_c60
device = /dev/ttyS0
speed = 57600

Далее плавно переходим к настройкам собственно телефона. Мои рабочие настройки для siemens C60 следующие:

group = modems
> name = «SIEMENS C60»
init-string = «AT+CSMS=1+CNMI=1,2,0,0,1»
(по умолчанию строка инициализации — «AT+CNMI=1,2,0,1,0» и именно эту строку, подходящую для вашего телефона, вам и предстоит где-нибудь узнать).
enable-hwhs = «AT\Q3»
need-sleep = true

Да, совсем забыл – наверное следует добавить еще один SMS-центр, который создан специально для тестовых целей – fake.

Читайте также:  Установка 14 панели на девятку

Переходим к настройке smsbox

Это обязательный параметр.

Компьютер, на котором запущен bearerbox.

Уровень вывода информации в лог-файл.

Порт, присоединяясь к которому мы можем посылать SMS-сообщения.
И последнее. Теперь осталось настроить раздел, который отвечает за авторизацию пользователей при посылке SMS через HTTP.

(я решил не использовать пароли)
Давайте же наконец запустим все это хозяйство! Открываем две консоли и вводим в них команды для старта гейта и SMS-центра:
— в первую консоль:

bearerbox /путь к/конфигурационному/файлу/kannel.conf 2005-10-28 18:50:19 [13614] [0] DEBUG: Kannel bearerbox version `1.4.0′.
2005-10-28 18:50:19 [13614] [0] INFO: HTTP: Opening server at port 13000.
2005-10-28 18:50:19 [13614] [0] INFO: AT2[My SMS centre]: configuration shows modemtype
2005-10-28 18:50:19 [13614] [0] DEBUG: AT2[My SMS centre]: Found modems in config
2005-10-28 18:50:19 [13614] [7] INFO: AT2[My SMS centre]: opening device
2005-10-28 18:50:20 [13614] [7] INFO: AT2[My SMS centre]: speed set to 57600
2005-10-28 18:50:20 [13614] [7] DEBUG: AT2[My SMS centre]: —> ATZ^M
.
2005-10-28 18:50:20 [13614] [7] INFO: AT2[My SMS centre]: Phase 2+ is supported
.
2005-10-28 18:50:21 [13614] [7] INFO: AT2[My SMS centre]: AT SMSC successfully opened.

— во вторую консоль:

smsbox /путь к/конфигурационному/файлу/kannel.conf
.
2005-10-28 18:42:18 [13544] [0] DEBUG: Kannel smsbox version 1.4.0 starting

Похоже, у нас все получилось! Я не привожу полностью вывод bearerbox и smsbox, а оставляю лишь несколько самых важных строк – вы сами все увидите, когда запустите гейт.
Ну и что теперь? Попробуем посмотреть статус нашего гейта. Запускаем наш любимый IE под эмулятором (шутка). А если серьезно, то идем чем хотим по адресу http://localhost:13000 и видим нечто вроде:

Unknown command `/’.
Possible commands are:
status
store-status
log-level
shutdown
suspend
isolate
resume
restart
flush-dlr
stop-smsc
start-smsc

Теперь понятно – команды вводятся следующим образом:

— status или status.txt — получить текущий статус гейта (самая интересная, на мой взгляд, команда);
— status.html — HTML-версия того же (отличий от plain-text версии мной замечено не было);
— status.xml – XML-версия;
— status.wml – WML-версия (самая, на мой взгляд, симпатично выглядящаяя страница).
— store-status (store-status.txt, store-status.html, store-status.xml) — просмотр очереди сообщений соответственно в text/html/xml-виде. — suspend – приостановка;
— isolate — изолирование сервера – прием SMS из внешних сетей заблокирован;
— resume — восстановление нормальной работы;
— shutdown – выключение;
— restart — перезапуск сервера.

Вышеперечисленные команды предназначены для того, чтобы переводить сервер из одного режима работы в другие.

— start-smsc (stop-smsc) — команды служат для запуска/остановки SMS-центров, перечисленных в конфигурационном файле.
— loglevel – команда для смены уровня вывода информации в лог-файл на лету.

Перейдем теперь к самому интересному – как же все-таки послать SMS? С kannel поставляется превеликое множество файлов конфигурации, ну и, конечно, нам изобретать велосипед не стоит (хотя никто не мешает попробовать) и можно воспользоваться готовыми решениями, которые можно найти в каталоге с исходными текстами kannel.
Итак, в /path/to/kannel/source/directory/contrib/kannel-monitor/ находятся файлы, скопировав которые на локальный веб-сервер и подредактировав их немного (внеся порты и пароли), можно получить очень информативную страницу о состоянии kannel и прямо с этой страницы производить основные действия по управлению WAP- и SMS-гейтом.

В каталоге /path/to/kannel/source/directory/contrib/php-admin находятся скрипты для посылки SMS и администрирования kannel. К сожалению заставить их работать на моей машине мне не удалось (кстати с подобной проблемой столкнулcя не только я), а разбираться в чужом коде не сильно хотелось, поэтому для посылки SMS я написал свои очень простые скрипты.
Для того, чтобы послать SMS, необходимо сформировать следующий запрос (точнее, URL):

Так я и сделал – внес в адресную строку необходимые данные. Нажал ввод. Ничего – нажал еще раз безо всякой надежды на успех и… Знакомыми всем пользователям мобильных телефонов звуками захрюкали колонки, и через пару минут мне на второй телефон позвонила жена с вопросом, не пил ли я сегодня – что-то больно странные SMS от меня идут. Я сразу понял, что дело пошло лад.
Но таким образом слать сообщения крайне неудобно. Надо бы как-то упростить отсылку SMS. Я организовал каталог /var/www/sms на своем локальном веб-сервере, в который поместил два следующих скрипта:

/var/www/sms/index.php

Скрипты совсем несложные, и разобраться в них, надеюсь, для вас не составит никакого труда. /* Вы можете написать скрипты и на других языках, понятно, что на php свет клином не сошелся 🙂 Можете вообще не писать никаких скриптов, а лишь создать правильную веб-форму на «голом» HTML. – прим. редактора Сетевых решений. */

UPDATE! февраль 2010
У многих людей (в том числе и у меня) возникают трудности с назначением портов smsbox-port, bearerbox-port, sendsms-port. Представьте себе главный модуль kannel как некий черный ящик, к которому в свою очередь подключаются другие черные ящики smsbox (у каждого из них есть вход — sendsms-port через который наш браузер отсылает смс и выход — bearerbox-port, которым smsbox подключен к kannel). По совету одного из читателей (за что ему огромное спасибо) я набросал небольшую схему, которая, надеюсь поможет не запутаться в этом вопросе.

Готовые решения

Также я пытался найти программы (клиенты) для kannel, которые позволяют организовать удобный интерфейс для работы со шлюзом.
Поиск привел меня к двум проектам — playsms и ksms.

Установка этих скриптов довольно сложна и требует ручной правки конфигурационных файлов. После долгих мучений мне удалось установить ksms, но если бы интерфейс сей програмулины был бы на английском, то это еще можно было бы терпеть, но он выполнен на смеси английского и итальянского, и читать сообщения типа “AUTORIZZATI! Queste pagine NON contengono dati segreti” мне вскоре наскучило, и я обратил светлые очи в сторону playsms. Установка playsms не так страшна, как пугает автор в файле INSTALL, и прошла вполне успешно. Playsms предоставляет следующие возможности:

1. Поддержка записной книжки (как личной, так и общей для всех пользователей).
2. Поддержка шаблонов SMS-сообщений.
3. Собственно интерфейс для посылки SMS (поддерживаются kannel, clikatell, gnokii и доступ к внешним серверам отправки SMS).
4. Рассылка сообщений группе абонентов.
5. Просмотр и редактирование inbox/outbox.
6. Поддержка вставки в конец любого SMS-сообщения произвольной подписи.
7. Поддержка SMS-автоответов.
8. SMS-голосования.
9. Гибкое управление пользователями.

В общем и целом playsms мне понравился. Рекомендую, если не смущает нетривиальная установка.

Также хотелось бы отметить одну особенность – при подключении мобильного телефона в качестве SMS-центра, становится невозможно принимать входящие звонки. Телефон на стадии определения номера обрывает связь. Но, может, это и к лучшему.
Теперь, с любого компьютера локальной сети я имею возможность дистанционно отсылать SMS. Надеюсь, что мой вольный перевод руководства пользователя kannel поможет вам организовать нечто подобное и у себя в сети. Если у вас возникли какие-либо вопросы или предложения, со мной всегда можно связаться по e-mail или ICQ.

источник

Добавить комментарий