По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
В 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}
Список звуков
Основной задачей, серверов является быть площадкой для функционирования серверного ПО или предоставления сервиса от (англ. Service - Сервис). Одним из основных сервисов в офисе, является сервис доступа к Internet для сотрудников офиса. Данный сервис необходимо предоставлять для сотрудников в целях осуществления ими своих служебных обязанностей. Обычно данный сервис, предоставляется по заранее определенным правилам для данного офиса или сотрудников.
Классическим вариантом для предоставления данного сервиса является ОС CentOS 7 + Squid.
Данная Связка очень распространена. Будем считать, что у нас имеется уже установленная ОС CentOS7 с подключением в интернет и доступна по порту 22 ssh для настройки.
Установка
Первое, что нам необходимо сделать это обновить ОС.
yum update
Если машина является прокси сервером, то логично предположить, что у нее должен быть включен Firewall, следовательно, нам нужно открыть во внутрь порт, на который сервис squid будет принимать подключения от клиентов внутренней сети. В большинстве случаев используют порт 3128, но можно взять любой не занятый.
Настраиваем правило на Firewall:
firewall-cmd --permanent --add-port=3128/tcp
И обязательно надо перезапустить сервис:
firewall-cmd --reload
Далее переходим к установке и настройке непосредственно самого Squid. Установка производится следующей командой:
yum install squid -y
Открываем файл конфигурации для правки и добавления:
nano /etc/squid/squid.conf
В конфигурации прописаны стандартные подсети, но иногда подсеть пользовательских ПК не совпадает со стандартной или не входит, то вносим ее в конфигурационный файл acl localnet src 217.33.25.0/24
Чтобы наш прокси сервер пропускал любой трафик, необходимо добавить следующую строчку в конфигурацию http_access allow all
Очень важно, чтобы данная строчка была в конфигурации выше строчки запрещающего правила. Запрещающая строчка выглядит так: http_access deny all
Следующим шагом необходимо настроить каталок для кэша:
cache_dir ufs /var/spool/squid 8192 32 256
В данной команде ufs - файловая система для squid данная файловая система используется для squid, путь для хранения кэша, 8192 - размер в МБ сколько будет выделено под кэш, 32 количество каталогов первого уровня для размещения кэша, 256 количество каталогов второго уровня.
Следующим шагом будет создание структуры директорий для кэширования. Это можно сделать следующей командой: squid -z и вот наш прокси-сервер уже готов можно запускать прокси сервер, командой: systemctl start squid. А чтобы необходимый сервис запускался автоматически после перезагрузки или отключения сервера добавляем сервис наш в автозапуск: systemctl enable squid
Дополнительной настройки для https не требуется все должно работать по умолчанию. И обязательно перезагрузить squid следующей командой systemctl restart squid
Для управления squid можно пользоваться командой service status squid, service stop squid.
Если сделанные изменения не затрагивают глобальных параметров, можно вообще не перезапускать сервис целиком, а дать команду squid перечитать конфиг squid -k reconfigure. Сервер для приема и проксирования соединений готов. Следующей задачей является настройка клиентских ПК для его использования. Если офис не большой 20-30 пользователей можно решить задачу, что называется в лоб. Сделать настройку в браузере в ручном режиме: Идем, Панель управления → Свойства Браузера → Подключения → Настройка сети → убираем галочку "Автоматическая настройка сети", добавляем галочку в поле "Прокси-Сервер", использовать прокси сервер для локальных подключений, в поле адрес прописываем или FQDN имя сервера и в поле порт 3128.
Важный момент! FQDN имя сервера должно правильно разрешатся в DNS службе, указанной в настройках сетевого подключения. Проверить можно просто, открываем командную строку и пишем nslookup FQDN, если команда возвращает правильный ip адрес, то все сделано правильно.
Рассмотрим вариант, когда у нас большое количество пользовательских ПК 100+. Естественно в такой ситуации проблематично сразу, всем сделать настройку для использования прокси-сервера.
Самый оптимальный путь в данном случае это настройка параметров браузера, через WPAD файл и доставка на ПК сотрудника через web сервис.
Устанавливаем web сервис:
yum install httpd -y
Переходим в рабочий каталог:
cd /var/www/html
Создаем новый файл командой touch wpad.dat и приводим его вот к такому виду, как на картинке:
Файл состоит из java скрипта основная строчка return "PROXY FQDN:3128"; Это то, что попадет в настройки в веб браузеры ваших пользователей. Первая часть готова! Далее нам надо доставить данные настройки конечным пользователям. В этом нам поможет DHCP. Можно конечно сделать, через DNS, но там больше мороки на мой взгляд. Проще всего использовать DHCP сервер, но для этого необходимо внести коррективы и добавить дополнительную опцию 252, где будет указан url файла авто настройки. Данная опция может применятся на машину или на целую подсеть, а далее уже вместе с остальными настройками попадает на конечную машину пользователя.
Запускаем веб и ставим в автозагрузку:
systemctl start httpd systemctl enable httpd
DHCP сервер настраивается следующим образом:
Открываем консоль управление DHCP сервера. В свойствах сервера выбираем управление опциями -Set predefined Option. И добавляем опцию 252 - Имя -WPAD, код 252 Тип данных - String, Описание Web Proxy WPAD.
Затем в поле String добавляем значение URL по умолчанию и сохраняем параметр. После этого мы можем данную опцию применять, либо к серверу в целом либо к определенной областиподсети адресов.
Мы продолжаем обзор бюджетных решений сегмента SOHO (Small office/home office). Если в Вашем офисе установлен роутер ZyXEL последних поколений, то Вы можете расширить его функционал и сделать из него базовую станцию по стандарту DECT, к которой можно будет подключить 6 телефонных трубок и вести до 4 одновременных разговоров. Интересно? Тогда в статье расскажем, как настроить данный DECT модуль для ZyXEL Keenetic и интегрировать с IP – АТС Asterisk.
/p>
Настройка
Все очень просто – USB модуль для DECT подключается в соответствующий интерфейс роутера, после чего его необходимо перезагрузить. Далее в интерфейсе маршрутизатора появится опция настройки DECT – телефонии. Приступим к настройке. Открываем вкладку DECT – база:
Производим настройки следующих параметров:
Общие настройки
Включить DECT – базу - отметить галочкой
PIN-код регистрации трубок - пин - код, который пользователь будет вводить на трубке при регистрации.
Ожидание начала работы - время ожидания набора номера. Например, абонент нажал кнопку звонка и не ввел номер в течение указанного в данном поле времени. По его истечению он услышит короткие гудки.
Ожидание набора следующей цифры - при наборе номера, абоненту будет дано указанное в данном поле время на ввод одной цифры номера.
Параметры SIP
Имя агента пользователя - имя, которое будет подставляться в user agent в SIP сообщениях
Локальный UDP-порт SIP - порт, на котором роутер будет слушать SIP запросы, отправленные UDP транспортом
Локальный TCP-порт SIP - порт, на котором роутер будет слушать SIP запросы, отправленные TCP транспортом
Локальный TLS-порт SIP - порт, на котором роутер будет слушать SIP запросы, отправленные TLS (шифрование) транспортом
Диапазон портов RTP - UDP порты, на которых ZyXEL будет принимать/отправлять RTP потоки
Сервер STUN - если Ваш сервер IP – АТС находится за NAT от DECT устройства, укажите здесь его внешний адрес. Если внутри, укажите просто IP – адрес Asterisk
Приоритет кодеков - кодеки, которые будет использовать Keenetic. Проверьте, чтобы указанные здесь значения совпадали с кодеками на IP – АТС Asterisk.
Создаем внутренний номер на IP – АТС Asterisk с помощью графического интерфейса FreePBX 13. Переходим во вкладку Applications → Extensions и нажимаем Quick Create Extension. Создаем 101 номер.
С процессом создания внутреннего номера Вы можете более детально ознакомиться в статье по этой ссылке.
После успешного добавления, переходим во вкладку Телефонные линии через интернет на роутере и нажимаем добавить линию:
Включить линию - отметить галочкой
Название линии, SIP ID, Отображаемое имя, Логин - указываем созданный номер. В нашем случае это 101
Пароль - значение из поля secret в FreePBX.
Провайдер - выберите другой из пула доступных провайдеров телефонных услуг
Сервер регистрации SIP, Домен SIP, Прокси - сервер SIP - укажите IP – адрес IP – АТС Asterisk.
Важно: В новых версиях, по умолчанию, драйвер chan_sip функционирует на порту 5160. Если не указать порт, то DECT будет отправлять запросы на дефолтный порт 5060. Вы можете указать нужный IP:ПОРТ через двоеточие.
Остальные параметры можно оставить без изменений. Сохраняем настройки и видим, что наша 101 линия подключена:
Подключите трубку к DECT – базе с помощью пин – кода, который мы указывали в начале настройки. Далее, переходим в раздел DECT - трубки и для доступного производим настройки, через какую линию необходимо принимать и совершать звонки:
Тем самым, в итоге, у нас получится следующая картина:
Готово! Теперь можно принимать и совершать звонки: