Как передать переменную?
Сообщений: 276
|
Re: Как передать переменную?
zzuz: и где используется искомый контекст internal-1 ?
Это контекст оператора. Который собственно принимает вызов, ставит его на холд, и выполняет вызов.
|
Сообщений: 276
|
Re: Как передать переменную?
Кусок из CLI
[Feb 17 19:02:18] -- Executing [0001@iaxpeer:4] Set("IAX2/msk01-14516", "__CLNUM=19") in new stack
CLNUM это и есть тот ZZZ =)
|
Откуда: SPb
Сообщений: 1307
|
Re: Как передать переменную?
короче . ael , не ael . компилиться все равно как астериску удобно. переменная назначется правильно , но видимо не в том месте , или не в том месте вызывается , или вызов не попадает в контекст , где назначается переменная . конекст в студию , там ясно будет.
|
Сообщений: 276
|
Re: Как передать переменную?
zzuz: короче . ael , не ael . компилиться все равно как астериску удобно. переменная назначется правильно , но видимо не в том месте , или не в том месте вызывается , или вызов не попадает в контекст , где назначается переменная . конекст в студию , там ясно будет.
context iaxpeer {
_0001 => {
Set(CHANNEL(language)=ru);
__QID = ${UNIQUEID};
__REC = 1;
__CLNUM = ${CALLERID(number)};
__QNAME = test;
Queue(queue-test);
};
context internal-1 {
_81XXXX => {
NoOp({CLNUM});
goto internal-1,${EXTEN:-4},1;
..........
этого достаточно.
мемберы в queue.conf статические (SIP/...)
после ответа мембера выполняется макрос из extensions.conf
в нём NoOp-ы работают. после него - нет.
имхо бага астериска. попробую проапгрейдиться, может поможет =)
|
Откуда: SPb
Сообщений: 1307
|
Re: Как передать переменную?
Ну хорошо . Звоню я вам через iax , на номер 0001 , попадаю на экстеншен 0001 , тут всё красиво , назначили переменных и со спокойной совестью отправились звонить в очередь .
А контекст internal-1 ? он для пиров чтоль прописан? или в queue.conf прописан ? как из контекста iaxpeer я попаду в контекст internal-1 ? . И заметьте , что это должно быть одним каналом , как максимум можно зафоркать вызов (что идеи не меняет)
|
Сообщений: 276
|
Re: Как передать переменную?
internal-1 это контекст оператора. писал же ведь. прописан в sip.conf для участников, входящих в queue-test.
короче после макроса всё сбрасывается. в самом макросе если вызвать NoOp - всё работает. имя макроса задается в queues.conf. макрос прописан в extensions.conf. который как ему и положено срабатывает в момент ответа оператора (делает запись разговора и еще некоторые мелочи). попробую его отключить, вдруг повлияет как-то =)
кстати этот трабл можно запостить на bugs.digium
обычно они пишут "тестируйте на последней версии, типа ваш вопрос идёт лесом". тут пойдут лесом они, т.к. у меня версия 1.6.0.14 - на данный момент последняя в бранче 1.6.0.х, есть еще -15, но она rc.
|
Откуда: Москва
Сообщений: 3421
|
Re: Как передать переменную?
Попробуйте смоделировать целиком на extensions.conf, без AEL вообще.
Смутно припоминаю, что сталкивался с этим. Че делал - не помню :-)
Чердак освобождается от мусора.
|
Сообщений: 1573
|
Re: Как передать переменную?
Newborn:
context iaxpeer {
_0001 => {
Set(CHANNEL(language)=ru);
__QID = ${UNIQUEID};
__REC = 1;
__CLNUM = ${CALLERID(number)};
__QNAME = test;
Queue(queue-test);
};
context internal-1 {
_81XXXX => {
NoOp({CLNUM});
goto internal-1,${EXTEN:-4},1;
А что команду Set не нужно ставить в строках?
_0001 => {
Set(CHANNEL(language)=ru);
Set(__QID=${UNIQUEID});
Set(__REC=1);
Set(__CLNUM=${CALLERID(number)});
Set(__QNAME=test);
Queue(queue-test);
};
И маска в контексте какая то непонятная. Что она означает - '_0001' ?
|
Сообщений: 276
|
Re: Как передать переменную?
обычная маска, для тестов сделал.
set в AEL не нужен. без него работает. ведь если я вызываю эту переменну в макросе для queue, то она там отображается.
переносить всё в extensions.conf не буду.
|
Сообщений: 1573
|
Re: Как передать переменную?
Newborn: обычная маска, для тестов сделал.
Я к тому, что это - не маска, а полный экстен.
Newborn: set в AEL не нужен. без него работает.
Это из демо:
context ael-demo {
s => {
Wait(1);
Answer();
Set(TIMEOUT(digit)=5);
Set(TIMEOUT(response)=10);
context iaxpeer {
_0001 => {
Set(CHANNEL(language)=ru);
__QID = ${UNIQUEID};
__REC = 1;
__CLNUM = ${CALLERID(number)};
__QNAME = test;
NoOp(${CLNUM});
Queue(queue-test);
};
Добавьте NoOp в контекст и покажите вывод CLI ....
|
|