The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Построение контент-провайдерской платформы на OpenBSD и Kannel (openbsd billing sms mobile smpp gate)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: openbsd, billing, sms, mobile, smpp, gate,  (найти похожие документы)
Автор: Михаил Сгибнев <mixa(@).dreamcatcher.ru> Date: 2006-09-13 15:40:59 Subject: Построение контент-провайдерской платформы на OpenBSD и Kannel
Авторы: Виктор Гижевский www.unixman.ru, Александр Симаков

В настоящее время рынок SMS и мультимедийного контента растет быстрыми темпами. Для построения контент-провайдерского сервера предлагается большое количество коммерческих решений. Но для построения данной *платфомы* можно воспользоваться и открытыми решениями. Мы рассмотрим пример построения сервера на базе WAP- и SMS-шлюза Kannel (www.kannel.org) . Самым распространенным протоколом для связи с СМС-центром на сегодняшний день является протокол SMPP 3.4 (Short messages point-to-point). Мы предполагаем, что вы уже получили сервисный номер и SMPP-подключение у одного из операторов GSM или CDMA стандарта. В принципе, Kannel поддерживает и работу с рядом GSM-модемов для связи с GSM-сетью, но данная возможность не будет рассмотрена в данной статье.

Необходимые исходные данные:

С оператором обязательно согласовываем использование протокола SMPP версии 3.4 (не 4.0). У провайдера сотовой связи должны быть получены сервисный номер (не обязательно короткий, может быть и федеральный), IP-адрес и порт СМС-центра, login и password, кодировка передаваемых оператором в Ваш адрес сообщений, кодировка принимаемых оператором сообщений, параметры source address ton, source address npi, destination address ton, destination address npi.

Если у оператора СМСЦ российского производителя, то он может поддерживать кодировку KOI8-R или CP1251. Это упростит Вашу задачу. Мы же рассмотрим более универсальный вариант, когда используется кодировка UCS-2 Big Endian, являющаяся стандартом в том числе и для кириллических шрифтов в Восточной Европе при отправке СМС-сообщений. Данную кодировку СМСЦ Вашего оператора наверняка поддерживает. Также Вам необходимо узнать у оператора, поддерживает ли его СМСЦ "склейку" и какое количество СМС позволяется "склеивать", разрешит или нет оператор Вам подписываться каким-либо именем сервиса (как правило, оператор заменяет Вашу подпись на свой вариант, все зависит от Ваших отношений с оператором).

Русифицируем консоль согласно http://dreamcatcher.ru/docs/openbsd_rus.html.

Перед непосредственной установкой Kannel нам неоходимо выкачать и сложить в рабочую папку (например, /tmp) следующие пакеты: bash-3.0.16p1, gmake-3.80p1, libiconv-1.9.2p1, p5-HTML-Parser-3.45, p5-MD5-1.7, gettext-0.10.40p3, libxml-2.6.16p5, p5-Compress-Zlib-1.35, p5-HTML-Tagset-3.04, p5-URI-1.35, glib2-2.6.4, libghttp-1.0.9p0, p5-Crypt-SSLeay-0.51, p5-HTTP-GHTTP-1.07, p5-libwww-5.803. Напоминаю, что сборка из портов в OpenBSD не приветствуется из соображений безопасности. Начинаем установку пакетов. Переходим непосредственно к установке Kannel. Выкачиваем с сайта www.kannel.org стабильную версию kannel. Мы не рекомендуем использовать девелоперскую версию, поскольку на момент написании статьи в девелоперскую версию были добавлены дополнительные проверки, которые привели к невозможности работы с кириллицей. Чтобы сделать девелоперскую версию рабочей, нам пришлось исключить из исходного кода kannel часть кода. В стабильной версии данные изменения вводить не требуется. Добавляем группу _kannel и пользователя _kannel Создаем вспомогательный скрипт /usr/local/sbin/killall: Создаем старт-стоповый скрипт /usr/local/sbin/kannelctl следующего содержания: Не забываем установить права на запуск скриптов. Создаем каталоги для лог-файлов и конфигурационного файла и приступаем к редактированию конфига. Редактируем файл и приводим его к следующему виду: #IP для администрирования #IP, с которых разрешена отправка СМС #IP СМСЦ провайдера #порт отправки СМСЦ провайдера #порт получения СМСЦ провайдера, может быть тем же, что и port* #выданный провайдером login #выданный провайдером пароль #любое имя #параметр выдан провайдером #параметр выдан провайдером #параметр выдан провайдером #параметр выдан провайдером #Ваш IP для отправки СМС (IP Вашего сервера, на котором будет слушать Kannel) #Порт на котором слушает Kannel #Допустимые символы в номере абонента #используя этот логин можно отправлять СМС с помощью http-запроса #используя этот пароль можно отправлять СМС с помощью http-запроса #разрешена или нет склейка #максимальное количество склеиваемых СМС #здесь может быть только латиница #разрешена или нет склейка #максимальное количество склеиваемых СМС Добавляем в /etc/rc.local следующие строки: Для отправки кириллических СМС из командной строки нам потребуется небольшая утилитка, откомпилированную версию для OpenBSD 3.8 которой можно взять http://unixman.ru/bin2hex . Ниже приведен исходный текст на С. Откомпилированную версию программы кладем в /usr/local/bin . Не забываем про права на исполнение. Теперь перейдем непосредственно к программе для отправки СМС из командной строки. Создаем файл sendsms.pl в каталоге /usr/local/sbin следующего содержания: #Параметр "validity" - срок жизни СМС в минутах. В течении этого времени СМСЦ будет делать попытки доставки абоненту. Запускаем Kannel командой: Можем проверить связь с СМСЦ Логинимся в систему от пользователя с кириллической консолью и отправляем СМС командой: Если все сделано верно, Вам придет на указанный номер СМС-сообщение.

Отправляем с мобильного телефона на Ваш сервисный номер СМС-сообщение с текстом "123" - Вам в ответ должно прийти "HELLO WORLD".

Попробуем отправить СМС с произвольным текстом.

Следующим этапом для интерактивной обработки СМС-запросов абонентов нам потребуется установленный http-сервер с cgi-bin или php, например apache, установку и настройку www-сервера в этой статье мы рассматривать не будем. Отметим лишь, что последние версии апача распространяются под неприемлимой для OpenBSD лицензией, а в комплекте OpenBSD присутствуют и другие весьма достойные серверы. Штатный уже установленный апач в комплекте OpenBSD запускается в чруте. Для работы cgi-bin потребуется копирование всех необходимых апачу библиотек в чрут, но временно для тестов апач можно запустить не в чруте командой httpd -u . В целях безопасности настраиваем pf Даниэля Хартмайера - разрешаем доступ на порты kannel и http-сервера только с необходимых нам IP.

Принцип взаимодействия в случае нашего конфигурационного файла следующий - kannel при получении СМС-сообщения с ключевым словом "service" формирует http-запрос на указанный в конфиге URL http://localhost:80/cgi-bin/service.pl?otkogo=%p&keyword=%a&komu=%P&time=%t. В ответ httpd при обработке скрипта выдает xml-код (ВНИМАНИЕ!) в кодировке UTF-8. В этом случае будет сформировано кириллическое сообщение. В данном случае скрипту будут переданы параметры otkogo=(MSISDN абонента), keyword=service, komu=(Ваш сервисный номер), time=(время запроса).

Для примера ответного XML-сообщения Вы можете создать файл http://localhost:80/test.html в кодировке UTF-8 следующего содержания: А, например, данный код сформирует EMS-сообщение и телефон проиграет мелодию (на телефонах, поддерживающих EMS. Забавно, но Nokia до сих пор игнорирует этот стандарт). Информацию о кодировании udh-заголовков и другие справочные материалы по sms можно найти на сайте http://www.isms.ru .

Данный xml-код может быть находиться не только в статическом файле, но также и может быть сформирован динамическим интерактивным cgi-приложением или результатом работы php-скрипта.

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

Использованная литература

:
  1. Документация OpenBSD 3.8 http://www.openbsd.org/faq/index.html
  2. Документация Kannel http://www.kannel.org/download/1.4.0/userguide-1.4.0/userguide.html
  3. Udh код для мелодии взят с сайта www.isms.ru http://www.isms.ru/article.shtml?art_9_2

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, kb (?), 09:43, 03/04/2007 [ответить]  
  • +/
    А как можно протестировать работу настроенной платформы?
     
  • 1.2, sda (??), 14:00, 05/04/2007 [ответить]  
  • +/
    Ребят, а кто заставил через http - работать кириллицу?
    т.е. допустим:
    http://proxy:13013/cgi-bin/sendsms?username=xxx&password=xxx&validity=1440&to
     
  • 1.3, kse (??), 21:31, 25/04/2007 [ответить]  
  • +/
    Подскажите, пожалуйста, чего не так делаю?

    group = sms-service
    keyword = default
    post-xml = http://localhost:80/cgi-bin/service.pl?otkogo=%p&keyword=%a&komu=&#

    httpd свой, get-url работает без проблем
    когда ответ отсылаю делаю ContentType = "text/xml"
    уже и с кодировками все перепробовал
    post-xml - пишет "result could not be represented as an sms message"

    плиз, хелп!!!

     
     
  • 2.4, Виктор Гижевский (?), 18:57, 30/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    /var/www/conf/mime.types:

    text/xml                        xml

     

  • 1.5, Дмитрий (??), 03:34, 29/08/2009 [ответить]  
  • +/
    Получилосьь!!
    Пришлось перечитать мануал и англоязычные форумы ))
    Если что пишите мне сюда
    http://navidu.net/form.php?id=1
     
  • 1.6, Дмитрий (??), 00:29, 22/10/2009 [ответить]  
  • +/
    имею в виду получилось отправлять кириллицей ))

    сейчас бьюсь над приемом кирилицы (( через group = sms-service

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру