Проблема многоканальности в софтфонах, call-limit
Сообщений: 26
|
Re: Проблема многоканальности в софтфонах, call-limit
обнаружил что моя реализация группового вызова в корне не правильная, т.е. если у меня описаны например правила:
exten => 201,1,SetGroup(Gr${EXTEN})
exten => 201,n,GotoIf($[${GROUP_COUNT(Gr${EXTEN})}>1]?20:10)
exten => 201,10,Dial(SIP/${EXTEN},30,rTtgj)
exten => 201,n,Goto(endcall,s,1)
exten => 201,20,Playback(add-on/number-busy)
exten => 201,n,Goto(endcall,s,1)
-----------------------------------
exten => 202,1,SetGroup(Gr${EXTEN})
exten => 202,n,GotoIf($[${GROUP_COUNT(Gr${EXTEN})}>1]?20:10)
exten => 202,10,Dial(SIP/${EXTEN},30,rTtgj)
exten => 202,n,Goto(endcall,s,1)
exten => 202,20,Playback(add-on/number-busy)
exten => 202,n,Goto(endcall,s,1)
и происходит вызов например на номер **222 такого плана:
exten => **222,1,Dial(SIP/201&SIP/202,,)
то * просто направляет звонок на телефон, а описанные правила для 201 и 202 не отрабатываются, они работают только в том случае если будет сделан вызов конкретно на 201 или 202.
Как реализовать отработку описанных правил для такого вызова?
Помогите советом.
|
Откуда: Санкт-Петербург
Сообщений: 203
|
Re: Проблема многоканальности в софтфонах, call-limit
1. Почему такая каша в приоритетах?
Посмотрите примеры, как использовать n(ext) приоритеты с метками для переходов:
http://voip.rus.net/tiki-index.php?page=Asterisk+Priorities
2. почему в групповом вызове вы не хотите использовать local channel?
http://voip.rus.net/tiki-index.php?page=Asterisk+Local+channels
|
Откуда: Киев
Сообщений: 749
|
Re: Проблема многоканальности в софтфонах, call-limit
toda tak
dial(local/201@mycontext&local/202@mycontext&local/203@mycontext)
не устраивает - перепиши chаn_sip ;)
|
Сообщений: 26
|
Re: Проблема многоканальности в софтфонах, call-limit
начало вроде получаться :)
спасибо за наводку в сторону local channel, сам не додумался что это то что и надо :)
с приоритетами разберусь, сам путаюсь :)
всем спасибо, надеюсь дальше будет все ок :)
|
Сообщений: 26
|
Re: Проблема многоканальности в софтфонах, call-limit
мда...
недолго песенка играла..
по пунктам:
1. При звонке на группу телефон звонит у всех, все ок, но после поднятия трубки кемто из группы, у всех остальных телефон продолжает звонить.
2. Тот кто сделал звонок на группу - кладет у себя трубку, телефоны группы все равно продолжают звонить.
3. Так и не получилось запретить входящий звонок на члена группы если он делает исходящий звонок.
вот текущие конфиги:
звонок на группу:
exten => **222,n,Dial(LOCAL/201&LOCAL/202&LOCAL/203,,rTtgj)
сипы (все описаны одинаково):
exten => 201,1,SetGroup(Gr${EXTEN})
exten => 201,n,GotoIf($[${GROUP_COUNT(Gr${EXTEN})}>1]?endcall:mainrules)
exten => 201,n(mainrules),Goto(mainrules,${EXTEN},1)
exten => 201,n(endcall),Goto(endcall,s,1)
основной обработчик:
[mainrules]
exten => _...,1,GotoIf($["${CALLERIDNUM:0:2}" = "**]?gorod:inter)
;Номера начинаются с ** - звонок с внешней городской линии, либо на группу
exten => _...,n(gorod),Dial(SIP/${EXTEN},30,rTtg)
exten => _...,n,Goto(endcall,s,1)
;Остальные, внутренние
exten => _...,n(inter),Answer()
exten => _...,n,Dial(SIP/${EXTEN},30,rmTtg)
exten => _...,n,Goto(endcall,s,1)
вчем ошибка понять не могу :(
|
Сообщений: 26
|
Re: Проблема многоканальности в софтфонах, call-limit
уточнение:
если инициатор звонка прекращает вызов группы, то вызов всетаки прекращается, но не у всех, а у одного единственного с разной вероятностью. Вероятность распределяется примерно так: 90% у того кто стоит первым в групповом Диал, 9% у второго, 0.9 у третьего и т.д.
ниче не понимаю :(
как с этим бороться?
|
Сообщений: 26
|
Re: Проблема многоканальности в софтфонах, call-limit
с не правильным прекращением вызова разобрался, глючил астериск.
переустановка решила эту проблему.
зато появилась другая трабла: не обнуляется счетчик группы при групповом звонке после завершения вызова. Инструкция SetGroup(Gr${EXTEN}) каждый раз увеличивает счетчик на единицу если используется Dial(LOCAL/201&LOCAL/202&LOCAL/203.....), счетчик растет у всех, и утого кто ответил на вызов и кто не отвечал. Соответсвенно GotoIf($[${GROUP_COUNT(Gr${EXTEN})}>1?..:..] работает только до первого вызова, а потом надо ставить >2, >3 и т.д.
В чем может быть проблема?
Так и не удалось запретить входящий звонок на телефон если с него делается исходящий.
Есть идеи?
P.s. Заметил глюк * на версиях 1.2.5 и 1.2.7 (возможно и на всех более старших), на 1.2.9.1 уже исправлено.
Суть такая: команда Диал сбрасывает значения всех локальных переменных, т.е.:
exten => 1,1,NoOp(${EXTEN}) - выведет единицу
exten => 1,2,Dial(${EXTEN})
exten => 1,3,NoOp(${EXTEN}) - не выведет уже ничего, ${EXTEN} - пустой.
Попытки написать что то типа Set(old_exten=${EXTEN}) до Диал, и попробовать посмотреть значение переменной после Диал, показывают что в old_exten тоже уже пусто.
|
Откуда: Москва
Сообщений: 3421
|
Re: Проблема многоканальности в софтфонах, call-limit
Так и не удалось запретить входящий звонок на телефон если с него делается исходящий.
Есть идеи?
Храни в DB статус телефона. Перед исходящим звонком ставь Set(DB(ontalk/${CALLERID(num)}=1)).
После звонка ставь =0. (Используй флаг g для Dial).
При входящем звонке смотри значение ontalk для EXTEN.
Все просто :cool:
|
|