ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

как обрывать вызов при использование нескольких маршрутов?

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

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

как обрывать вызов при использование нескольких маршрутов?

Сообщение alex.preys » 20 апр 2017, 18:27

есть маленький колцентр, в нём GMS шлюз на 4 GMS канала. случается, все порты заняты, и в качесте дополнительного, (и более дорогого маршрута) используется fallback шлюз. проблема в том, что вызовы уходят на fallback даже если вызываемый абонент не принял вызов (сбросил вызов, или звонок завершился по таймауту). т.е. абонент на телефоне сбросил вызов не принимая его, и через ~10 сек снова получил вызов уже с другого номера.

как сделать так, чтобы вызовы при занятости основного шлюза уходили на fallback, а при отбое абонента - нет. или чистыми средствами * этого не добиться? ведь стандартно сервер не знает сколько каналов у GMS шлюза. т.е. нужно городить какой-то счётчик? как сделать это оптимально?

пример текущего конфига (в 1й сторке пишем разговор):

exten => _096X., 1, Monitor(wav,/var/lib/asterisk/recordings/${STRFTIME(${EPOCH},,%m.%d.%Y__%H-%M)}_${EXTEN}_${CALLERID(num)}_${CDR(billsec)},bm)
exten => _096X., n, Dial(SIP/${EXTEN}@192.168.10.112, 60, rt)
exten => _096X., n, Dial(SIP/${EXTEN}@192.168.10.117, 60, rt)
alex.preys
 
Сообщений: 26
Зарегистрирован: 24 май 2016, 16:50

Re: как обрывать вызов при использование нескольких маршруто

Сообщение gosha » 20 апр 2017, 19:23

сравнить статусы DIALSTATUS после занято и после отбоя шлюзом по количеству каналов. на основе статуса делать второй Dial.
gosha
 
Сообщений: 370
Зарегистрирован: 06 сен 2010, 17:41

Re: как обрывать вызов при использование нескольких маршруто

Сообщение alex.preys » 20 апр 2017, 20:41

BYSY к сожалению в обоих вариантах
alex.preys
 
Сообщений: 26
Зарегистрирован: 24 май 2016, 16:50

Re: как обрывать вызов при использование нескольких маршруто

Сообщение ded » 20 апр 2017, 21:55

alex.preys писал(а):есть маленький колцентр, в нём GMS шлюз на 4 GMS канала.
Наверное всё же GSM а не GMS.
Я встречал в некоторых шлюзах этот параметр регулируется - какой код отбоя идёт в случае занятости канала (тогда выбираем следующий канал), а какой в случае занятости абонента (тогда ничего не выбираем).

Ну и это знать просто обязаны!
https://wiki.asterisk.org/wiki/display/ ... hanIsAvail
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: как обрывать вызов при использование нескольких маршруто

Сообщение alex.preys » 03 май 2017, 19:48

пытаюсь "сделать по мануалу"

exten => _0., 1, ChanIsAvail(SIP/192.168.50.117:5062&SIP/192.168.50.117:5060)
same => n, CUT(theChannel_ks=${AVAILORIGCHAN},,1)
same => n, Verbose(0,${theChannel_ks})
same => n, Dial(SIP/${EXTEN}@${theChannel_ks}, 60, rt)
same => n, Hangup()

но получаю
WARNING[32074][C-00005e5e]: pbx.c:4926 pbx_extension_helper: No application 'CUT' for extension (TEST, номер , 2)

Gentoo
Asterisk 11.21.1 built by portage @ callcenter on a x86_64 running Linux on 2016-02-21 12:41:18 UTC

> core show applications
...
ControlPlayback: Play a file with fast forward and rewind.
DAHDIScan: Scan DAHDI channels to monitor calls.
...
т.е. таки нету апликейшена
alex.preys
 
Сообщений: 26
Зарегистрирован: 24 май 2016, 16:50

Re: как обрывать вызов при использование нескольких маршруто

Сообщение whoim » 03 май 2017, 19:56

Это функция, а в диаплане - бред
облачные и локальные сервера asterisk/freepbx/a2billing/crm с полной техподдержкой. skype: whoim2, sipuri: whoim@asterisk.ru
whoim
 
Сообщений: 766
Зарегистрирован: 26 ноя 2013, 23:25
Откуда: Краснодар

Re: как обрывать вызов при использование нескольких маршруто

Сообщение alex.preys » 03 май 2017, 19:57

спасибо!!!

а можно подробнее про "бред"?
или вы имелии ввиду что моё знание синтаксиса вызывает у вас рвотные позывы?
alex.preys
 
Сообщений: 26
Зарегистрирован: 24 май 2016, 16:50

Re: как обрывать вызов при использование нескольких маршруто

Сообщение alex.preys » 03 май 2017, 21:22

ps: у меня тоже иногда :)

частично исправил, но
same => n, Set(theChannel_ks=${CUT(${AVAILORIGCHAN},/,2)})
same => n, Verbose(0,${theChannel_ks})

в консоль выдаёт пустую строку, 2 менял и на 1, и на 0 - с тем же результатом, даже слеш заменял на 1 чтобы хоть что-то отрезало - но нет.
alex.preys
 
Сообщений: 26
Зарегистрирован: 24 май 2016, 16:50

Re: как обрывать вызов при использование нескольких маршруто

Сообщение awsswa » 03 май 2017, 22:11

2009XXX-1 - это имя первого транка, 2009XXX-2 - второго

exten => _9XXXXXXX,1,ChanIsAvail(SIP/2009XXX-1&SIP/2009XXX-2&SIP/2009XXX-3,as)
exten => _9XXXXXXX,n,NoOp(Availchan is ${AVAILCHAN}) ; будет выведено какой канал доступен
exten => _9XXXXXXX,n,NoOp(Availstatus is ${AVAILSTATUS}) ; будет указан статус канала
exten => _9XXXXXXX,n,Dial(${CUT(AVAILCHAN,,1&2)}/${EXTEN},120,T)
exten => _9XXXXXXX,n,Hangup()

Функция ChanIsAvail - проверяет статус линии и на выходе выдает варианты:
1-зарегестрирован, не звонит
2-зарегестрирован и используется (если call-limit = 1 не установлен)
3-зарегестрирован и используется (call-limit = 1)
5-не зарегестрирован
6-зарегестрирован и звонит
Узнаем статус линии - если статус 1 или 2 то звоним по ней.
платный суппорт по мере возможностей
awsswa
 
Сообщений: 2390
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: как обрывать вызов при использование нескольких маршруто

Сообщение alex.preys » 04 май 2017, 14:40

КАК же меня тошнит от моего знания синтаксиса :)

в приведённом (верю что рабочем примере) строчки
Код: выделить все
exten => _9XXXXXXX,n,NoOp(Availchan is ${AVAILCHAN}) ; будет выведено какой канал доступен
exten => _9XXXXXXX,n,NoOp(Availstatus is ${AVAILSTATUS}) ; будет указан статус канала

куда будет выведена инфа? в консоль? там пусто :'(

работает в таком варианте
Код: выделить все
exten => _0., 1, ChanIsAvail(SIP/192.168.50.117:5060&SIP/192.168.50.117:5062)
;same => n, Verbose(0,${CUT(AVAILORIGCHAN,/,2)})
same => n, Dial(SIP/${EXTEN}@${CUT(AVAILORIGCHAN,/,2)})
same => n, Hangup()
alex.preys
 
Сообщений: 26
Зарегистрирован: 24 май 2016, 16:50

След.

Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 38

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH