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

Как разделить исходящие вызовы

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

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

Ответить
uncleandru
Сообщения: 8
Зарегистрирован: 09 дек 2020, 14:08

Как разделить исходящие вызовы

Сообщение uncleandru »

Здравствуйте! есть asterisk на нем 8 модемов huawei e173 работает все хорошо. работает автообзвон абонентов (4 модема) а 4 модема входящие. Автообзвон реализован через callblaster. появилась необходимость разделить исходящие вызовы на 2 группы (с первых 3 модемов обзвон идет по 1 списку номеров, а еще 4 модема по второму списку). как правильно это организовать?
Вложения
файл .call
файл .call
notepad++_o16wB1NN89.png (5.69 КБ) 6303 просмотра
исходящий маршрут
исходящий маршрут
browser_x1bk5LLL9w.png (11.34 КБ) 6303 просмотра
uncleandru
Сообщения: 8
Зарегистрирован: 09 дек 2020, 14:08

Re: Как разделить исходящие вызовы

Сообщение uncleandru »

разобрался как разделить исходящие звонки. получилось совершить вызов из определенной симки. остался вопрос как сделать группу из сим карт и совершать звонок с них.
Вложения
диалплан
диалплан
notepad++_XjVKD7lyuh.png (5.86 КБ) 6242 просмотра
файл .Call
файл .Call
notepad++_l0QKN9BYrB.png (6.16 КБ) 6242 просмотра
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Как разделить исходящие вызовы

Сообщение 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
uncleandru
Сообщения: 8
Зарегистрирован: 09 дек 2020, 14:08

Re: Как разделить исходящие вызовы

Сообщение uncleandru »

Спасибо за ответ! буду пробывать
uncleandru
Сообщения: 8
Зарегистрирован: 09 дек 2020, 14:08

Re: Как разделить исходящие вызовы

Сообщение 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)
и трубку не класть?
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Как разделить исходящие вызовы

Сообщение 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
при неразумном использовании может зациклить, ибо проверка на число попыток вырезана
ЛС: @rostel
uncleandru
Сообщения: 8
Зарегистрирован: 09 дек 2020, 14:08

Re: Как разделить исходящие вызовы

Сообщение uncleandru »

Спасибо всем, натолкнули на мысль. Буду пробовать и разбираться во всем этом
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

Re: Как разделить исходящие вызовы

Сообщение april22 »

а может что то типа TrunkBalansing ?!
Своими вопросами , вы загоняете меня в ГУГЛЬ.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH