По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
В данной статье пойдет речь о модуле под названием Configuration File Editor, модуле, который позволяет редактировать дополнительные (custom) файлы конфигурации в браузере – обычно эти файлы редактируются с помощью CLI или сторонних программ, таких как WinSCP.
Что бы открыть данный модуль, необходимо в выпадающем меню вкладки Admin -> Config Edit
Как видно выше – в модуле можно создать новый файл, и так же доступны две вкладки:
Asterisk Custom Configuration Files – данные файлы можно редактировать, практически все Custom файлы изначально пустые. Кроме того, можно создавать совершенно новые файлы. Важно помнить, что после создания нового файла необходимо будет применить конфиг с помощью кнопки Apply Config
Asterisk System Configuration Files – данные файлы являются системными и их нельзя редактировать в данном модуле
Обратите внимание на надпись «File is not writable» - кнопки «Save» и «Delete» так же неактивны.
Важно:
Для подключения custom файла в оригинальном файле должна быть запись следующего вида:
include ***_custom.conf
Однако, через данный модуль добавить данную строчку невозможно, но, в большинстве системных файлов данные команды уже присутствуют.
Если же вы создадите новый файл, с помощью кнопки + Add New File, то необходимо будет всё же использовать CLI для его подключения. К примеру, для использования файла test_newsettings_custom.conf, необходимо будет в нужный для вас системный .conf файл (который является системным файлом) прописать следующую строку:
include test_newsettings custom.conf
От себя добавлю, что чаще всего данный модуль может пригодиться не для редактирования, а для просмотра нужных вам файлов.
В 2013 году, вместе с бета – релизом Asterisk 12 астериск - комьюнити был представлен новый API, который получил гордое название - ARI (Asterisk REST Interface). Что это и как им пользоваться, если вы любите php - рассказываем в статье.
Зачем Asterisk нужен новый API?
Все мы привыкли, что Asterisk имеет два интерфейса: Asterisk Manager Interface (AMI) и Asterisk Gateway Interface (AGI). AMI это асинхронный интерфейс, который используется для управления вызовами, инициацией звонков и всем, что попадает под определение «call control». AGI, в свою очередь, предоставляет синхронный интерфейс манипуляции одним каналом, являясь своего рода «прослойкой» между диалпланом и внешними скриптами. Важно отметить, что на время выполнения, AGI блокирует поток.
В связке, оба интерфейса неплохо справляются с задачами, связанными с различного рода манипуляциями с каналами и диалпланом Asterisk. Но разработка сложного и многоуровневого приложения может стать по настоящему трудной задачей для разработчика, в которой придется задействовать AGI и AMI одновременно.
Именно в этот момент на помощь приходит ARI (Asterisk REST Interface). Отметим, что ARI не заменяет AGI или AMI. Новый интерфейс позволяет разработчикам заменить управление на уровне диалплана внешними приложениями (скриптами). Тем самым, ARI упрощает жизнь разработчикам бизнес – приложений, которые используют Asterisk в качестве коммуникационной платформы.
ARI дает девелоперам высокоуровневый REST интерфейс, через который доступно управление базовыми операциями Asterisk, например, такими как каналы, мосты (бриджи), конечные устройства, управление медиа – потоками, записью разговоров и так далее. Информация об этих объектах передается в асинхронном режиме событиями JSON поверх WebSocket.
Только представьте: раньше, чтобы овладеть подобным набором инструментов, вам необходимо было иметь навыки программирования на C и разработать свой собственный модуль и внедрить в Asterisk. С использованием ARI, приложения могут быть написаны на вашем любимом языке, будь то Python, Ruby, PHP или JavaScript! Для удобства, ниже мы привели библиотеки и ссылки на них для различных языков программирования:
Библиотека
Язык программирования
Ресурс
ari4java
Java
https://github.com/l3nz/ari4java
ari-py
Python
https://github.com/asterisk/ari-py
AsterNET.ARI
C#/.NET
https://asternetari.codeplex.com/
node-ari-client
JavaScript (node)
https://github.com/asterisk/node-ari-client
phpari
PHP
http://www.phpari.org/
Подведем итог: новый интерфейс ARI дает новые возможности не только для Asterisk комьюнити, но и для разработчиков бизнес приложений. От слов к делу, переходим к настройке.
Настройка phpari
Поскольку ARI это технология, базирующаяся на WebSocket, первым делом необходимо внести некоторые настройки в файл http.conf, который находится в директории /etc/asterisk/:
cd /etc/asterisk/
vim http.conf
Приводим файл к следующему виду:
[general]
enabled = yes
bindaddr = 127.0.0.1
Далее, «сетапим» файл ari.conf, открыв его командой vim ari.conf:
[general]
enabled = yes
pretty = yes
[имя_вашего_пользователя]
type = user
read_only = no
password = пароль_для_пользователя
В секции [имя_вашего_пользователя], укажите юзернейм, а в секции password его соответствующий пароль. Перегружаем Asterisk:
asterisk –rv
core restart now
Теперь мы установим phpari. Установку будем производить с помощью composer:
Если у вас не установлен composer, вы можете скачать его по этой ссылке.
Открываем для редактирования файл composer.json и добавляем в него следующий код:
{
"require": {
"php": ">=5.3.9",
"educoder/pest": "1.0.0",
"devristo/phpws": "dev-master",
"greenfieldtech-nirs/phpari": "dev-master"
}
}
После чего запускаем команду:
composer install
Необходимая библиотека будет загружена. Переходим в директорию /vendor/greenfieldtech-nirs/phpari и открываем для редактирования файл phpari.ini:
cd /vendor/greenfieldtech-nirs/phpari
vim phpari.ini
Редактируем следующим образом:
[general]
debug=0
logfile=console ; #если хотите логировать ARI в консоль, то оставьте данное поле без изменений. Если хотите логировать в файл, то укажите полный путь к нему;
[asterisk_ari]
username= имя_вашего_пользователя
password= пароль_для_пользователя
host=IP_адрес_Asterisk
port=8088
endpoint=/ari
transport=ws ; #нешфированный транспорт, wss для шифрования;
Отлично. Теперь давайте соберем простенький .php скрипт, который будет показывать активные каналы. Для этого, в директории, где у нас находится скачанная библиотека phpari и соответственно директория /vendor, создаем файл ari.php и наполяем его следующей конфигурацией:
require_once "vendor/autoload.php";
$ariCon = new phpari();
print_r($ariCon->channels()->channel_list());
Сохраняем. Сделайте 1 активный вызов на вашем Asterisk (например, позвонив с софтфона на софтфон). Переходим в консоль, и даем команду на выполнение этого скрипта:
php ari.php
Если все сделано правильно, в консоли мы увидим JSON – ответ, в котором будут переданы параметры активного канала: context, exten, caller, accountcode и прочие.
Как вызвать приложение?
Вызвать приложение из диалплана очень просто. Для этого, необходимо использовать Stasis:
exten => _XXXX,1,Stasis(ваше_приложение)
Что именно умеет ARI?
Кратко поговорим о том, какие именно операции умеет совершать ARI:
Метод
Путь
Описание
GET
/channels/{channelId}
Получить информацию о канале с channelId
POST
/channels/{channelId}
Создать канал с указанным channelId
DELETE
/channels/{channelId}
Удалить (Hang Up) канал
POST
/channels/{channelId}/continue
Возврат в диалплан (выход из скрипта)
POST
/channels/{channelId}/continue
Возврат в диалплан (выход из скрипта)
POST
/channels/{channelId}/answer
Ответить на канал
POST
/channels/{channelId}/mute
"Замьютить" канал
DELETE
/channels/{channelId}/mute
"Снять мьют" с канала
POST
/channels/{channelId}/hold
Поставить вызов на удержание
DELETE
/channels/{channelId}/hold
Снять вызов с удержания
POST
/channels/{channelId}/play
Воспроизвести медиа файл
POST
/channels/{channelId}/record
Начать запись
GET
/bridges
Лист всех активных мостов (бриджей)
GET
/bridges
Лист всех активных мостов (бриджей)
POST
/bridges/{bridgeId}/addChannel
Добавить канал к бриджу
POST
/bridges/{bridgeId}/removeChannel
Удалить канал с бриджа
GET
/endpoints
Список оконечных устройств
GET
/endpoints/{tech}
Список оконечных устройств, которые функционируют по указанной технологии
GET
/endpoints/{tech}/{resource}
Детальная информация по оконечному устройству
GET
/sounds
Список звуков
GET
/sounds/{soundId}
Список звуков
Вы помните из прошлых статей, что BGP был создан для поддержки многих различных протоколов и NLRI непосредственно с момента его возникновения. В результате чего BGP поддерживает такие технологии, как IPV6, MPLS, VPN и многое другое.
Вы будете приятно удивлены тем, что как только вы овладеете основами BGP, которые мы рассмотрели в этом цикле статей, работа с BGP в IPv6 покажется очень простой!
Предыдущие статьи цикла про BGP:
Основы протокола BGP
Построение маршрута протоколом BGP
Формирование соседства в BGP
Оповещения NLRI и политики маршрутизации BGP
Масштабируемость протокола BGP
Видео: Основы BGP за 7 минут
BGP с IPv6
BGP настолько удивительно гибок, что, как обсуждалось ранее в этом цикле статей, можно использовать IPv4 в качестве «несущего» протокола для IPv6 NLRI. В данном случае мы рассматриваем IPv6 как «пассажирский» протокол. Давайте сначала рассмотрим конфигурацию и используем два простых маршрутизатора, как показано на рисунке 1.
Рисунок 1: Простая топология для IPv6 протокола BGP
Пример 1 показывает конфигурацию и проверку такой сети. Обратите внимание, что эта конфигурация требует установки соответствующего адреса следующего прыжка IPv6 для префиксного объявления. Это не требуется при использовании IPv6 как протокола «перевозчика», так и протокола «пассажира».
Пример 1: IPv4 «перевозящий» IPv6 NLRI
ATL#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ATL( config)#ipv6 unicast-routing
ATL(config)#route-map IPV6NH permit 10
ATL(config-route-map)#set ipv6 next-hop 2001:1212:1212::1
ATL(config-route-map)#exit
ATL(config)#int lo 100
ATL(config-if)#ipv6 address 2001:1111:1111: :/64 eui-64
ATL(config-if )#router bqp 200
ATL(config-router)#neiqhbor 10.10.10.2 remote-as 200
ATL(config-router) #address-family ipv4 unicast
ATL(config-router-af)#neiqhbor 10.10.10.2 activate
ATL(config-router-af)#address-family ipv6 unicast
ATL(config-router-af)#neiqhbor 10.10.10.2 activate
ATL(config-router-af)#neiqhbor 10.10.10.2 route-map IPV6NH out
ATL(config-router-af)#network 2001:1111:1111: :/64
ATL(config-router-af)#end
ATL#
Пример 2 показывает проверку этой конфигурации на ATL 2. Обратите внимание, что поскольку EUI-64 действует на интерфейсе обратной связи ATL, вам нужно будет скопировать полный IPv6-адрес из этого интерфейса, чтобы выполнить тестирование командой ping.
Пример 2: проверка настройки BGP IPv4/IPv6
ATL#show ip bgp ipv6 unicast
ATL2#ping 2001:1111:1111:0:C801:6FF:FEDB:0
Как вы можете догадаться, гораздо более «чистая» конфигурация заключается в использовании IPv6 для передачи информации IPv6 префикса. «Чистая» - это имеется в виду гораздо простая конфигурация. Пример 3 демонстрирует эту конфигурацию. Обратите внимание, что были удалены все IPv4 с устройств, поэтому необходимо установить 32-битный router ID для BGP, поскольку он не может установить его автоматически из интерфейса на устройстве.
Пример 3: проверка настройки BGP IPv4/IPv6
ATL1#conf t
ATL1(config)#router bgp 200
*Jan 9 03:31:21.039: %BGP-4-NORTRID: BGP could not pick a router-id.
Please configure manually.
ATL1(config-router)#bgp router-id 1.1.1.1
ATL1(config-router)#neighbor 2001:1212:1212::2 remote-as 200
ATL1(config-router)#address-family ipv6 unicast
ATL1(config-router-af)#neighbor 2001:1212:1212::2 activate
ATL1(config-router-af)#network 2001:1111:1111::/64
ATL1(config-router-af)#end
ATL1#
Возможно, вам будет интересно проверить соседство BGP после настройки IPv6. Мы очень любим использовать команду show ip bgp summary для проверки настроек в IPv4. Для IPv6 используйте команду show bgp ipv6 unicast summary.
Как вы помните из предыдущей части этой серии статей, существует много замечательных механизмов фильтрации, которые мы можем применить в IPv4 BGP. Замечательная новость заключается в том, что этот же набор методов, доступны и для IPv6. Ментоды включают в себя такие механизмы, как:
Prefix lists
AS Path Filtering
Route maps
Пример 4 показывает пример конфигурации фильтрации с использованием списка префиксов. Обратите внимание, что эта конфигурация действительно не требует от вас повторного изучения каких-либо технологий.
Пример 4: фильтрация префиксов IPv6 в BGP
ATL#conf t
ATL(config)#ipv6 prefix-list MYTEST deny 2001:1111:1111::/64
ATL(config)#ipv6 prefix-list MYTEST permit ::/0 le 128
ATL(config)#router bgp 200
ATL(config-router)#address-family ipv6 unicast
ATL(config-router-af)#neighbor 2001:1212:1212:: 2 prefix-list MYTEST out
ATL(config-router-af)#end
ATL#
ATL#clear ip bgp *