Страница 1 из 1
Как разделить исходящие вызовы
Добавлено: 09 дек 2020, 14:21
uncleandru
Здравствуйте! есть asterisk на нем 8 модемов huawei e173 работает все хорошо. работает автообзвон абонентов (4 модема) а 4 модема входящие. Автообзвон реализован через callblaster. появилась необходимость разделить исходящие вызовы на 2 группы (с первых 3 модемов обзвон идет по 1 списку номеров, а еще 4 модема по второму списку). как правильно это организовать?
Re: Как разделить исходящие вызовы
Добавлено: 10 дек 2020, 07:46
uncleandru
разобрался как разделить исходящие звонки. получилось совершить вызов из определенной симки. остался вопрос как сделать группу из сим карт и совершать звонок с них.
Re: Как разделить исходящие вызовы
Добавлено: 10 дек 2020, 20:59
ded
Тут не просто группу создать.
Ринг-группа для абонентов - уже неоднозначный объект: могут быть разные сценарии вызова.
А тут группа транков.
Если применять ring all,
Dial(Dongle/Ph1/${EXTEN}&Dongle/Ph2/${EXTEN}&Dongle/Ph3/${EXTEN})
то это не очень целесообразно, неразумно забивать ресурсы.
Для таких вызовов необходимо знать - свободна ли сейчас симка, или занята другим вызовом?
Применяется перед вызововм ChanIsAvail
Код: Выделить всё
*CLI> core show application ChanIsAvail
-= Info about application 'ChanIsAvail' =-
[Synopsis]
Check channel availability
[Description]
This application will check to see if any of the specified channels are
available.
This application sets the following channel variables:
${AVAILCHAN}: The name of the available channel, if one exists
${AVAILORIGCHAN}: The canonical channel name that was used to create the
channel
${AVAILSTATUS}: The device state for the device
${AVAILCAUSECODE}: The cause code returned when requesting the channel
[Syntax]
ChanIsAvail([Technology2/Resource2[&...]][,options])
[Arguments]
Technology2/Resource2
Optional extra devices to check
If you need more than one enter them as Technology2/Resource2&Technology3/R
source3&.....
Technology/Resource
Specification of the device(s) to check. These must be in the format of
'Technology/Resource', where <Technology> represents a particular channel
driver, and <Resource> represents a resource available to that particular
channel driver.
options
a: Check for all available channels, not only the first one
s: Consider the channel unavailable if the channel is in use at all
t: Simply checks if specified channels exist in the channel list
Re: Как разделить исходящие вызовы
Добавлено: 10 дек 2020, 22:27
uncleandru
Спасибо за ответ! буду пробывать
Re: Как разделить исходящие вызовы
Добавлено: 10 дек 2020, 23:30
uncleandru
а можно сделать вот так? проверять линейно, если занят первый канал. то переходить ко второму и т.д.
exten => _071XXXXXXX,1,Dial(Dongle/Phoenix5/${EXTEN},30)
exten => _071XXXXXXX,2,GotoIf(${DIALSTATUS} = BUSY,3)
exten => _071XXXXXX,3,Dial(Dongle/Phoenix6/${EXTEN},30)
exten => _071XXXXXX,4,GotoIf(${DIALSTATUS} = BUSY,5)
exten => _071XXXXXX,5,Dial(Dongle/Phoenix7/${EXTEN},30)
exten => _071XXXXXX,6,GotoIf(${DIALSTATUS} = BUSY,5)
exten => _071XXXXXX,7,Dial(Dongle/Phoenix8/${EXTEN},30)
exten => _071XXXXXX,8,GotoIf(${DIALSTATUS} = BUSY,5)
;Если все линии заняты, проиграть что они все заняты и положить трубку
exten => _071XXXXXX,9,Playback(all-circuits-busy-now)
exten => _071XXXXXX,10,Hangup
Или если прокатит, то в конце опять переключится на первую линию и так по кругу типа
exten => _071XXXXXXX,10,Dial(Dongle/Phoenix5/${EXTEN},30)
и трубку не класть?
Re: Как разделить исходящие вызовы
Добавлено: 11 дек 2020, 06:34
Vlad1983
пример случайного выбора с какой линии начать
Код: Выделить всё
[dial-cell]
exten => _X.,1,NoOp()
same => n,Set(LINE=${RAND(1,5)})
same => n,Goto(line${LINE})
same => n(line1),GotoIF($[ "${DEVICE_STATE(SIP/goip9-12)}" != "NOT_INUSE" ]?d2)
same => n(d1),Dial(SIP/goip9-12/12${EXTEN},60)
same => n,Hangup
same => n(line2),GotoIF($[ "${DEVICE_STATE(SIP/goip9-13)}" != "NOT_INUSE" ]?d3)
same => n(d2),Dial(SIP/goip9-13/13${EXTEN},60)
same => n,Hangup
same => n(line3),GotoIF($[ "${DEVICE_STATE(SIP/goip9-14)}" != "NOT_INUSE" ]?d4)
same => n(d3),Dial(SIP/goip9-14/14${EXTEN},60)
same => n,Hangup
same => n(line4),GotoIF($[ "${DEVICE_STATE(SIP/goip9-15)}" != "NOT_INUSE" ]?d5)
same => n(d4),Dial(SIP/goip9-15/15${EXTEN},60)
same => n,Hangup
same => n(line5),GotoIF($[ "${DEVICE_STATE(SIP/goip9-16)}" != "NOT_INUSE" ]?d1)
same => n(d5),Dial(SIP/goip9-16/16${EXTEN},60)
same => n,Hangup
при неразумном использовании может зациклить, ибо проверка на число попыток вырезана
Re: Как разделить исходящие вызовы
Добавлено: 11 дек 2020, 08:19
uncleandru
Спасибо всем, натолкнули на мысль. Буду пробовать и разбираться во всем этом
Re: Как разделить исходящие вызовы
Добавлено: 11 дек 2020, 12:39
april22
а может что то типа TrunkBalansing ?!