Asterisc SMS server

Asterisk SMS server

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

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

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

[[email protected]]#cd /tmp

[[email protected] tmp]#wget http://www.hybervoice.com/update/goip_install-v1.19.tar.gz

[[email protected] tmp]#tar xvfz goip_install-v1.19.tar.gz

[[email protected] tmp]#cd goip_install

[[email protected] 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». В такому випадку необхідно встановити відсутні бібліотеки:

[[email protected]]#yum install glibc.i686

[[email protected]]#yum install zlib-devel

[[email protected]]#yum install zlib.i686

[[email protected]]#yum install libgssapi_krb5.so.2

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

[[email protected]]#cd /usr/local/goip

[[email protected] goip]#./run_goipcron

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

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

[[email protected] 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.

На цьому все, питання залишайте в коментарях.

48 думки про “Asterisk SMS server”

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

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

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

  3. Андрей

    Здравствуйте.
    вопрос по отправке 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 — это значение после суммы, включая пробелы

  4. Евгений

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

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

  5. Ярослав

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

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

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

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

  7. Евгений

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

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

  8. Сергей

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

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

  9. Николай

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

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

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

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

  11. Михаил

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

  12. Андрей

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

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

  13. Александр

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

  14. Привет! помогите настроить 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….

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

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

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

  16. 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. Hi! Thanks for confirming that. I’ll try and see if it works for me. Appreciate it.

  17. александр

    все доброго времени суток я поставил смс сервер но не проходит регистрация в 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 запущен, куда копать?

  18. Назарий

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

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

  19. Дмитрий

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

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

C-Tech logo

Отримайте безкоштовну консультацію

Заповніть форму і ми обов'язково з вами зв'яжемось