Страница 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 ?!