Страница 1 из 4
[Модуль] Asterisk (app_asterisk)
Добавлено: Пн фев 08, 2016 9:46 pm
Alien
Бета версия
Адрес репозитория
https://github.com/szolenko/app_asterisk.git
Модуль для интеграции Мажордомо и платформы IP-телефонии Asterisk.
Реализовано:
Просмотр истории звонков. Настройка имени таблицы и пути хранения файлов записей разговоров. Подробности по созданию таблицы CDR и настройки Asterisk можно посмотреть
здесь или
здесь, навскидку.
Подключение к серверу астериск через phpagi. Прослушивание событий. При получении нового для МД события оно записывается новым методом в класс AsteriskAMI и объект Asterisk с комментарием в виде полученного от сервера массива данных. При получении уже существующего события запускается соответствующий метод.
В разработке:
В планах:
Мониторинг телефонов.
Управление диалпланом.
История:
08.02.2016 Бета версия. История звонков.
20.02.2016 Исправлен фильтр звонков. Добавлено удаление звонков.
25.02.2016 Мониторинг событий сервера, создание методов в классе астериск.
23.03.2016 Модуль переработан, добавлена отправка команд в астериск. НЕСТАБИЛЬНАЯ РАБОТА ЦИКЛА!
25.03.2016 Вернулся к мульти-методам. Цикл работает стабильно.

- setup.jpg (116.26 КБ) 14855 просмотров

- usage.jpg (119.42 КБ) 14855 просмотров
Re: Модуль Asterisk
Добавлено: Вт фев 09, 2016 1:09 am
Geban
Этак вы Elastix сделаете ) Астериском можно рулить через AMI. Достаточно простой обмен,но в коде будет очень много парсинга строк ответа от станции.
Re: Модуль Asterisk
Добавлено: Вт фев 09, 2016 9:47 am
Alien

Сомневаюсь в наличии достаточных знаний и времени. Но несколько автоматизировать не мешает.
Re: Модуль Asterisk
Добавлено: Вт фев 09, 2016 11:02 am
Geban
ну зачем же так... например мониторить состояние телефонов не сложно. Нужно отправить астеру строку event dump cache DeviceState в ответ получится много вот таких блоков
Код: Выделить всё
Event: DeviceState
Device: SIP/138
State: 1
Cachable: 1
EntityID: 00:1a:64:d1:24:c5
все что нужно отсюда это строка Device в ней номер и State это состояние где 1 - Idle (в режиме ожидания) 2 - Busy (занят, разговаривает). Остальные состояния легко гуглятся.
Вот код который работает и по сей день и работает уже почти 2 года. По определенным причинам связанным с безопасностью не стал использовать AMI и запустил скрипт на сервере где живет астериск
Код: Выделить всё
$test = shell_exec('asterisk -rx \'event dump cache DeviceState\'');
$block = explode("Event", $test);
for($i=0; $i<sizeof($block);$i++)
{
$wrets = $block[$i];
preg_match_all('/SIP\/([0-9][0-9][0-9])/',$wrets,$peers,PREG_SET_ORDER);
preg_match_all('/State:(.*)/',$wrets,$state,PREG_SET_ORDER);
if(isset($peers[0][0])) {
$ps = "Unknown";
if($state[0][1] == '1') {$ps = "Idle";};
if($state[0][1] == '2') {$ps = "BUSY";};
echo $peers[0][0]."\r\n";
echo "State:".$state[0][1]."\r\n";
echo "State:".$ps."\r\n";
{
{
Re: Модуль Asterisk
Добавлено: Вт фев 09, 2016 12:11 pm
Alien
Спасибо. О безопасности я высказывал свое мнение в ветке
MAJORDOMO + VoIP.
Давать вебу доступ на запуск от имени рута или астериска рискованно. Нужны обходные безопасные решения.
Re: Модуль Asterisk
Добавлено: Вт фев 09, 2016 12:13 pm
Geban
согласен, опасно. Но в моем случае сервер находится во внутренней сети и не имеет выхода наружу..как и входа снаружи.
Re: Модуль Asterisk
Добавлено: Вт фев 09, 2016 12:21 pm
Alien
Пробовал я настраивать себе sip-фон снаружи, так что сервер светился в инет. Установил, естественно, fail2ban и наблюдал картину постоянных попыток взлома. Так что на данный момент тоже закрыл доступ.
Re: Модуль Asterisk
Добавлено: Вт фев 09, 2016 1:11 pm
Geban
я так с ami попал разок... хорошо вовремя заметил в консоли попытки звонить на странные номера.. потушил канал вовремя..
Re: Модуль Asterisk
Добавлено: Вт фев 09, 2016 1:13 pm
Alien
В чем я сомневаюсь,так это в самой структуре. Делать ли ее стандартной, как в примерах по астериску или изменяемой. Имеется в виду наименования таблиц, колонок и прочего RealTime asterisk. Изначально, по таблице CDR, написал стандартно, потом решил что имя таблицы и колонок у других пользователей могут отличаться и добавил тонкую настройку. А вот теперь думаю а стоило ли?
Если модуль начнет разрастаться, то по каждому чиху тогда придется тонкую настройку делать. И на users, и на voicemail и на мало ли что напишется. Может все-таки писать по рекомендациям asterisk и давать ссылки на мануалы по настройке?
Хотелось бы услышать мнение заинтересованных лиц

Re: Модуль Asterisk
Добавлено: Вт фев 09, 2016 1:16 pm
Alien
а ami планирую через phpagi реализовывать. у него доступ четко ограничен локальной машиной и правами пользователя. а модуль уже через него будет работать с asterisk.