По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Знаешь ли ты, что Asterisk Gateway Interface (AGI) делится на 3 различных вида: Enhanced AGI (EAGI), DeadAGI и fastAGI. Каждый из них имеет свои функциональные преимущества – он них и поговорим.
Enhanced Asterisk Gateway Interface (EAGI)
EAGI это более продвинутый AGI, который позволяет обрабатывать аудио – потоки с помощью файлового дескриптора (3). В действительности, с помощью EAGI вы можете создавать собственные приложения, предназначенные для анализа и выполнения различных задач со входящим аудио-потоком.
Ниже приведен пример использования EAGI в диалплане:
exten => helloworld,1,eagi(somescript.eagi)
DeadAGI
Указанное приложение выполняет AGI – совместимый скрипт на «мертвых» каналах (тех, на которых произошло событие hung-up). Основное отличие, что скрипт выполняется в экстеншене h.
Дело в том, что скрипты, выполняемые через AGI – приложение не корректно отрабатывались на каналах, в которых случилось событие hang up.
exten => h,1,DeadAGI(somescript.agi)
FastAGI
Обычное AGI – приложение задействует собственные (серверные) вычислительные мощности для каждого звонка. Безусловно, при высокой телефонной нагрузке, на сервере могут быть проблемы, связанные с нехваткой ресурсов.
Помимо прочего, стандартный AGI имеет ограничения с точки зрения масштабирования. Поэтому, в рамках решения данные проблемы, было создано приложение FastAGI, которое позволяет выполнять скрипт на внешнем сервере, тем самым, «выносить» вычислительную нагрузку с сервера Asterisk на отдельный хост.
IP – АТС Asterisk коммуницирует с сервером, на котором находится исполняемый скрипт с помощью TCP сокетов. Вызвать FastAGI можно следующим образом:
exten => helloworld,1,AGI(agi://192.168.0.123:4567/somescript.agi)
В рамках синтаксиса, мы обращаемся на хост 192.168.0.123 и порт 4567, вызываю скрип с именем somescript.agi. Здесь можно передать различные переменные, как и в обычном AGI.
В этой статье мы расскажем про самые популярные и полезные паттерны архитектуры программного обеспечения.
Многоуровневая архитектура (n-уровневая)
Многоуровневая архитектура является одной из самых распространенных. Ее идея заключается в том, что компоненты с одинаковыми функциями организованы в горизонтальные слои, или уровни. В результате чего каждый уровень выполняет определенную роль в приложении.
В таком варианте архитектуры нет ограничения на количество уровней, которое может иметь приложение. При этом здесь также продвигается концепция разграничения полномочий. Многоуровневая архитектура абстрагирует представление о программном обеспечении как о едином целом; предоставляя достаточно информации для понимания ролей каждого уровня и взаимосвязи между ними. Стандартной реализацией такой модели может быть:
Пользовательский интерфейс/уровень представления: отображение и запуск пользовательского интерфейса, отправка запросов серверному приложению.
Уровень приложений: содержит уровень представления, уровень приложения, уровень предметной области и уровень хранения и управления данными.
Уровень предметной области: этот уровень содержит всю логику предметной области, сущности, события и другие типы объектов, которые содержат логику предметной области.
Уровень базы данных: это уровень данных, который используется для сохранения данных, которые будут использоваться сервером приложений.
Пример: десктоп приложение, электронная коммерция или веб-приложения и т.д.
Клиент-сервер
Это наипростейшая архитектура, состоящая из сервера и нескольких клиентов. Она представляет собой распределенную структуру, которая распределяет задачи или рабочую нагрузку между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами.
При такой архитектуре, когда клиент отправляет запрос данных на сервер, сервер принимает этот запрос и отвечает клиенту, предоставляя требуемые данные. Клиенты своими ресурсами не делятся.
Пример: электронная почта, обмен документами, банковские операции и т.д.
Event-Bus (событийно-ориентированная архитектура)
Это распределенная асинхронная архитектура для создания быстро масштабируемых реактивных приложений. Такая архитектура подходит для стека приложений любого уровня, от маленьких до сложных. Основная идея – асинхронная доставка и обработка событий.
Эта модель состоит из четырех основных компонентов:
Источник события
Получатель события
Канал
Шина событий
Источник публикует сообщение в определенный канал на шине событий. Получатель подписывается на определенный канал и получает сообщения, которые публикуются на канале, на который они подписаны.
Пример: электронная коммерция, разработка мобильных приложений, службы уведомлений и т.д.
Шаблон брокера
Этот шаблон можно использовать для структурирования распределенных систем с несвязанными компонентами, взаимодействующими посредством удаленных вызовов служб. Компонент брокер отвечает за координацию обмена данными между компонентами; таких как переадресация запросов, а также передача результатов и исключений.
Серверы публикуют свои возможности (услуги и характеристики) брокеру. Клиенты запрашивает услугу у брокера, и затем брокер перенаправляет клиента к подходящей услуге из своего реестра.
Пример: ПО брокера сообщений, Apache ActiveMQ, Apache Kafka, RabbitMQ, JBoss Messaging и т.д.
Микросервисный шаблон
В данной модели службы взаимодействуют с использованием синхронных протоколов, таких как HTTP/REST, или асинхронных протоколов, таких как AMQP (Advanced Message Queuing Protocol - расширенный протокол организации очереди сообщений). Службы можно разрабатывать и разворачивать независимо, и каждая служба будет иметь собственную базу данных. Согласованность данных между службами поддерживается с помощью шаблона Saga (последовательность локальных транзакций).
Пример: может быть реализован в различных вариантах использования, особенно в обширном конвейере данных
Одноранговая модель (Peer-to-Peer)
Здесь, как и в обычной клиент-серверной архитектуре, несколько клиентов взаимодействуют с центральным сервером. Но модель одноранговой сети (Р2Р) состоит из децентралированной сети одноранговых узлов.
В этом шаблоне узлы ведут себя и как клиенты, и как серверы. Одноранговые узлы могут функционировать как клиент, запрашивающий услуги у других одноранговых узлов, и как сервер, предоставляющий услуги другим одноранговым узлам.
Сети Р2Р распределяют рабочую нагрузку между одноранговыми узлами, и все они вносят и потребляют ресурсы внутри сети без необходимости использования централизованного сервера. Одноранговый узел может динамически менять свою роль с течением времени
Пример: файлообменные сети, мультимедийные протоколы PDTP, P2PTV, биткоин, блокчен и т.д.
Blackboard (доска объявлений)
Данный паттерн полезен при решении задач, для которых не известны детерминированные стратегии решения.
Все компоненты имеют доступ к «доске объявлений». Компоненты могут создавать новые объекты данных, которые в последствие будут добавлены на эту доску. Компоненты ищут определенные типы данных на доске и находят их по образцу, совпадающему с существующим источником знаний.
Этот шаблон состоит из трех основных компонентов:
Доска объявлений: структурированная глобальная память, которая содержит объекты из пространства решений.
Источник знаний: специализированные модули с собственным представлением решения
Компонент управления: выбирает, настраивает и выполняет модули
Пример: быстрое распознавание, идентификация структуры белка, интерпретация сигналов звуколокатора, программы машинного обучения и т.д.
Друг, расскажем про интерфейс телефонной статистики для IP - АТС Asterisk под названием Merion Metrics. Интерфейс показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер. По факту, это детально проработанный и красивый CDR для Astetrisk.
Про Merion Metrics
Если быть кратким:
Полная статистика - только самая важная информация: дата, время, откуда и куда был совершен вызов, аудио - запись;
Бесплатный тест - протестируйте интерфейс полностью - это бесплатно;
Установка за 10 минут - поддержка активно помогает с установкой;
Кроссплатформенность - сделано на Java. Совместимо с любой Unix платформой;
Для супервизоров - устали от CDR в FreePBX? Или CDR Viewer? мы знаем это чувство;
Удобная выгрузка в PDF и CSV - экспортируйте звонки в PDF и пересылайте/распечатывайте их для коллег;
Заказать бесплатную демо - версию можно по ссылке ниже:
Попробовать Merion Metrics
Установка Merion Metrics
Важно! На момент этого шага у вас должен быть лицензионный ключ. Закажите у нас демо доступ по ссылке https://asterisk.merionet.ru/merionmetrics
Конечно же, для удобства у нас есть пошаговое видео.
Видео - инструкция по установке Merion Metrics
Установка текстом
Системные требования
Оперативная память: 256 MB минимум
Процессор: Pentium 2 266 МГц + минимум
Java Runtime Environment (JRE): версия 8+
Браузер: Internet Explorer 9+
Подготовка
Подключитесь к серверу IP - АТС Asterisk по SSH под root пользователем.
Создание директории интерфейса
Дайте команды в консоль сервера:
mkdir /home/merionstat
Загрузите дистрибутив интерфейса MerionMonitoring-*.*.*.jar в свежесозданную директорию /home/merionstat. Через WinSCP, например.
Важно: загруженный вами дистрибутив будет иметь версионность. В руководстве, мы обозначаем MerionMonitoring-*.*.*.jar со звездочками. У вас будет MerionMonitoring-1.1.9.jar, например.
Создание SQL пользователя
Перейдите по ссылке для генерации устойчивого к взломам пароля. Запишите его. Далее, дайте следующую последовательность команд в консоль сервера:
mysql
CREATE USER 'interface'@'localhost' IDENTIFIED BY 'ваш_пароль';
GRANT SELECT, CREATE, INSERT ON asteriskcdrdb.* TO 'interface'@'localhost' IDENTIFIED BY 'ваш_пароль';
Где ваш_пароль - сгенерированный инструментом по ссылке пароль. Например:
mysql
CREATE USER 'interface'@'localhost' IDENTIFIED BY '6nzB0sOWzz';
GRANT SELECT, CREATE, INSERT ON asteriskcdrdb.* TO 'interface'@'localhost' IDENTIFIED BY '6nzB0sOWzz';
Сохраните пароль отдельно.
Директория для записей разговоров
Чтобы интерфейс мог воспроизводить ссылки на записи разговоров, необходимо сделать следующее:
Сгенерировать зашифрованную последовательность (пароль) через онлайн инструмент генерации. Сохраните его;
Дайте команды в консоль:
mkdir /var/www/html/сгенерированный_пароль
chown asterisk:asterisk /var/www/html/сгенерированный_пароль
chmod 775 /var/www/html/сгенерированный_пароль
Например:
mkdir /var/www/html/5v9MpbtUA8
chown asterisk:asterisk /var/www/html/5v9MpbtUA8
chmod 775 /var/www/html/5v9MpbtUA8
Откройте файл /etc/fstab и добавьте туда
/var/spool/asterisk/monitor/ /var/www/html/сгенерированный_пароль/ none rbind 0 0
Например:
/var/spool/asterisk/monitor/ /var/www/html/5v9MpbtUA8/ none rbind 0 0
Сохраните изменения в файле fstab. После, дайте следующую команду в консоль:
mount -a
Старт
Запуск интерфейса
Дайте следующие команды в консоль сервера:
cd /home/merionstat
nohup java -jar MerionMonitoring-*.*.*.jar &
Сразу после выполнения команды нажмите Enter.
Настройка интерфейса
Первое подключение
После запуска .jar файла, откройте в web - браузере (рекомендуем Google Chrome) адрес http://IP_адрес:7070/#!/config и введите лицензионный ключ, который вам предоставил сотрудник технической поддержки:
Нажмите “Проверить лицензию”. В случае, если возникнут проблемы на этом этапе, обратитесь в техническую поддержку (helpdesk@merionet.ru).
Далее, необходимо пройти первичную авторизацию. На этом экране введите логин и пароль: admin/IEJu1uh32
На следующем шаге конфигурации необходимо настроить подключение к БД. Для этого, в случае настройки IP - АТС Asterisk, укажите:
База данных - mysql, mariadb, или та, в которой хранятся ваши данные;
Хост БД - ;
если БД на том же сервере, что и установка интерфейса - localhost;
если БД на внешнем сервере, что и установка интерфейса - IP_адрес_БД;
Порт БД - проставляется автоматически. Меняйте, только если ваш сервер БД слушает запросы на другом порту;
Строка для подключения к БД - оставьте без изменений;
Наименование таблицы - если Asterisk, как правило, cdr;
Схема - это название базы данных. Для Asterisk, как правило, asteriskcdrdb;
Пользователь - мы создавали его в разделе “Создание SQL пользователя”. Если вы копировали команды точь в точь, то это будет interface;
Пароль - пароль, который вы сгенерировали для SQL пользователя через онлайн инструмент;
Хост записей разговоров - конструкция вида http://IP_адрес/сгенерированный_пароль/, где сгенерированный пароль - зашифрованная, которую вы создали на этапе подготовки в разделе “Директория для записей разговоров”. Например, может выглядеть как http://192.168.1.7/5v9MpbtUA8/;
Тип станции - Asterisk;
По окончанию настроек, нажмите “Подключиться”. Если у вас не получилось, напишите в техническую поддержку (helpdesk@merionet.ru).
На следующем этапе необходимо сопоставить название поля в таблице с его действующим значением. Как правило, в случае IP - АТС Asterisk все поля выставлено по умолчанию.
Внизу страницы нажмите кнопку “Установить соответствия”. После этого, нажмите “Запустить приложение”. Интерфейс сделает редирект на стартовую страницу. По умолчанию, логин и пароль администратора - admin/admin
Известные проблемы
Приложение уже запущено
Если вы не можете открыть приложение по адресу http://IP_адрес:7070/#!/config, то проверьте, не запущено ли оно ранее. Для этого дайте следующую команду в консоль:
ps aux | grep Merion
Проанализируйте вывод. Если он содержит строку вида:
root 4919 0.1 13.1 2120384 801784 ? Sl Dec11 19:12 java -jar MerionMonitoring-*.*.*.jar
То необходимо сделать следующее: вторым слева числом (после root, выделено оранжевым цветом) является PID процесса. Его нужно принудительно завершить. Для этого, копируем ID процесс в команду:
kill -9 4919
Делаем снова проверку ps aux | grep Merion
Если вывод более не содержит строку, как показано ранее - значит можете заново попробовать запустить команды:
cd /home/merionstat
nohup java -jar MerionMonitoring-*.*.*.jar &
База данных на внешнем сервере
Если вы выполняете подключение к удаленной базе данных, необходимо внести дополнительную конфигурацию в настройки MySQL, которые выполнялись на этапе “Создание SQL пользователя”. Например, это может понадобиться, если сервер с IP - АТС Asterisk находится на одной платформе, а сервер, где устанавливается интерфейс - на другой.
В таком случае, на сервере, где установлена БД (сервер IP - АТС Asterisk, как правило) необходимо выполнить следующие команды:
mysql
GRANT SELECT, CREATE, INSERT ON asteriskcdrdb.* TO 'interface'@'IP_адрес_интерфейса' IDENTIFIED BY 'ваш_пароль';
Где:
ваш_пароль - сгенерированный инструментом по ссылке пароль;
IP_адрес_интерфейса - IP - адрес машины, на котором вы устанавливаете дистрибутив интерфейса статистики.
Например:
mysql
GRANT SELECT, CREATE, INSERT ON asteriskcdrdb.* TO 'interface'@'192.168.1.78' IDENTIFIED BY '6nzB0sOWzz';
Помимо прочего, удостоверьтесь, что между узлами открыты порты:
3306 - для MySQL и MariaDB;
5432 - для PostgreSQL.
Медленная загрузка данных
Если вы наблюдаете проблемы с выгрузкой данных (долгая загрузка) - это связано с большим объемом базы данных.
Мы рекомендуем запускать интерфейс (.jar файл) с дополнительными ключами. Согласно пункта “Запуск интерфейса”, выполните следующую команду:
cd /home/merionstat
nohup java -jar MerionMonitoring-*.*.*.jar -Xms128m -Xmx256m &
Где:
-Xms128m - количество оперативной памяти, выделяемое приложению на старте. 128 мегабайт в данном примере;
-Xmx256m - максимально доступное количество оперативной памяти для приложения. 256 мегабайт в данном примере.
Как обратиться в поддержку?
Если вы испытываете технические трудности с настройкой интерфейса - мы поможем. Нам понадобятся файлы из директории /home/merionstat в которую вы разместили дистрибутив MerionMonitoring-*.*.*.jar, согласно пункта “Создание директории интерфейса”.
В зависимости от этапа возникновения сложности, там могут быть следующие файлы (помимо файла с расширением .jar):
columns_mapping.cfg
configuration.properties
nohup.out
Присылайте нам эти файлы с описанием проблемы и указывайте лицензионный ключ.
Связаться с нами можно следующим образом:
Telegram бот - @merion_support_bot
Электронная почта - helpdesk@merionet.ru