передача переменных DUNDi пирам
Привет.
три станции ищут зарегистрированных юзеров друг на друге через DUDNDi и передают звонки на них через
switches {
DUNDi/users;
};
Все работает, все хорошо. Теперь появилась необходимость вместе со звонком отправлять на ремоутную станцию еще какие-то переменные. Тут затык. Способов я знаю два:
1. Использовать функцию IAXVAR (появилась в 1.6, особо не смотрел)
2. просто приклеивать значения переменных к URL который вернул duundi lookup и модифицировать приемную сторону чтобы она эти значения вытаскивала. То есть если лукап возвращает IAX2/user:pass@host/ext то в Dial делать как Dial(IAX2/user:pass@host/ext:${VAR1}:${VAR2}:${VAR3});
Такой способ должен работать и в 1.4 где IAXVAR нет.
Проблема в чем: любой из этих способов больше не дает возможности использовать switch - нужно ручками в диалплане делать lookup+dial. Это потому что перед Dial наружу (который свитч сделал бы сам) теперь нужно явно сделать какие-то действия - или проставить IAXVAR или модифицировать URL для Dial.
В результате больше нет контекста который можно было бы заинклюдить и он бы сам обрабатывал все экстеншены которые сматчились лукапом - всместо этого нужно делать экстеншен который ловит все возможное (типа _X.), делает lookup и если не получилось - Goto куда-то еще для продолжения обработки. В результате у меня вообще пропадает возможность при звонке быстро сказать что экстеншен невалидный потому что не матчится ни в одном контексте - вместо этого я должен _попытаться_ таки выполнить любой звонок сделав ручками кучу лукапов чтобы в конце таки сказать - "не срослось".
Вопрос - как по другому? Кто-то делал что-то подобное?
|