[Модуль] Asterisk (app_asterisk)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

[Модуль] Asterisk (app_asterisk)

Сообщение Alien » Пн фев 08, 2016 9:46 pm

Бета версия

Адрес репозитория 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
setup.jpg (116.26 КБ) 13791 просмотр
usage.jpg
usage.jpg (119.42 КБ) 13791 просмотр
Последний раз редактировалось Alien Сб мар 26, 2016 6:50 pm, всего редактировалось 4 раза.
За это сообщение автора Alien поблагодарили (всего 3):
ErmolenkoM (Вт фев 09, 2016 7:39 am) • Otto (Чт апр 07, 2016 8:47 pm) • Bolik.Stav (Вс июн 07, 2020 1:46 pm)
Рейтинг: 3.49%
Ubuntu на Banana pi M2U Connect
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: Модуль Asterisk

Сообщение Geban » Вт фев 09, 2016 1:09 am

Этак вы Elastix сделаете ) Астериском можно рулить через AMI. Достаточно простой обмен,но в коде будет очень много парсинга строк ответа от станции.
Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

Re: Модуль Asterisk

Сообщение Alien » Вт фев 09, 2016 9:47 am

:) Сомневаюсь в наличии достаточных знаний и времени. Но несколько автоматизировать не мешает.
Ubuntu на Banana pi M2U Connect
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: Модуль Asterisk

Сообщение Geban » Вт фев 09, 2016 11:02 am

ну зачем же так... например мониторить состояние телефонов не сложно. Нужно отправить астеру строку 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";
 {
{
 
Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

Re: Модуль Asterisk

Сообщение Alien » Вт фев 09, 2016 12:11 pm

Спасибо. О безопасности я высказывал свое мнение в ветке MAJORDOMO + VoIP.
Давать вебу доступ на запуск от имени рута или астериска рискованно. Нужны обходные безопасные решения.
Ubuntu на Banana pi M2U Connect
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: Модуль Asterisk

Сообщение Geban » Вт фев 09, 2016 12:13 pm

согласен, опасно. Но в моем случае сервер находится во внутренней сети и не имеет выхода наружу..как и входа снаружи.
Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

Re: Модуль Asterisk

Сообщение Alien » Вт фев 09, 2016 12:21 pm

Пробовал я настраивать себе sip-фон снаружи, так что сервер светился в инет. Установил, естественно, fail2ban и наблюдал картину постоянных попыток взлома. Так что на данный момент тоже закрыл доступ.
Ubuntu на Banana pi M2U Connect
Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: Модуль Asterisk

Сообщение Geban » Вт фев 09, 2016 1:11 pm

я так с ami попал разок... хорошо вовремя заметил в консоли попытки звонить на странные номера.. потушил канал вовремя..
Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

Re: Модуль Asterisk

Сообщение Alien » Вт фев 09, 2016 1:13 pm

В чем я сомневаюсь,так это в самой структуре. Делать ли ее стандартной, как в примерах по астериску или изменяемой. Имеется в виду наименования таблиц, колонок и прочего RealTime asterisk. Изначально, по таблице CDR, написал стандартно, потом решил что имя таблицы и колонок у других пользователей могут отличаться и добавил тонкую настройку. А вот теперь думаю а стоило ли?
Если модуль начнет разрастаться, то по каждому чиху тогда придется тонкую настройку делать. И на users, и на voicemail и на мало ли что напишется. Может все-таки писать по рекомендациям asterisk и давать ссылки на мануалы по настройке?
Хотелось бы услышать мнение заинтересованных лиц :)
Ubuntu на Banana pi M2U Connect
Alien
Сообщения: 191
Зарегистрирован: Пт дек 20, 2013 4:46 pm
Благодарил (а): 72 раза
Поблагодарили: 38 раз

Re: Модуль Asterisk

Сообщение Alien » Вт фев 09, 2016 1:16 pm

а ami планирую через phpagi реализовывать. у него доступ четко ограничен локальной машиной и правами пользователя. а модуль уже через него будет работать с asterisk.
Ubuntu на Banana pi M2U Connect
Ответить