Asterisc SMS server

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).

Рис. 1

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

Рис. 2

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

Рис. 3

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

Рис. 4

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

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

Рис. 5

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

Рис. 6

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

Рис. 7

 

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

Рис. 8

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

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

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

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

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

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

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

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

Рис. 9

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

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

Рис. 10

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

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

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

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

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

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

Рис. 11

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

Рис. 12

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

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

52 комментария к “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 запускается без ошибок, проверяйте правильность логинов и паролей.

      1. Ярослав

        Спасибо. Проблема била в фаерволе. Как долго хранятса смс в таблице inbox?

  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 с трех разных карт. Но минусы данного костыля очевидны.

  12. Михаил

    Добрый день ! Подскажите пожалуйста, в программе есть возможность экспорта СМС-сообщений, которые пришли за определенный период, в *.xls или *.txt файл ?

  13. Андрей

    Доброго времени суток! Подскажите пожалуйста, а каким образом поправить сброс счетчика отправленых смс, который производит сброс в 2-а часа ночи а не в 00 как необходимо. Установили, настроили и все работает ок кроме одного….. сброс счетчика использованных смс за день «SMS Remain Count This Day». Просто головой об стену… третий день теста и не могу найти опции связанные с данной проблемой.

    1. Доброго! Проверьте время на сервере, скорей всего у вас в php.ini не выставлен нужный часовой пояс.

  14. Александр

    Здравствуйте, есть ли возможность склеивать длинное входящее смс в одно? Сейчас приходят по частям, причем части сообщения могут следовать не по порядку, а когда таких сообщений приходит одновременно несколько — очень неудобно

    1. Здравствуйте! К сожалению разработчик не предусматривает такую функцию.

  15. Привет! помогите настроить autobalance. что нужно писать в полях Exact Balance Prefix (USSD) и String for Owe (USSD) если приходит вот такой ответ:
    Your current balance as of today 20:45 is £15.00. You have 100 minutes, 250 texts and 300MB remaining until….

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

  16. Подскажите пожалуйста по теме автопроверки балланса: сегодня все операторы по-разному формируют ответы на запрос остатка, и даже у одних и тех же операторов может различаться ответ день ото дня — там всякая реклама добавляется, итд.
    Есть возможность просто раз в день отправлять балланс на почту?

    1. Готового решения нет. Но, теоретически, можно написать скрипт и подключить его к API GoIP.

  17. Hi I need help to determine what exactly I should put in Exact Balance Prefix (USSD): and String for Owe (USSD):.

    The USSD reply to me goes this way, «The balance as of XXXX/XX/XX XX:XX:XX is PXX.X valid till XXXX-XX-XX XX:XX:XX with X.X Free texts. Please note that system time may vary from the time on your phone.»

    Where the X represents wildcard numbers.

    1. Hello,
      We wrote above answer to the same question. You need to divide your message to Prefix and Suffix.
      Exact Balance Prefix (USSD): write everything before the amount (the last character must be space)
      Exact Balance Suffix (USSD): write something like this «space50.00 cent … etc»
      Prefix — this is value before the amount, include spaces
      Suffix — this is value after the amount, include spaces
      From you message we can’t understand where the amount of your bill.

      1. thanks for the prompt response, i get that now. my question now would be, will it matter of some of the characters changes? on my example the X represents changing characters for the date and time, but the number of characters does not change. Will it still work regardless?

        1. Usually it works for me (99% case). But sometimes needs to change. Will be better that prefix won’t change. For suffix doesn’t matter.

          1. Hi! Thanks for confirming that. I’ll try and see if it works for me. Appreciate it.

  18. александр

    все доброго времени суток я поставил смс сервер но не проходит регистрация в login пишет logout при за ходе в статус пишет timeout! и выводит форму где сь sim num
    SIM Card Expiry(minutes):
    IMEI:
    пдскожите что я делаю не правельно.
    спасибо!!

    1. Здравствуйте! Для начала проверьте запустился ли goipcron, есть ли он в процессах. Если да, проверяйте настройку между сервером и шлюзом.

      1. С этим разобрался, дело было в версии php.
        Возникла другая сложность Cannot get response from process named «goipcron» что бы не делал на web морде sms goip servera отдает Cannot get response from process named «goipcron»
        Процесс goipcron запущен, куда копать?

  19. Назарий

    Огромное спасибо за ваш труд!
    Подскажите, пожалуйста как в данном сервере выставить часовой пояс? На сервере время норм, а здесь со сдвигом в 3 часа, пролистал все настройки, не смог найти.

    1. Вам необходимо найти файл php.ini (в centos это /etc/php.ini) и указать необходимую зону, например так date.timezone = «UTC»

  20. Дмитрий

    приветствую не стартует гоипкрон, точнее стартует но не поднимает настройки, соответственно порт не слушает в БД не подключается, установил все либы по списку, ось CentOS 7.7

  21. Дмитрий

    Здравствуйте. ссылка не работает чтобы скачать архив. подскажите где найти архив?

    1. Добрый день! Только что проверил, ссылка работает. Скачивается версия 1.16 примерно 2.6 Mb в архиве.

Оставьте комментарий

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

C-Tech logo

Получите бесплатную консультацию

Заполните форму и мы обязательно с вами свяжемся