Asterisk SMS server

  В данной статье рассмотрим установку и настройку SMS сервера для популярного VoIP шлюза GoIP. Наша задача — получить надежный инструмент для отправки, хранения и получения SMS сообщений с имеющихся SIM карт, а также автоматически проверять баланс денежных средств с уведомлением на e-mail.

  Теоретически установка SMS сервера может быть осуществлена на любой дистрибутив Linux с предустановленными Apache и MySQL серверами, но логичнее будет выбрать сервер Asterisk, который мы используем в связке с GoIP шлюзом. Практически все необходимые компоненты там уже установлены, поэтому приступим.

  Для начала скачаем сам дистрибутив, пошарив в просторах интернета или на сайте Hyberton. Там же можно скачать и обновление для VoIP шлюза. На момент написания статьи, последней доступной версией была v1.19.3. Копируем адрес ссылки с сайта и качаем его:

[root@localhost]#cd /tmp

[root@localhost tmp]#wget http://www.hybervoice.com/update/goip_install-v1.19.tar.gz

[root@localhost tmp]#tar xvfz goip_install-v1.19.tar.gz

[root@localhost tmp]#cd goip_install

[root@localhost goip_install]#./goip_install.sh

Starting GoIP SMS System install

Configure httpd config:

Enter the httpd config file PATH: (default: /etc/httpd/conf.d)

Default press Enter

Import GoIP Databases

Enter the Mysql root password if the password exist:

********

Enter your Mysql PATH: (default: /usr/bin/mysql)

Default press Enter

Copying file to /usr/local/goip

goipcron start

Install finish

Please restart your httpd

GoIP manager URL: http://your_ip/goip

  Как видим, в процессе установки нам необходимо указать пути к MySQL и httpd (для стандартных просто нажимаем Enter) и ввести root-пароль подключения к MySQL. В конце установки может возникнуть ошибка  «./goipcron: error while loading shared libraries: libz.so.1: cannot open shared object file or directory». В таком случае необходимо установить недостающие библиотеки:

[root@localhost]#yum install glibc.i686

[root@localhost]#yum install zlib-devel

[root@localhost]#yum install zlib.i686

[root@localhost]#yum install libgssapi_krb5.so.2

После установки пакетов запускаем goipcron:

[root@localhost]#cd /usr/local/goip

[root@localhost goip]#./run_goipcron

В результате выполнения команды мы должны увидеть надпись goipcron start (если нет, система напишет, какие еще пакеты требуют установки).

Перезапустим наш web сервер:

[root@localhost goip_install]#/etc/init.d/httpd restart

переходим по адресу http://your_ip/goip, где видим страницу авторизации (рис.1).

Asterisk SMS сервер
Рис.1

Стандартный логин: root,  пароль: root , прописываем и попадаем в настройки (рис.2).

Asterisk SMS server GoIP
Рис.2

 

Кликаем на вкладку Provider Manage и добавляем записи (рис.3).

Настройка Provide Manage SMS сервер
Рис.3

 

  Для удобства идентификации оператора связи в дальнейшем, в строке Provider мы ввели номер телефона, но это может быть любой набор букв и цифр, например Oper1 или MTS. Если у вас на шлюзе три карточки одного оператора и пять другого, тогда достаточно создать 2 значения Provider. Это как дополнительный фильтр при отправке SMS, когда перейдем к отправке все станет понятно. В строке International Tel Code можно добавить префикс к набору номера, у нас это + , вы можете добавить +38 например, все зависит от того в каком формате вы будете хранить номера. Далее переходим на вкладку GoIP Manage и на верхней панели жмем Add GoIP (рис.4).

Настройка GoIP Manage
Рис.4

 

  Создадим первый аккаунт для GoIP шлюза. Придумаем ID и пароль, выберем один из созданных ранее Provider (операторов), который будет соответствовать одной из SIM карт, установленных на шлюзе. Добавим необходимое количество аккаунтов. Каждый аккаунт будет соответствовать одной регистрации (одной линии). Как вы уже поняли, в разных аккаунтах значение Provider (оператор) может повторяться. Можно поставить галку и получать SMS сообщения на e-mail, но для этого нужно настроить smtp сервер, об этом чуть позже.

  Перейдем к настройке GoIP шлюза, для начала проверим наличие настроек подключения к SMS серверу (рис.5).

GoIP настройка SMS
Рис.5

 

Если таких настроек у вас нет, необходимо обновить прошивку (рис.6)

