Страница 1 из 1
Чередование исходящих линий
Добавлено: 11 сен 2020, 09:35
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?
В гугле ничего такого не могу найти.
Re: Чередование исходящих линий
Добавлено: 11 сен 2020, 11:51
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
Re: Чередование исходящих линий
Добавлено: 11 сен 2020, 12:51
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 сделать "сквозной"
Re: Чередование исходящих линий
Добавлено: 11 сен 2020, 13:32
lion_vit
Всем спасибо. Вопрос решил.
[global]
LINEX=line1
[context]
exten => _89XXXXXXXXX,1, Set(GLOBAL(LINEX)=${IF($[ ${LINEX} = line1]?line2:line1)})
exten => _89XXXXXXXXX,2,Dial(SIP/${EXTEN}@${LINEX})
Re: Чередование исходящих линий
Добавлено: 11 сен 2020, 14:29
ded
Не надо Dial(SIP/${EXTEN}@${LINEX})
Правильней Dial(SIP/${LINEX}/${EXTEN})
Так рекомендуют Создатели - Технология/ресурс/номер. Вариант с SIP URI - что-то@где-то не полностью отвечает выбранным условиям, хотя и соответствует RFC.
Почему? Спросите у них.
Re: Чередование исходящих линий
Добавлено: 11 сен 2020, 14:47
lion_vit
Спасибо за
Правильней Dial(SIP/${LINEX}/${EXTEN})
Попробую. Хотя все работает и с Dial(SIP/${EXTEN}@${LINEX}).
Re: Чередование исходящих линий
Добавлено: 11 сен 2020, 14:48
ded
Всё работает и так! - не аргумент.
Re: Чередование исходящих линий
Добавлено: 11 сен 2020, 14:51
lion_vit
Попробовал Dial(SIP/${LINEX}/${EXTEN})
Работает быстрее.. Спасибо.