Vlad1983 писал(а):у человека стоит задача написать обработчик событий AMI
через несколько дней он узнает, что AMI генерится Asterisk-ом
через несколько месяцев, что Asterisk это аказывается IP-PBX
ещё через какое-то время, что IP-PBX может звонки обрабатывать не только со шлюзов, но ещё и программных клиентов
лечение косоглазия через задний проход
Это уже давно ясно.
А сейчас сделал один очень хороший вывод - диалплан нужно писать самому, а не делать через freepbx
Задачу с переадресацией буду решать программным путем в обработчике.
Это плохой вывод, от непонимания. Он хорош может быть только в частном конкретном случае. Да и то, выводится легко в отдельный контекст где нить в extensions_custom.conf
Просто не нравится как freepbx делает сам диалплан, через кучу разных контекстов, да и написание диал плана вручную, я думаю, заставит все это понять.
Понимаю ваше негодование по поводу моих знаний, но раньше с подобными вещами просто дела не имел совсем. На ближайшее время уже наметил занятие - поставить и настроить Астериск с нуля, благо книга есть.
А вся проблема с переадресацией в том, что мне нужно человеку, на которого переадресовали, показать реальный номер абонента, а не другого оператора, который на него этот звонок перекидывает. Тоже самое и с перехватом.
Уникальность, видимо, нужно делать или по UniqueID звонка или по Channel абонента, и хранить при этом данные о текущем звонке в каком-нибудь файле или таблице, т.е. если uniqueid или этот channel существует в этой таблице - значит это переадресованный звонок, иначе прямой. Логика получилась такая.
Но я еще не разобрался с цепочкой событий, которые генерит Астериск и кидает в AMI при переадресации.
Изначально при звонке идет Dial, потом оператор поднимает трубку и возникает Bridge/Link, дальше оператор хочет переадресовать и тоже вызывается Dial, а дальше картины не знаю, только предполагаю что происходит Bridge/Unlink оператора1 и канала абонента, а затем Bridge/Link оператора2 и канала абонента. Это так?
Кажется разобрался.
Если переадресовывать нажатиями клавиш на трубке, будут постоянные события Bridge Link/Unlink. Но ситуация совсем иная если переадресацию осуществлять при помощи команды Redirect, есть такая в AMI интерфейсе. А то мне эти постоянные Bridge ломали всю логику парсера.