Обновление прошивки GoIP
Рис.6

 

  После обновления должен появиться раздел с настройками SMS, в котором необходимо прописать IP адрес сервера (в нашем случае Asterisk) и, созданные ранее, ID и пароль для каждой линии CH1,CH2,CH3 и т.д., порт можно оставить стандартный (рис.7)

 

Настройка SMS сервера GoIP
Рис.7

 

  На этом настройка шлюза закончена, возвращаемся к серверу. На вкладке GoIP Manage мы должны увидеть надпись LOGIN в каждой созданной строке — это означает, что шлюз зарегистрировался. Обновить информацию можно кнопкой Refresh (рис.8).

Регистрация GoIP на SMS сервере
Рис.8

 

  Связь между сервером и шлюзом настроена, пробежимся по остальным настройкам. В разделе System Manage у нас имеется:

System Manage, общие настройки;

Mail Report, настройка отправки почты;

GoIP CDR,  статистика звонков;

Provider Manage, добавление идентификаторов линий;

GoIP Group, создание групп для аккаунтов;

GoIP Manage, добавление аккаунтов для связи с VoIP шлюзом.

  Пришло время настроить Mail Report, чтобы сервер мог слать нам письма. (рис.9)

Отправка почты SMS сервер GoIP
Рис.9

 

  Как видим, для отправки необходимо использовать SMTP сервер, можете настроить свой или указать существующий аккаунт на одном из почтовых серверов, например yandex. Также есть возможность мониторить регистрацию шлюза. Если в течение заданного промежутка времени система находится в состояния LOGOUT, приходит уведомление на почту.

  В разделе Send Message первая вкладка Send Directly позволяет нам отправлять сообщения. (рис.10)

Отправка SMS GoIP сервер
Рис.10

Сообщение можно отправить мгновенно или в заданное время:

— определенному номеру;

— нескольким номерам;

— всем существующим контактам (раздел Receiver Manage);

— группам (настройка в разделе Crowd and Group Manage);

— загрузить файл со списком номеров, выгруженный из вашей CRM или составленный вручную (можно скачать шаблон для файла — Example, рис.11).

Загрузка номеров в SMS сервер
Рис.11

 

  Запланированные задания по отправке можно редактировать или отменить на вкладке Examine Tasks. Вкладка Inbox хранит все входящие сообщения. Остальные вкладки интуитивно понятны, поэтому подробно мы их описывать не будем. Ну и напоследок, настроим автоматическую проверку баланса денежных средств на SIM картах с уведомлением на электронную почту. Переходим в раздел Auto balance and recharge и добавляем план проверки (рис.12)

Автоматическая проверка баланса SIM карт VoIP шлюза
Рис.12

 

  Очень важно в настройках правильно указать системе, как вычленить сумму баланса из ответа USSD. Для начала просто проверьте какой ответ вам приходит от оператора на запрос о балансе. Допустим это фраза: «На вашем счету 100.00 usd , ваш тарифный план Максимальный». Ваша задача скопировать все, что находится перед суммой 100 (включая пробел) и вставить в поле Exact Ballance Prefix (USSD), остальную часть после 100 вставить в поле String for Owe (USSD). Таким образом сервер каждый раз при проверке будет извлекать сумму баланса, сравнивать её с полем Low Balance Trigger и при превышении порога отсылать уведомление на указанный e-mail. Историю отправки запросов можно посмотреть в разделе Send Message вкладка USSD Records.

На этом все, вопросы оставляйте в комментариях.

