Маршрутизация по наименьшей стоимости в Asterisk

  • VOIP
Тема актуальная. Для меня как для корпоративного телефониста лет пять-десять назад всегда была задача настроить функцию ARS на Panasonic TDA100/200/600 или LCR на LG LDK100/300. В общем, сделать так чтобы подешевле звонить было. Но времена меняются, и сейчас у многих компаний используется Asterisk, а я уже не настраиваю УПАТС Panasonic, LG и прочие.

В Астериске, всем известно, вся маршрутизация делается в диалплане. Но если у оператора много направлений и цена на каждое из них различна, то в диалплане получаются портянки на несколько страниц. Решения разные: кто-то разбивает по разным файлам диалплана, использует макросы, кто-то подключает к работе БД, кто-то выносит на отдельный сервис.

Я хочу поделиться своим решением: вынести поиск оператора с наименьшей стоимостью заданного направления в стороннее приложение на node.js, с которым Астериск взаимодействует посредством AGI.



 

Задача

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

С одной стороны с приложением должен взаимодействовать Астериск, передавая направление звонка и запрашивая оператора с наименьшей стоимостью. С другой стороны через веб-интерфейс с приложением взаимодействует пользователь, который добавляет операторов связи, направления и их стоимость.

Схема



LCR Finder

Подробная установка в описании к проекту на гитхабе. Но мы воспользуемся заготовкой приложения lcr-finder-app (клонируем, устанавливаем зависимости и запускаем приложение).

Установленное приложение открывает два порта для соединений, одно для Астериска — запросов по AGI, другое для веб-интерфейса.

Затем настроить Астериск в файле extensions.conf достаточно выполнить запрос в AGI и сделать вызов по результату.
 
