Страница 1 из 1

Исходящие звонки идут не через тот канал

Добавлено: 03 апр 2014, 10:26
andrystepa
Соответствие внутренних номеров внешним каналам хранится в базе данных Asterisk. Вот настройка исходящий звонков в диалплане:

Код: Выделить всё

[out]
exten => _XXXXXXX,1,Goto(8495${EXTEN},1)
exten => _8XXXXXXXXX.,1,Set(CDR(userfield)=OUT_WESTCALL)
exten => _8XXXXXXXXX.,n,Macro(record,out/westcall)
exten => _8XXXXXXXXX.,n,ExecIf($[${DB_EXISTS(dialout/${CALLERID(num)})}]?Set(VIA=${DB(dialout/${CALLERID(num)})}):Set(VIA=1409005))
exten => _8XXXXXXXXX.,n,Dial(SIP/1409003/0${EXTEN},,tT);
exten => _8XXXXXXXXX.,n,Dial(SIP/1409004/0${EXTEN},,tT);
Т.е. если соотвествующий канал занят, то звонок идет либо через 1409005 либо 1409003, либо 1409004.
Однако, почему-то все исходящие звонки идут через 1409003. В мониторе в момент звонка я вижу следующее:

Код: Выделить всё

[Apr  3 09:43:13]     -- Executing [89161581476@from_office:3] ExecIf("SIP/911-00000b4c", "1?Set(VIA=1409006):Set(VIA=1409005)") in new stack
[Apr  3 09:43:13]     -- Executing [89161581476@from_office:4] Dial("SIP/911-00000b4c", "SIP/1409003/089161581476,,tT") in new stack
[Apr  3 09:43:13]   == Using SIP RTP CoS mark 5
[Apr  3 09:43:13]     -- Called SIP/1409003/089161581476
В логе ничего относительно этого звонка я не обнаружил. Может кто-нибудь объяснить, почему вызов идет через 1409003?

Re: Исходящие звонки идут не через тот канал

Добавлено: 03 апр 2014, 10:48
ded
А кто писал эту конструкцию? Явно не Вы, потому что для автора там всё очевидно было бы. Строка
exten => _8XXXXXXXXX.,n,ExecIf($[${DB_EXISTS(dialout/${CALLERID(num)})}]?Set(VIA=${DB(dialout/${CALLERID(num)})}):Set(VIA=1409005))
если выполняется, то переменная VIA возможно и принимает какое-то значение командами Set, на в последующих шагах диалплана никак не используется:
exten => _8XXXXXXXXX.,n,Dial(SIP/1409003/0${EXTEN},,tT);
exten => _8XXXXXXXXX.,n,Dial(SIP/1409004/0${EXTEN},,tT);

Вот это и видно тут:
-- Executing [89161581476@from_office:3] ExecIf("SIP/911-00000b4c", "1?Set(VIA=1409006):Set(VIA=1409005)") in new stack
Проверка сработала - "1? и переменной VIA присвоено значение 409006
А что теперь с эти делом Вы и не знаете.

Re: Исходящие звонки идут не через тот канал

Добавлено: 03 апр 2014, 16:29
andrystepa
Да, Вы правы, устанавливал и настраивал Asterisk сторонний специалист. Я сам сомневался по поводу этой конструкции, поэтому изменил ее так:

Код: Выделить всё

[out]
exten => _XXXXXXX,1,Goto(8495${EXTEN},1)
exten => _8XXXXXXXXX.,1,Set(CDR(userfield)=OUT_WESTCALL)
exten => _8XXXXXXXXX.,n,Macro(record,out/westcall)
exten => _8XXXXXXXXX.,n,ExecIf($[${DB_EXISTS(dialout/${CALLERID(num)})}]?Set(VIA=${DB(dialout/${CALLERID(num)})}):Set(VIA=1409005))
exten => _8XXXXXXXXX.,n,Dial(SIP/${VIA}/0${EXTEN},,tT);
exten => _8XXXXXXXXX.,n,Dial(SIP/1409003/0${EXTEN},,tT);
exten => _8XXXXXXXXX.,n,Dial(SIP/1409004/0${EXTEN},,tT);
И исходящие звонки теперь идут по правильному каналу.
Спасибо большое.