24 thoughts on “Asterisk SMS server”

  1. Спасибо, все заработало. Вот только у вас опечатка небольшая:
    [root@localhost]#yum install libgssapi_krb5.s0.2
    ——
    а должно быть
    —————
    [root@localhost]#yum install libgssapi_krb5.so.2

  2. Подскажите пожалуйста, у меня не работает отправка уведомлений на почту. Так как сервер использует SMTP 25 порт (без шифрования), а сейчас похоже не один сервер не поддерживает отправку писем без шифрования. Подскажите пожалуйста может есть какие то бесплатные почтовые сервера, которые еще используют 25 порт (без шифрования) или как Вы вышли из ситуации?

    1. Здравствуйте, Юрий! Уточните, какой сервер работает на 25 порту без шифрования, ваш собственный? Если так то пишите в конфиге те порты, на которые отвечает ваш сервер. А пример бесплатного как раз описан у нас, это ukr.net. SMS сервер перед отправкой авторизуется на указанном mail сервере, после чего отправляет уведомление от имени пользователя, которым вы авторизовались.

  3. Наконец то разобрался.
    У меня почта не отправлялась с разных бесплатных почтовых серверов, я их перепробовал очень много.
    Я указывал smtp.mailserver, а нужно было ssl://smtp.mailserver.
    В связи с тем что почтовые сервера не отправляют письма без шифрования, а СМС серверу нужно явно указывать что необходимо для отправки письма использовать шифрование SSL, а я сразу на это не обратил внимание, а когда решил повнимательней разобраться увидел. Спасибо за статью!

  4. Здравствуйте.
    вопрос по отправке Auto balance and recharge:
    что нужно писать в полях Exact Balance Prefix (USSD) и String for Owe (USSD) если ответ типа :
    29/11/2016, 11:20:51 Vash schet 40 som. Proverte mestopolojenie blizkih *089*055Xxxxxxx# vyzov. 5s/zapros. Usluga Gde deti? *89
    т.е. в начале стоит дата и постоянное здесь только фраза «Vash schet 40 som. » остальные данные постоянно меняются

    1. Здравствуйте!
      Exact Balance Prefix (USSD): указываете Vash schet (с пробелом в конце)
      Exact Balance Suffix (USSD): указываете «пробел40 som»
      Prefix — это значение до суммы, включая пробелы (дата не в счет)
      Suffix — это значение после суммы, включая пробелы

  5. Здравствуйте!
    А как можно ответить отправителю на входящие СМС. Например отправить ему его задолженность?
    т.е. существует файл *.xls с телефонами для обзвонки должников и его бы еще использовать для ответов на входящие СМС.

    1. Ответить отправителю на входящие СМС можно в Inbox, нажав ссылку Reply. Чтобы отправить массово необходимо загрузить xml файл со списком номеров. Для автоматизации данного действия нужно написать скрипт.

  6. Шлюз не логинится на СМС сервере (СМС сервер работает, порти слушаются). Куда искать?

    1. Ярослав, если ./run_goipcron запускается без ошибок, проверяйте правильность логинов и паролей.

  7. День добрый, подскажите без ошибок ли у вас работает отложенная отправка смс по времени, через родной смс-сервер?
    У меня отправка смс сразу через http запрос или веб-интерфейс работает нормально, но отложенная отправка по времени через веб-интерфейс или xml-файл не работает, вызывая ошибку смс сервера.

    1. Здравствуйте! Отложенную отправку использовали не раз, все работает корректно. Отложенную с xml файлом не было необходимости использовать. Какую ошибку выдает сервер, что-то «падает» в логи ?

  8. Добрый день
    Сделал по вашей статье все работает, кроме отправки смс на e-mail. не получается настроить mail report всегда выдает ошибку permission denied(13). не важно пробую я напрямую сделать на почтовые сервера яндекс через ssl:// либо делаю через внутренние smtp relay по порту 25. КТо нибудь сталкивался?

    1. Евгений, что-то не так с вашими данными для подключения к почтовому серверу. Проверьте яндекс аккаунт, разрешен ли там smtp relay, а также все параметры, которые вы вводите (порт, адрес smtp сервера и т.д.)

  9. Добрый день, не могу настроить автопополнение счета. Команду завожу, ничего. Есть может какие хитрости?

    1. Сергей, в данной статье не рассматривается настройка автопополнения счета. Только уведомление по превышению порога.

  10. Подскажите товарищи, какие обязательные требования к ОС на которую устанавливается goip sms server?
    Дистрибутив — Актуальные CentOS или Ubuntu (На 16.04 или 17.10)?
    Разрядность — Заведется ли на x64?

    1. Здравствуйте Николай! Обязательные требования это наличие необходимых библиотек, о них написано в статье. Заведется на обоих указанных Вами ОС, но по опыту, на CentOS заводится проще.

  11. Здравствуйте. Подскажите пожалуйста, можно ли как-то настроить при использовании многопортового шлюза GoIP — если SMS не отправилась через один канал, попытаться отправить его через другой? Спасибо.

    1. Здравствуйте! Выполнение условий в отправке недоступно. Это нужно писать какой-то скрипт и отправлять через API с условиями. Как костыль, можно создать provider и добавить его в несколько учетных записей GoIP, возможно таким образов можно отправить SMS с трех разных карт. Но минусы данного костыля очевидны.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *