Прикольно - сегодня новость появилась про http://www.venturevoip.com/news.php?rssid=2239.
Что делает решение чуть проще - не нужно вообще ничего отслеживать - достаточно пропихнуть один раз переменные и они все потом с каждым событием сами приходят...
при оригинации вызова через ami установить канальную переменную верхнего уровня
Variable: __var1=23
в нужном месте диалплана вставляем
NoOp(${var1})
ловим эвент Newexten, проверяем Application и AppData, усли это NoOp и 23, запоминаем uniqueid и отслеживаем по нему статус. Все это к тому, что при испольвовании локальных каналов отслеживать статус только по uniqueid не получается.
Чисто для информации - тут выяснилась еще одна неприятность.
Как бы я не хотел избежать имен каналов - связываться с ними все же приходится ибо у нас в вебе конференции есть кнопка "Disconnect" в дополнение к "Kick" которая просто хэнгапает звонок без слов "you have been kicked from the conference". И для этого хэнгапа нужно имя канала.
и вот сейчас выяснилась пренеприятнейшая вещь - даже ивент MeetmmeJoin rоторый я ловлю и который дает мне имя подсоединившегося канала - может давать НЕ ОКОНЧАТЕЛЬНОЕ имя. Т.е. судя по ивентам в meetme входит Local/xxxxxx а уже через секунду такого канала на станции нет и даже meetme list возвращает уже не Local/xxxxx а SIP/yyyyy.
э-э-э какбэ локальный канал после установления соединения между конечными точками моментально исчезает, если не определено обратное специальной опцией. Остается токо номер исходного канала (вроде как) или бразуется новый номер.
Создавай просто переменные канала (я делаю прямо в sip.conf) и свети, где надо, юзерэвентом.
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
Я понимаю что локальный канал маскарадится и исчезает. Поэтому у меня и так уже все на юзеривентах сделано и по uniqueID а не по имени каналы матчатся.
Но не избавится от имени канала если хочешь иметь возможность hangup произвольного мембера конференции. Именно hangup а не kick - т.е. просто оборвать звонок не говоря ему слов что его кикнули. Так вот для hangup как ни крути а нужно имя канала потому как хэнгапа по uniqueID просто нет :)
В любом случае я считаю глобальной подставой что маскарадинг может быть не заверщен до того момента как meetme посылает AMI ивент MeetmeJoin. Это реально неприятный сюрприз что имя канала полученное в MeetmeJoin НЕ соответствует потом тому что возвращяет CLI meetme list.