Как отдать для звонков определенную часть емкости потока E1
Мой сервер Asterisk подключен к АТС - поток E1 (карточка Digium Wildcard TE121).
Соответственно в моем распоряжении имеется 30 каналов для передачи голоса.
Есть контекст для исходящих звонков myhome.
Если много народу звонит на 6-ти значные городские номера то они забивают все 30 каналов потока E1.
Как ограничить, в рамках контекста myhome, чтобы для звонков могло использоваться не более 5 линий (одновременно используемых) потока E1?
[myhome]
exten => _XXXXXX,1,Set(CALLERID(num)=4852557834)
exten => _XXXXXX,n,Dial(DAHDI/g0/${EXTEN},300,T)
Спасибо.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
| Quote: |
| Просто ограничить число каналов в группе. |
Спасибо. за ответ. Сейчас читаю про Совершение вызовов с использованием групп
Пока не совсем понятно, но думаю разберусь. Именно так и надо делать. Хотябы в целях последующего мониторинга нагрузки по группам\каналам.
А пока я придумал более простое решение.
Допустим требуется выделить 2 канала от потока E1 (номера каналов 29 и 30).
[myhome]
exten => _XXXXXX,1,Set(CALLERID(num)=4852557834)
exten => _XXXXXX,n,Dial(DAHDI/29/${EXTEN},300,T)
exten => _XXXXXX,n,Dial(DAHDI/30/${EXTEN},300,T)
Как считаете, правильно?
А точнее, более правильно будет написать так, чтобы в случае неответа или зянято не перебирало все линии указанные в диалплане .
[myhome]
exten => _XXXXXX,1,Set(CALLERID(num)=4852557834)
exten => _XXXXXX,n,Dial(DAHDI/29/${EXTEN},300,T)
exten => _XXXXXX,n,Goto(ip-${DIALSTATUS})
exten => _XXXXXX,n,Dial(DAHDI/30/${EXTEN},300,T)
exten => _XXXXXX,n,Goto(ip-${DIALSTATUS})
exten => _XXXXXX,n(ip-BUSY),Hangup()
exten => _XXXXXX,n(ip-NOANSWER),Hangup()
exten => _XXXXXX,n,Hangup()
у меня так и cделано а вот если у же в группе еoе надо что то разделить то тут уже GRUOP и GROUP_COUNT
_________________
Ubuntu-Server 6.06 /Gentoo /Asterisk 1.4.21.1/app_fax(t38) /spandsp-0.0.5pre4
Digium TDM400/Polycom IP301 SP /Snom 360/ Seiros ТИ24/Linksys 9X/ Kirk 600IPv3
func group_count: Counts the number of channels in the specified group.
func group: Gets, sets or clears the channel group.
Одним инкрементим, другим проверяем:
| Quote: |
| ; Return ${DIALSTATUS} = CHANUNAVAIL if ${VOIPMAX} exceeded exten => s,1,Set(GROUP()=trunkgroup1) ;Set Group exten => s,2,GotoIf($[${GROUP_COUNT(trunkgroup1)} > ${VOIPMAX}]?103) ;Exceeded? |