<code class="bash" style="margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; white-space: pre-wrap; font-family: Menlo, Monaco, 'Courier New', monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);">exten=>_X.,1,AGI(agi://localhost:3000)
exten=>_X.,n,Dial(SIP/<span class="variable" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(150, 142, 91);">${LCR_RESULT}</span>/<span class="variable" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(150, 142, 91);">${EXTEN}</span>)
</code>


Также после запроса в AGI к LCR Finder'у устанавливаются переменные LCR_STATUS, LCR_RESULT, LCR_SEQUENCE. LCR_STATUS — FAILED, SUCCESS в зависимости от результата поиска, LCR_RESULT — имя оператора с наименьшей стоимостью, LCR_SEQUENCE — список всех операторов через запятую, отсортированных в порядке возрастания стоимости. LCR_SEQUENCE позволяет реализовать failover, если оператор с наименьшей стоимостью не пропускает вызов, то можно взять следующего.

В веб-интерфейсе, который на angular.js быстро сверстал мой коллега Анатолий, все достаточно лаконично: добавляем оператора, добавляем к нему направления и стоимость. Во вкладке поиска можно проверить стоимость направление у операторов.

Вопрос к астерискерам: нужно ли развивать эту систему? Стали бы вы пользоваться ей в своих инсталляциях с Астериском. Сейчас здесь нет загрузки Excel файлов с направлениями (я сначала командой в mongodb загружаю направления, т.к. у меня есть небольшой скрипт для этого, а потом в веб-интерфейсе я или заказчик меняем цены по необходимости). Есть еще задумка с весом оператора, т.к. иногда цена не единственный параметр влияющий на выбор оператора.

Есть ли подобные системы? Конечно, да. Например, знаю, что некоторые используют для A2Billing для LCR, еще есть проект LCDial.sh (не знаю, кто-нибудь им пользуется), кто-то использует такие скрипты.

Надеюсь на конструктивную критику и предложения по улучшению. Думаю, что поможет кому-нибудь сэкономить дополнительные средства для развития в наше непростое время.

P.S. Небольшое видео по установке lcr-finder'а

 
Взято с хабры .

 
Читать дальше

Полезные команды Linux

Корректные: выключение, перезагрузка, выход из системы:
# init 0
Выключить систему
# logout
Завершить текущую сессию
# reboot
Перезагрузка
# shutdown -h now
Еще один вариант корректного выключения
# shutdown -h 22:15 &
Запланировать выключение системы на 22 часа 15 минут
Читать дальше

Linux Mint 17.2 получит название "Rafaela"

Проект продолжает получать женские имена, так что выбор очередного кодового названия вряд ли стал сюрпризом.
 
 
Некоторое время назад команда разработчиков Linux Mint приняла решение, что они будут использовать только версии Ubuntu LTS, что в данном случае явно указывает на Ubuntu 14.04.
 
Климент Лефевр (Clement Lefebvre), руководитель проекта Linux Mint, пишет следующее: «Рафаэла - женская форма имени Рафаэль, который имеет еврейское происхождение и переводится как »Бог исцелил". Это имя носили: архангела в иудаизме, христианстве и исламе; итальянский мастер художника и архитектора эпохи Ренессанса; испанского теннисиста; один из черепашек ниндзя. Могу гарантировать, что желающие установить обновление, смогут сделать это легко и безопасно"
 
 
Дата выхода еще не была объявлена, но система ожидается уже в ближайшие месяцы.
 
Читать дальше

Vesta CP установка на Ubuntu Server 14.04

Не секрет, многие пользователи VDS и выделенных серверов предпочитают для выполнения задач по администрированию использовать панели управления. Очень распространен ISPManager, чуть меньшей популярностью пользуется DirectAdmin и CPanel, но все эти продукты являются коммерческим, платным программные обеспечением. Сегодня мы расскажем об отличной бесплатной альтернативе — Vesta Control Panel.
 
Одно из первых упоминаний о Vesta CP можно найти на Хабре. Сейчас Vesta CP — удобный, полнофункциональный продукт, который вполне можно использовать как в личных целях, так и для предоставления услуг вэбхостинга.
 
Vesta CP обладает всеми возможностями для удобной и быстрой работы, без необходимости «ручной» правки конфигурационных файлов. В полной мере сразу после инсталляции поддерживаются:
 
Apache+nginx в качестве вэбсервера;
DNS-сервер;
Почтовый сервер, включая настройку DKIM, спамфильтров и антивируса;
Стабильная версия PHP;
Система управления базами данных MySQL 5.5;
Встроенные функции работы с резервными копиями;
Планировщик задач (cron);
Мониторинг нагрузки сервера;
Быстрый, многоязычный интерфейс.
Процесс инсталляции панели очень прост и выполнить его под силу даже новичку. Для начала, нужно определиться с операционной системой — Vesta CP успешно работает на Centos, Ubuntu и Debian. Если вы не определились в выборе — рекомендуем обратить внимание на небольшую заметку в нашем блоге о выборе ОС.
 
Итак, вы заказали SSD VDS или выделенный сервер и получили параметры доступа к нему — IP-адрес и пароль суперпользователя root. С помощью любого ssh-клиента (пользователи Windows обычно выбирают PuTTY) подключаемся к нашему серверу и выполняем следующие команды:
 
 
 
curl -O vestacp.com/pub/vst-install.sh
bash vst-install.sh
Читать дальше

Vesta CP установка на Ubuntu Server 14.04

Не секрет, многие пользователи VDS и выделенных серверов предпочитают для выполнения задач по администрированию использовать панели управления. Очень распространен ISPManager, чуть меньшей популярностью пользуется DirectAdmin и CPanel, но все эти продукты являются коммерческим, платным программные обеспечением. Сегодня мы расскажем об отличной бесплатной альтернативе — Vesta Control Panel.
 
Одно из первых упоминаний о Vesta CP можно найти на Хабре. Сейчас Vesta CP — удобный, полнофункциональный продукт, который вполне можно использовать как в личных целях, так и для предоставления услуг вэбхостинга.
 
Vesta CP обладает всеми возможностями для удобной и быстрой работы, без необходимости «ручной» правки конфигурационных файлов. В полной мере сразу после инсталляции поддерживаются:
 
Apache+nginx в качестве вэбсервера;
DNS-сервер;
Почтовый сервер, включая настройку DKIM, спамфильтров и антивируса;
Стабильная версия PHP;
Система управления базами данных MySQL 5.5;
Встроенные функции работы с резервными копиями;
Планировщик задач (cron);
Мониторинг нагрузки сервера;
Быстрый, многоязычный интерфейс.
Процесс инсталляции панели очень прост и выполнить его под силу даже новичку. Для начала, нужно определиться с операционной системой — Vesta CP успешно работает на Centos, Ubuntu и Debian. Если вы не определились в выборе — рекомендуем обратить внимание на небольшую заметку в нашем блоге о выборе ОС.
 
Итак, вы заказали SSD VDS или выделенный сервер и получили параметры доступа к нему — IP-адрес и пароль суперпользователя root. С помощью любого ssh-клиента (пользователи Windows обычно выбирают PuTTY) подключаемся к нашему серверу и выполняем следующие команды:
 
 
 
curl -O vestacp.com/pub/vst-install.sh
bash vst-install.sh
Читать дальше

Как установить классический Gnome в Ubuntu 14.04


В Ubuntu 14.04 вы больше не можете изменять расположение кнопок контроля окон (по умолчанию он расположен слева, как в маке). Если вам больше по душе когда кнопки расположены справа, или вам просто не нравится Unity, то вы можете с легкостью переключиться на уютный классический Gnome.
Для установки Gnome, вам нужно открыть терминал комбинацией клавиш Ctrl + Alt + T. Дальше наберите или скопируйте и вставьте следующие команды:

sudo apt-get install xorg gnome-core gnome-system-tools gnome-app-install

sudo apt-get update && sudo apt-get install gnome-session-flashback
Когда система попросит у вас пароль, наберите его и нажмите Enter.
После скачивания пакетов, система спросит вас: желаете ли вы дальше продолжить. Наберите «y» и нажмите Enter.
После того, как установка будет завершена, вам нужно совершить выход из системы.
Затем, в окне входа вам нужно нажать на кнопку с логотипом Ubuntu.
Перед вами появится список доступных сред рабочего окружения. Здесь вам нужно выбрать вариант, где написано Gnome Flashback.
Читать дальше

KMSAUTO NET 2014 1.3.4 (2015) (РАБОЧИЙ АКТИВАТОР WINDOWS 8, WINDOWS 8.1, 10, OFFICE)

  • Версия программы: 1.3.4
  • Официальный сайт: Ru.Board
  • Автор программы: Ratiborus
  • Язык интерфейса: Русский / Английский / Испанский
  • Лечение: не требуется

  • Системные требования:
  • Windows Vista, 7, Windows 8, 8.1, Server 2008, 2008 R2, 2012, 2012 R2, Office 2010/2013 VL редакциий.
  • Для работы программы требуется .NET Framework 4.5


  • Описание:
    KMSAuto Net  — автоматический KMS-активатор для операционных систем Windows Vista, 7, 8, 8.1, Server 2008, 2008 R2, 2012, 2012 R2 а также Office 2010, 2013 VL редакциий.
    Основан на KMS Server Service от mikmik38 (MDL). Для работы программы требуется .NET Framework 4.5

СКАЧАТЬ пароль на архив linuxfree
Читать дальше

Настройка RB750UP

MikroTik RB750UP — универсальное и многофункциональное сетевое устройство со встроенным управляемым PoE-инжектором. 
 
 
После этих действий приступаем к настройке.
Заходим на устройство через Winbox — INTERFACES для ознакомления с возможностями управления.
Настройка Mikrotik RB750UP
Заходим в свойства любого сетевого порта и открываем выпадающий список в пункте, в котором и производится управление питанием — PoE Out, он может принимать следующие значения:
Читать дальше

Установка и настройка сервера виртуализации VirtualBox c web-интерфейсом phpVirtualBox на ОС Ubuntu Server 14.04

В этой статье рассмотрим установки сервера виртуализации VirtualBox (на момент написания статьи — последняя версия) и web-интерфейса для удалённого управления phpVirtualBox 4.3-2 (на момент написания статьи — последняя версия) на операционной системе Ubuntu Server 14.04.
Для этого у нас имеется машина с установленной ОС Ubuntu Server 14.04, у которой IP-адрес 192.168.0.55, пользователь vbuser с паролем password.
Перед тем, как выполнить все действия, необходимо, чтобы была настроена сеть, и желательно установлен Midnight Commander. Первичные настройки после инсталляции можно посмотреть здесь. Также следует учесть изменения с командами запуска, остановки и перезапуска сетевых интерфейсов.
Открываем файл /etc/apt/sources.list
sudo nano /etc/apt/sources.list
и в нём прописываем:
deb download.virtualbox.org/virtualbox/debian trusty contrib
Переходим в домашний каталог
cd ~
Устанавливаем публичный ключ
wget www.virtualbox.org/download/oracle_vbox.asc | sudo apt-key add -
Обновляем пакеты
sudo apt-get update
и устанавливаем VirtualBox.
На момент написания этой статьи актуальная версия была 4.3.24, поэтому её и будем устанавливать.
sudo apt-get install virtualbox-4.3
Если есть необходимость в установке дополнения, качаем и ставим его
wget download.virtualbox.org/virtualbox/4.3.24/Oracle_VM_VirtualBox_Extension_Pack-4.3.24-98716.vbox-extpack
sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.24-98716.vbox-extpack
Запускаем установку необходимых компонентов vboxdrv
sudo /etc/init.d/vboxdrv setup
Теперь установим Apache, PHP и модуль PHP-SOAP:
sudo apt-get install apache2 php5 php5-soap
Устанавливаем утилиту unzip:
sudo apt-get install unzip
Добавляем пользователя vbuser в группу vboxusers:
sudo usermod -aG vboxusers vbuser
Теперь скачаем и распакуем архив с web-интерфейсом phpVirtualBox
wget sourceforge.net/projects/phpvirtualbox/files/phpvirtualbox-4.3-2.zip
unzip phpvirtualbox-4.3-2.zip
Переносим каталог phpVirtualBox в /var/www/html
sudo mv phpvirtualbox-4.3-2 /var/www/html/phpvirtualbox
Затем приступим к редактированию конфига phpVirtualBox
cd /var/www/html/phpvirtualbox
sudo cp config.php-example config.php
sudo nano config.php
прописываем пользователя и пароль (те, с помощью которых вошли в систему)
var $username = ‘vbuser';
var $password = ‘password';
в location вместо 127.0.0.1 вбиваем IP-адрес нашего сервера в сети
var $location = ‘192.168.0.55:18083/';
если consoleHost закомментирован, раскоментируем его и вбиваем IP-адрес в сети
var $consoleHost = ‘192.168.0.55’;
Создаём файл /etc/default/virtualbox и вносим в него пользователя и хоста
sudo touch /etc/default/virtualbox
sudo nano /etc/default/virtualbox
VBOXWEB_USER=vbuser
VBOXWEB_HOST=192.168.0.55
Запускаем службу vboxweb
sudo service vboxweb-service start
После этого желательно перезагрузить сервер
sudo shutdown -r now
Готово.
Теперь на другой машине в сети в браузере вбиваем 192.168.0.55/phpvirtualbox/
и увидим форму входа в управление ВиртуалБокса
Вводим логин admin и пароль admin
После входа необходимо изменить пароль, а также язык на русский.
Читать дальше

Отключаем беспроводное сетевое соединение

Отключаем беспроводное сетевое соединение
Нажимаем правой кнопкой мыши на значок сети, на панели уведомлений. Выбираем Центр управления сетями, и общим доступом (в Windows 8 все так же).
Управление сетями
Откроется окно, в котором справа нажмите на пункт Изменение параметров адаптера.
Открываем список адаптеров
Дальше просто нажимаем правой кнопкой мыши на «Беспроводное сетевое соединение» и нажимаем Отключить.
Отключаем Wi-Fi модуль на ноутбуке
Все, Wi-Fi отключен! А статус соединения на панели уведомлений будет примерно таким (правда, если у Вас подключен сетевой кабель, то статус будет другим):
Сетевой кабель не подключен
Что бы включить беспроводное сетевое соединение обратно, просто сделайте все так же, но выберите Включить, и Wi-Fi снова заработает.
Включаем беспроводное сетевое соединение
Кстати, если все сделать этим способом, то даже после перезагрузки ноутбука, он не будет искать доступные для подключения сети.
Этот способ подойдет для любого ноутбука, нетбука, или компьютера с Wi-Fi адаптером, который работает на операционной системе Windows 7, или Windows 8. На Windows XP это делается примерно так же. Но, к сожалению, нет возможности показать на скриншотах.
Читать дальше