Страница 1 из 1
Транк занят, как вернуть звонок оригинатору?
Добавлено: 14 авг 2015, 19:40
Argoua
Добрый день, гуру!
Есть схема такая: FreePBX, два транка. Один транк имеет 4 канала на исходящие (goip).
Приходит звонок по другому транку, пока мои внешние 4-е линии не заняты все работает хорошо. Но когда 4-е линии заняты, приходит 5-й вызов, оригинатор слышит "все линии заняты" и получает 503.
Таким образом я на себе заканчиваю этот вызов, а должен был бы "вернуть" назад чтобы оригинатор могу пробовать следующий транк...
Куда копать? Третий день мозг сушу...
Re: Транк занят, как вернуть звонок оригинатору?
Добавлено: 15 авг 2015, 11:09
ded
Сделайте ограничение на 4 соединения для входящих на транке GROUP COUNT.
Re: Транк занят, как вернуть звонок оригинатору?
Добавлено: 15 авг 2015, 14:39
Argoua
Не работает. 4-е линии заняты, а оно всё равно шелет Progress в транк и получается и уже заканчиваю звонок на себе.
Помогите разобраться, написал кастомный dialplan, поместил в exstensions_override_freepbx.conf
[call]
Exten => _380XXXXXXXXX,1,Hangup(34)
Работает, отбиваю все звонки как надо. Усложняем:
[call]
Exten => _380XXXXXXXXX,1,ChanIsAvail(SIP/goip)
Exten => _380XXXXXXXXX,2,Dial(SIP/${EXTEN})@goip
Exten => _380XXXXXXXXX,3,Hangup()
Exten => _380XXXXXXXXX,n+101,Hangup(34)
Хочу до попытки набора номера проверить доступен ли транк, а условие похоже не срабатывает...
Re: Транк занят, как вернуть звонок оригинатору?
Добавлено: 15 авг 2015, 22:08
ded
ChanIsAvail(SIP/goip) всегда будет возвращать вам статус - доступен, потому что с точки зрения SIP и ИП адреса goip они доступны, вне зависимости - заняты там каналы или нет.
Думаю, что нужно
ChanIsAvail(SIP/goip/chan1&SIP/goip/chan2&SIP/goip/chan3&SIP/goip/chan4) или как там вы регистрируете каналы goip.
Правильней регистрировать номера симок для наглядности и понимания.
ChanIsAvail(SIP/goip/06543210&SIP/goip/06543211&SIP/goip/06543212&SIP/goip/06543210)
Re: Транк занят, как вернуть звонок оригинатору?
Добавлено: 16 авг 2015, 17:00
Argoua
Немного продвинулся в теме:
Ограничил я количество вызовов в транке:
Limitonpeer=yes
Limit-calls=4
Отбивается все хорошо, как надо. Но решение мне не нравится тем, что лимит каналов статичен и я не могу его менять в зависимости от условий, например, отпал один из внешних каналов goip и внешних стало не 4, а 3.
Задача:
Перед командой dial проверить количество доступных peers в транке, потом посчитать (например через group count) количество активных звонков, отнять от количества доступных количество активных, если больше нуля- dial, если ноль- hangup(34).
Основной вопрос, как посчитать количество зарегистрированных пиров в одном транке? А если GOIP настроен в режиме SIP trank gateway? Я так понимаю, что в этом режиме он не регистрирует каждый свой канал отдельно у нас и мы не увидим сколько там зарегистрировано, так?
Re: Транк занят, как вернуть звонок оригинатору?
Добавлено: 17 авг 2015, 10:50
Pechen
может call-limit?
я свой гоайпи DEVICE_STATEом чекаю