VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Транк занят, как вернуть звонок оригинатору?

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
Argoua
Сообщения: 3
Зарегистрирован: 14 авг 2015, 19:31

Транк занят, как вернуть звонок оригинатору?

Сообщение Argoua »

Добрый день, гуру!
Есть схема такая: FreePBX, два транка. Один транк имеет 4 канала на исходящие (goip).
Приходит звонок по другому транку, пока мои внешние 4-е линии не заняты все работает хорошо. Но когда 4-е линии заняты, приходит 5-й вызов, оригинатор слышит "все линии заняты" и получает 503.
Таким образом я на себе заканчиваю этот вызов, а должен был бы "вернуть" назад чтобы оригинатор могу пробовать следующий транк...
Куда копать? Третий день мозг сушу...
ded
Сообщения: 15631
Зарегистрирован: 26 авг 2010, 19:00

Re: Транк занят, как вернуть звонок оригинатору?

Сообщение ded »

Сделайте ограничение на 4 соединения для входящих на транке GROUP COUNT.
Argoua
Сообщения: 3
Зарегистрирован: 14 авг 2015, 19:31

Re: Транк занят, как вернуть звонок оригинатору?

Сообщение 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)

Хочу до попытки набора номера проверить доступен ли транк, а условие похоже не срабатывает...
ded
Сообщения: 15631
Зарегистрирован: 26 авг 2010, 19:00

Re: Транк занят, как вернуть звонок оригинатору?

Сообщение 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)
Argoua
Сообщения: 3
Зарегистрирован: 14 авг 2015, 19:31

Re: Транк занят, как вернуть звонок оригинатору?

Сообщение Argoua »

Немного продвинулся в теме:
Ограничил я количество вызовов в транке:
Limitonpeer=yes
Limit-calls=4

Отбивается все хорошо, как надо. Но решение мне не нравится тем, что лимит каналов статичен и я не могу его менять в зависимости от условий, например, отпал один из внешних каналов goip и внешних стало не 4, а 3.
Задача:
Перед командой dial проверить количество доступных peers в транке, потом посчитать (например через group count) количество активных звонков, отнять от количества доступных количество активных, если больше нуля- dial, если ноль- hangup(34).
Основной вопрос, как посчитать количество зарегистрированных пиров в одном транке? А если GOIP настроен в режиме SIP trank gateway? Я так понимаю, что в этом режиме он не регистрирует каждый свой канал отдельно у нас и мы не увидим сколько там зарегистрировано, так?
Pechen
Сообщения: 118
Зарегистрирован: 29 дек 2013, 23:16

Re: Транк занят, как вернуть звонок оригинатору?

Сообщение Pechen »

может call-limit?
я свой гоайпи DEVICE_STATEом чекаю
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH