AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Как отдать для звонков определенную часть емкости потока E1

Newbies/FAQ Forum 7 сообщений 28.09.2010 13:13 - 02.10.2010 07:47
#1 28.09.2010 13:13

Как отдать для звонков определенную часть емкости потока 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)


Спасибо.
Question
#2 28.09.2010 14:53

попробуйте в сторону GROUP и GROUP_COUNT покапать.
#3 28.09.2010 18:03

Просто ограничить число каналов в группе.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#4 29.09.2010 08:01

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()
#5 29.09.2010 08:26

"Просто ограничить число каналов в группе" - выход, если такое же ограничение будет действовать на стороне станции. Мне кажется, надежнее использовать GROUP и GROUP_COUNT.
#6 01.10.2010 23:20

Alekz, Ну почему?? а если жестко описать диалплан и запретить использовать ненужную группу и пофиг что там на стороне станции
у меня так и 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
#7 02.10.2010 07:47

Cache, а входящие? Станция тоже должна знать, что через эту группу тайм-слотов пускать вызовы в сторону * низя.

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?