1 | изначальная версия редактировать | |
Когда 2 абонента разговаривают между собой, если третий абонент позвонит к одному из них ему не отдается сигнал линия занята. Все абоненты подключены по sip. Я читал что данный вопрос далеко не у меня одного? даже примеры есть, но ни один из них я так и не смог заставить работать, в данный момент у меня контексты описаны следующим образом:
[incoming]
exten => _XXXX,1,NooP(GROUP_COUNT(${EXTEN}) = ${GROUP_COUNT(${EXTEN})})
exten => _XXXX,n,GotoIf($[${GROUP_COUNT(${EXTEN})} > 0]?busy)
exten => _XXXX,n,Set(GROUP()=${EXTEN})
exten => _XXXX,n,NooP(GROUP_COUNT(${EXTEN}) = ${GROUP_COUNT(${EXTEN})})
exten => _XXXX,n,Dial(SIP/sibup_${EXTEN})
exten => _XXXX,n,Hangup()
exten => _XXXX,n(busy),Busy()
[outgoing]
exten => _XXXX,1,Set(GROUP()=${CALLERID(num)})
exten => _XXXX,n,NooP(GROUP_COUNT(${CALLERID(num)}) = ${GROUP_COUNT(${CALLERID(num)})})
exten => _XXXX,n,NooP(GROUP_COUNT(${EXTEN}) = ${GROUP_COUNT(${EXTEN})})
exten => _XXXX,n,Dial(Local/${EXTEN}@incoming)
exten => _XXXX,n,Hangup()
Вызов происходит из контекста [outgoing]. Вот лог 1 вызова:
Executing [1111@outgoing:1] Set("SIP/1108-000000d8", "GROUP()=1108") in new stack
-- Executing [1111@outgoing:2] NoOp("SIP/1108-000000d8", "GROUP_COUNT(1108) = 1") in new stack
-- Executing [1111@outgoing:3] NoOp("SIP/1108-000000d8", "GROUP_COUNT(1111) = 0") in new stack
-- Executing [1111@outgoing:4] Dial("SIP/1108-000000d8", "Local/1111@incoming") in new stack
-- Called Local/1111@incoming
-- Executing [1111@incoming:1] NoOp("Local/1111@incoming-00000034;2", "GROUP_COUNT(1111) = 0") in new stack
-- Executing [1111@incoming:2] GotoIf("Local/1111@incoming-00000034;2", "0?busy") in new stack
-- Executing [1111@incoming:3] Set("Local/1111@incoming-00000034;2", "GROUP()=1111") in new stack
-- Executing [1111@incoming:4] NoOp("Local/1111@incoming-00000034;2", "GROUP_COUNT(1111) = 1") in new stack
-- Executing [1111@incoming:5] Dial("Local/1111@incoming-00000034;2", "SIP/1111") in new stack
Вот лог 2 параллельного вызова:
-- Executing [1111@outgoing:1] Set("SIP/1110-000000da", "GROUP()=1110") in new stack
-- Executing [1111@outgoing:2] NoOp("SIP/1110-000000da", "GROUP_COUNT(1110) = 1") in new stack
-- Executing [1111@outgoing:3] NoOp("SIP/1110-000000da", "GROUP_COUNT(1111) = 0") in new stack
-- Executing [1111@outgoing:4] Dial("SIP/1110-000000da", "Local/1111@incoming") in new stack
-- Called Local/1111@incoming
-- Executing [1111@incoming:1] NoOp("Local/1111@incoming-00000035;2", "GROUP_COUNT(1111) = 0") in new stack
-- Executing [1111@incoming:2] GotoIf("Local/1111@incoming-00000035;2", "0?busy") in new stack
-- Executing [1111@incoming:3] Set("Local/1111@incoming-00000035;2", "GROUP()=1111") in new stack
-- Executing [1111@incoming:4] NoOp("Local/1111@incoming-00000035;2", "GROUP_COUNT(1111) = 1") in new stack
-- Executing [1111@incoming:5] Dial("Local/1111@incoming-00000035;2", "SIP/1111") in new stack
Т.е. GROUP_COUNT не считает количество. В чем моя ошибка подскажите пожалуйста.
2 | No.2 Revision редактировать |
Когда 2 абонента разговаривают между собой, если третий абонент позвонит к одному из них ему не отдается сигнал линия занята. Все абоненты подключены по sip. Я читал что данный вопрос далеко не у меня одного? даже примеры есть, но ни один из них я так и не смог заставить работать, в данный момент у меня контексты описаны следующим образом:
[incoming]
exten => _XXXX,1,NooP(GROUP_COUNT(${EXTEN}) = ${GROUP_COUNT(${EXTEN})})
exten => _XXXX,n,GotoIf($[${GROUP_COUNT(${EXTEN})} > 0]?busy)
exten => _XXXX,n,Set(GROUP()=${EXTEN})
exten => _XXXX,n,NooP(GROUP_COUNT(${EXTEN}) = ${GROUP_COUNT(${EXTEN})})
exten => _XXXX,n,Dial(SIP/sibup_${EXTEN})
_XXXX,n,Dial(SIP/${EXTEN})
exten => _XXXX,n,Hangup()
exten => _XXXX,n(busy),Busy()
[outgoing]
exten => _XXXX,1,Set(GROUP()=${CALLERID(num)})
exten => _XXXX,n,NooP(GROUP_COUNT(${CALLERID(num)}) = ${GROUP_COUNT(${CALLERID(num)})})
exten => _XXXX,n,NooP(GROUP_COUNT(${EXTEN}) = ${GROUP_COUNT(${EXTEN})})
exten => _XXXX,n,Dial(Local/${EXTEN}@incoming)
exten => _XXXX,n,Hangup()
Вызов происходит из контекста [outgoing]. Вот лог 1 вызова:
Executing [1111@outgoing:1] Set("SIP/1108-000000d8", "GROUP()=1108") in new stack
-- Executing [1111@outgoing:2] NoOp("SIP/1108-000000d8", "GROUP_COUNT(1108) = 1") in new stack
-- Executing [1111@outgoing:3] NoOp("SIP/1108-000000d8", "GROUP_COUNT(1111) = 0") in new stack
-- Executing [1111@outgoing:4] Dial("SIP/1108-000000d8", "Local/1111@incoming") in new stack
-- Called Local/1111@incoming
-- Executing [1111@incoming:1] NoOp("Local/1111@incoming-00000034;2", "GROUP_COUNT(1111) = 0") in new stack
-- Executing [1111@incoming:2] GotoIf("Local/1111@incoming-00000034;2", "0?busy") in new stack
-- Executing [1111@incoming:3] Set("Local/1111@incoming-00000034;2", "GROUP()=1111") in new stack
-- Executing [1111@incoming:4] NoOp("Local/1111@incoming-00000034;2", "GROUP_COUNT(1111) = 1") in new stack
-- Executing [1111@incoming:5] Dial("Local/1111@incoming-00000034;2", "SIP/1111") in new stack
Вот лог 2 параллельного вызова:
-- Executing [1111@outgoing:1] Set("SIP/1110-000000da", "GROUP()=1110") in new stack
-- Executing [1111@outgoing:2] NoOp("SIP/1110-000000da", "GROUP_COUNT(1110) = 1") in new stack
-- Executing [1111@outgoing:3] NoOp("SIP/1110-000000da", "GROUP_COUNT(1111) = 0") in new stack
-- Executing [1111@outgoing:4] Dial("SIP/1110-000000da", "Local/1111@incoming") in new stack
-- Called Local/1111@incoming
-- Executing [1111@incoming:1] NoOp("Local/1111@incoming-00000035;2", "GROUP_COUNT(1111) = 0") in new stack
-- Executing [1111@incoming:2] GotoIf("Local/1111@incoming-00000035;2", "0?busy") in new stack
-- Executing [1111@incoming:3] Set("Local/1111@incoming-00000035;2", "GROUP()=1111") in new stack
-- Executing [1111@incoming:4] NoOp("Local/1111@incoming-00000035;2", "GROUP_COUNT(1111) = 1") in new stack
-- Executing [1111@incoming:5] Dial("Local/1111@incoming-00000035;2", "SIP/1111") in new stack
Т.е. GROUP_COUNT не считает количество. В чем моя ошибка подскажите пожалуйста.
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.