Если вы решили запустить какой-нибудь SMS-сервис, используя Kannel в качестве шлюза к SMS-центру, то одной из первых задач будет организация подключения к SMSC (SMS-Center) или SDP (Service Delivery Platform) мобильного оператора или агрегатора. Если не учитывать особо извращенные варианты, когда оператор предлагает к использованию свой собственный протокол (привет Киевстару и МТС-Украина), то стандартом де-факто является использование SMPP (Short Message Peer-to-Peer). Kannel поддерживает протокол SMPP версий 3.3 и 3.4 (существует уже версия 5.0, но она и в Kannel не поддерживается, и широкого применения не имеет).
Для начала в файл конфигурации Kannel (в ALT Linux это будет /etc/kannel/smskannel.conf) пропишем секцию core:
group = coreadmin-port = 13000smsbox-port = 13001admin-password = foobarlog-file = "/var/log/kannel/kannel.log"log-level = 0dlr-storage = internalstore-file = "/var/lib/kannel/kannel.store"
В данном случае мы указали следующие параметры:
А также пропишем самую простейшую конфигурацию SMSBox:
group = smsboxbearerbox-host = "127.0.0.1"
В принципе, тут можно было бы еще много чего настроить, но мы пока что не будем сильно заморачиваться, т.к. сервис совсем тестовый и существует только в нашем воображении :-) Что касается встроенного хранилища данных о доставке SMS, то в реальных сервисах лучше использовать для этих задач СУБД, чтобы не терять информацию в случае сбоя или перезапуска Kannel.
Прежде чем мы начнем подключаться к SMSC, необходимо получить у своего оператора данные, без которых настройку сможет провести лишь телепат, который в штате ИТ-отдела вашей компании вряд ли предусмотрен ;-) Как минимум, нам потребуется следующая информация:
В случае использования протокола SMPP 3.3 портов будет два - для приема и для передачи сообщений. Но эту версию протокола уже потихоньку начинают забывать. Вобще, имеет смысл уточнить сразу все возможные параметры: пропускную способность SMSC, тип системы, интервал отправки тестовых пакетов, используемые TON (Type Of Number) и NPI (Nubering Plan Identifier), формат идентификаторов сообщений и т.д.. Впрочем, персонал оператора и сам не всегда хорошо представляет, что и как у них работает, так что может потребоваться выяснять часть данных путем экспериментов и анализа логов.
Вот мы и перешли к основной части, конфигурации подключения к SMSC:
group = smscsmsc = smppsmsc-id = smsc-operatorhost = 111.111.111.111port = 1111transceiver-mode = 1smsc-username = "my_login"smsc-password = "my_password"system-type = "VASP"address-range = ""log-file = "/var/log/kannel/smsc-operator.log"log-level = 0
Собственно, эта секция содержит минимальную конфигурацию подключения по SMPP. В дальнейшем я постараюсь написать о различных настройках, которые могут пригодиться в реальных конфигурациях, а пока что считаем дело сделанным. Теперь у нас прописано подключение к SMSC по протоколу SMPP 3.4 (tranceiver-mode = 1) по IP-адресу 111.111.111.111 и порту TCP 1111. Также установлено протоколирование сообщений в режиме отладки, что позволит записывать дампы всех SMPP PDU, чем и может постепенно забить дисковое пространство.
Естественно, после настройки хочется убедиться, что все работает. Посему, придется нам также настроить сервис, который будет на все MO (Mobile Originated) SMS отвечать фиксированной фразой.
group = sms-servicekeyword = default text = "Send beer instead of SMS!"
Теперь остается запустить сперва bearerbox:
$ /usr/sbin/bearerbox /etc/kannel/kannel.conf
...потом smsbox:
$ /usr/sbin/smsbox /etc/kannel/kannel.conf
И можно отправлять сообщения на сервисный номер, выданный оператором, получать ответы и радоваться успешному запуску.