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

Чередование исходящих линий

Проблемы Asterisk без вэб-оболочек и их решения

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

Ответить
lion_vit
Сообщения: 8
Зарегистрирован: 27 авг 2020, 12:19

Чередование исходящих линий

Сообщение lion_vit »

Всем, доброго дня!

Есть задача совершать исходящие звонки чередуя исходящие линии.
Т.е. Если последний исходящий звонок производился с line1, то следующий надо произвести с line2, затем с line3, ну и снова линия1.

Я как программист сразу думаю про условие IF ELSE и переменную
Переменную можно объявить в контексте
[global]
LINEX=line1
А как в эту переменную записывать значения по условию IF?
IF (LINEX=line1) { LINEX=line2 }
ELSE IF (LINEX=line2) { LINEX=line3 }
ELSE IF (LINEX=line3) { LINEX=line1 }

Как это можно отработать в extensions.conf?
В гугле ничего такого не могу найти.
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Чередование исходящих линий

Сообщение Vlad1983 »

не нужно никаких запоминаний
просто пуляете рендомно

Код: Выделить всё

[macro-dial-cell]
exten => s,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${ARG1},60,tT)
    same => n,Hangup
    same => n(line2),GotoIF($[ "${DEVICE_STATE(SIP/goip9-13)}" != "NOT_INUSE" ]?d3)
    same => n(d2),Dial(SIP/goip9-13/13${ARG1},60,tT)
    same => n,Hangup
    same => n(line3),GotoIF($[ "${DEVICE_STATE(SIP/goip9-14)}" != "NOT_INUSE" ]?d4)
    same => n(d3),Dial(SIP/goip9-14/14${ARG1},60,tT)
    same => n,Hangup
    same => n(line4),GotoIF($[ "${DEVICE_STATE(SIP/goip9-15)}" != "NOT_INUSE" ]?d5)
    same => n(d4),Dial(SIP/goip9-15/15${ARG1},60,tT)
    same => n,Hangup
    same => n(line5),GotoIF($[ "${DEVICE_STATE(SIP/goip9-16)}" != "NOT_INUSE" ]?d1)
    same => n(d5),Dial(SIP/goip9-16/16${ARG1},60,tT)
    same => n,Hangup
ЛС: @rostel
lion_vit
Сообщения: 8
Зарегистрирован: 27 авг 2020, 12:19

Re: Чередование исходящих линий

Сообщение lion_vit »

Не хочу рандомно... Хочу именно поочередность соблюсти. Есть на то причины.

Задачу с чередованием почти решил/
вот так:
[global]
LINEX=line1

[context]
exten => _89XXXXXXXXX,1, Set(LINEX=${IF($[ ${LINEX} = line1]?line2:line1)})
exten => _89XXXXXXXXX,2,Dial(SIP/${EXTEN}@${LINEX})

Однако, каждый раз переменная LINEX=line1 и согласно условию становится LINEX=line2
и звонки идут всегда с line2

Вопрос. Как переменную LINEX сделать глобальной, чтобы ее значение менялось от условия, а не от того что задано в [global]. Т.е. как переменную LINEX сделать "сквозной"
lion_vit
Сообщения: 8
Зарегистрирован: 27 авг 2020, 12:19

Re: Чередование исходящих линий

Сообщение lion_vit »

Всем спасибо. Вопрос решил.

[global]
LINEX=line1

[context]
exten => _89XXXXXXXXX,1, Set(GLOBAL(LINEX)=${IF($[ ${LINEX} = line1]?line2:line1)})
exten => _89XXXXXXXXX,2,Dial(SIP/${EXTEN}@${LINEX})
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Чередование исходящих линий

Сообщение ded »

Не надо Dial(SIP/${EXTEN}@${LINEX})

Правильней Dial(SIP/${LINEX}/${EXTEN})
Так рекомендуют Создатели - Технология/ресурс/номер. Вариант с SIP URI - что-то@где-то не полностью отвечает выбранным условиям, хотя и соответствует RFC.
Почему? Спросите у них.
lion_vit
Сообщения: 8
Зарегистрирован: 27 авг 2020, 12:19

Re: Чередование исходящих линий

Сообщение lion_vit »

Спасибо за
Правильней Dial(SIP/${LINEX}/${EXTEN})

Попробую. Хотя все работает и с Dial(SIP/${EXTEN}@${LINEX}).
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Чередование исходящих линий

Сообщение ded »

Всё работает и так! - не аргумент.
lion_vit
Сообщения: 8
Зарегистрирован: 27 авг 2020, 12:19

Re: Чередование исходящих линий

Сообщение lion_vit »

Попробовал Dial(SIP/${LINEX}/${EXTEN})
Работает быстрее.. Спасибо.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH