По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Дорогой читатель! В поисках полезной автоматизации и кастомизации своего Asterisk продвинутые администраторы прибегают к использованию различных скриптов. Это может быть PHP, Perl C, Pascal или Shell. Для использования скриптов, написанных на одном из перечисленных языков программирования в диалплане Asterisk используется AGI (Asterisk Gateway Interface) – о нем и поговорим.
Как это работает?
AGI - это прослойка между скриптом и диалпланом (планом набора) в Asterisk. В скрипт мы можем передавать различные переменные, а можем получать какие - то значения из скрипта. Когда Asterisk инициирует запуск скрипта через AGI, он передает в него набор переменных. Все переменные обладают префиксом agi_:
Переменная
Описание
Пример
agi_request
Имя файла исполняемого скрипта
trunk.php
agi_channel
Канал, инициирующий звонок
Local/89123456789@from-internal-00000002;2
agi_language
Языковой код
en
agi_type
Тип канала, инициирующий вызов
Local
agi_uniqueid
Уникальный идентификатор звонка
1497364935.15
agi_version
Версия Asterisk
13.10.0
agi_callerid
Номер звонящего (CID Number)
89123456789
agi_calleridname
Имя звонящего (CID Name)
89123456789
agi_dnid
Набранный номер
unknown
agi_context
Контекст обработки вызова
macro-dialout-trunk
Как вызвать AGI в диалплане?
Вызвать AGI скрипт очень просто: предварительно, загрузите скрипт в директорию /var/lib/asterisk/agi-bin/. После этого, скрипту необходимо дать права и собственника. Предположим, наш скрипт называется trunk.php:
chmod 755 /var/lib/asterisk/agi-bin/trunk.php
chown asterisk:asterisk /var/lib/asterisk/agi-bin/trunk.php
Теперь, чтобы скрипт был вызван в диалплане, просто добавьте следующую конструкцию:
exten => 1333,n,AGI(trunk.php)
Просто, не правда ли? А если мы хотим передать переменную в скрипт? Просто добавьте ее после запятой:
exten => 1333,n,AGI(trunk.php, ${CALLERID(number)})
А как же написать скрипт?
Теперь к самому скрипту – напишем его на PHP. Пусть нам нужно отправлять письмо с номером звонящего. Выглядеть скрипт будет так:
#!/usr/bin/php -q
<?php
require('phpagi.php');
$agi = new AGI(); //подключаем файл phpagi.php – 1 и 2 строки обязательны в любом скрипте
$cid = $agi->request['agi_callerid']; // берем из AGI номер звонящего
mail("info@merionet.ru", 'Привет!', 'Вот и номер звонящего:', $cid); //отправляем в письме
Вот и все. Нам будет приходить на почту письмо с номером звонящего – прокачав данный функционал можно отслеживать пропущенные вызовы, например.
Сегодня хотим предложить крутой функционал, который тебе захочется установить на своей IP – АТС Asterisk прямо сейчас! Речь пойдет про отправку записи разговора на адрес электронной почты со всеми причитающимися метаданными звонка. Работает это примерно вот так: ваш сотрудник поговорил по телефону, положил трубку, после чего, ответственному по электронной почте приходит письмо с записью разговора, датой и временем звонка, а также номерами А и Б.
Настроить эту «фичу» очень легко. Приступаем к настройке.
Bash скрипт для Asterisk
Сам по себе скрипт написан на bash. Скрипт будет инициироваться сразу после окончания звонка и в него будут переданы нужные для работы переменные. Но об этом чуть позже:
#!/bin/bash
dt=$(date '+%m/%d/%Y %r');
echo -e "Привет! Появилась новая запись разговоров на нашем сервере Asterisk
Звонок был совершен $dt
Нам позвонил этот номер - $5
Вызов принял - $7
Запись разговора во вложении
" | mail -a /var/spool/asterisk/monitor/$1/$2/$3/$6 -s "Новая запись разговоров" info@merionet.ru
Пробежимся по переменным, которые будут относится к звонку и будут передаваться (все кроме $dt) с Asterisk:
$1 - год звонка;
$2 - месяц звонка;
$3 - день звонка;
$4 - дата и время в формате строки;
$5 - источник звонка (звонящий);
$6 - имя файла аудио – записи разговора;
$7 - куда был совершен вызов;
$dt - генерируем дату звонка;
Переходим в консоль сервера Asterisk. Первым делом создаем файл с расширением .sh в него мы поместим наш скрипт:
touch /var/lib/asterisk/bin/rectoemail.sh
Даем файлу нужные права и разрешения:
chown asterisk:asterisk rectoemail.sh
chmod 774 rectoemail.sh
Теперь открываем сам файл скрипта для редактирования:
vim /var/lib/asterisk/bin/rectoemail.sh
И добавляем скрипт в файл. Для того, чтобы сделать это, скопируйте скрипт из статьи. В режиме редактирования через vim нажмите «o» на клавиатуре, затем нажмите правую кнопку мыши – скрипт будет добавлен в файл. После этого, нажмите Esc на клавиатуре и комбинацию :x! + Enter для сохранения изменений. Готово.
Доработка в FreePBX
Теперь нужно поставить наш скрипт на автоматический запуск. Переходим в раздел Settings → Advanced Settings. Убеждаемся, что параметры Display Readonly Settings и Override Readonly Settings установлены в значение Yes.
Теперь находим параметр Post Call Recording Script и добавляем в его поле следующую строчку:
bash /var/lib/asterisk/bin/rectoemail.sh ^{YEAR} ^{MONTH} ^{DAY} ^{TIMESTR} ^{FROMEXTEN} ^{CALLFILENAME}.^{MIXMON_FORMAT} ^{ARG3}
Готово. Сохраняем настройки и переходим к тестам:
Управление компьютерной сетью процесс довольно трудоемкий и динамичный. Поэтому разработка инструментов по обслуживанию компьютерных сетей не менее важный процесс, чем, собственно, расширение самих сетей. На сегодняшний момент в распоряжении сетевых администраторов представлены несколько наборов инструментов, позволяющих существенно облегчить развертывание, настройку и обновление конфигурации как небольших локальных сетей, так и достаточно масштабных объединений кластеров, насчитывающих десятки тысяч машин. Самые популярные из них это Salt, Ansible, Puppet и Chef, преимущества и недостатки которого мы и разберем в этой статье.
Что же такое Chef? Это система конфигурирования сети, которая "заточена" под кулинарную тематику. Вкратце, система основана на "рецептах" файлах конфигурации, которые администратор объединяет в "кукбуки", или "кулинарные книги" сценарии поведения сети. Эти сценарии помещаются в хранилище, или "книжный шкаф", откуда актуальный набор конфигураций извлекается и устанавливается на клиентские машины в автоматическом режиме. Все операции исполняются с помощью консольного инструмента, который создатели ласково окрестили "шефским ножом".
Что же хорошего можно ожидать от томного итальянского шеф-повара?
Быстрота развертывания: При правильном прописывании параметров конфигурации, добавление в сеть нового устройства, или даже целого кластера достаточно простая и не требующая долгого времени операция. То, что еще лет пять назад требовало ручных настроек и двух-трех дней работы, с помощью Chef выполняется автоматически в течении считанных минут.
Гибкость настроек: Благодаря Bookshelf’ам, Chef позволяет создать несколько сценариев поведения сети, которые позволяют за короткое время переконфигурировать сеть оптимальным образом для выполнения определенного рода задач. Такая возможность актуальна для тех сетей, которые требуют быстрой адаптации под нужды компании. Оперативное перераспределение ресурсной мощности сети один из главных козырей данного решения
Доступность: Решение Chef широко распространено и доступно для широкого круга пользователей. Любой интересующийся человек может скачать ознакомительную версию и попробовать писать свои рецепты, и если дело пойдет можно приобрести лицензию и внедрять решения Chef непосредственно в рабочий процесс.
Мультиплатформенность: Рецепты Chef можно адаптировать под любую операционную систему, и менять конфигурациии ОС клиентских машин независимо от того, какая ОС на них установлена.
А где этот любитель женщин и хорошего вина слабоват?
Человеческий фактор: Применение решений Chef требует от оператора внимательности и хорошего знания конфигурирования сети. Если ошибиться в коде и применить некорректные настройки можно столкнуться с рядом проблем, от потери соединения до полной потери данных с выходом удаленного оборудования из строя.
Безопасность: Важнейшей задачей при работе с Chef является защищенность рабочей станции. Если не обеспечить защиту сети должным образом, то проникновение в систему злоумышленника и перехват управления системой может привести к серьезному ущербу, особенно в сетях крупных корпораций.
Громоздкость: Рецепты Chef зачастую достаточно объемны, и это порождает некоторые сложности в их применении. Каждая строка настроек конфигурации должна быть выверена, и это требует от оператора особого внимания при создании и при проверке рецептов и кукбуков.
Прожорливость: Данное решение на текущий момент несколько уступает конкурентам в производительности и потреблении ресурсов рабочей станции. Однако, работы над оптимизацией Chef ведутся непрерывно, поэтому продукт в ближайших версиях обещает быть более оптимизированным и эффективным.
Итак, если сравнивать Chef с аналогичными продуктами от других разработчиков (а именно Ansible, Salt и Puppet), то данное решение будет несколько уступать в управляемости, за счет сложности описания рецептов (но это дело привычки), а также по производительности. По заявлениям специалистов Chef Enterprise идеальный инструмент именно для сферы разработки ПО. Работы над оптимизацией программы ведутся, и новые версии обещают быть более эффективными и производительными.
Вывод
Несмотря на наличие минусов, Chef остается одним из наиболее популярных и востребованных инструментов администратора сети. Данное решение имеет свои достоинства, а недостатки, как очевидно, легко устранимы. Поэтому данная программа имеет множество сторонников применения в самых разных компаниях.