Страница 1 из 1

Переменная канального уровня для всех контекстов

Добавлено: 26 май 2022, 18:20
AlexeyFatnev
Здравствуйте,

Есть задача, при которой необходимо разделить логику исходящих звонков в зависимости от extension.

Все отличие логики в установке значения одной переменной. Значение определяется отдельно для каждой группы extension.

В SIP.CONF для каждой группы пиров свой контекст.

Я хотел сделать так. При попадании в определенный контекст устанавливается значение переменной, а дальше все контексты сливаются в один. Но понял, что установить значение переменной канального уровня я могу только внутри exten.

Подскажите, есть ли какой-то способ установки переменной, которая была бы доступна всем контекстам, но в рамках одного канала?

Для чего это нужно. В зависимости от номера extension, необходимо подставить свой SIPheader:

same => n,Set(foo=Diversion: "BASE XXX" <sip:XXXXXXX@XXXXXX.ru:5061>)

same => n,SIPAddHeader(${foo})

Re: Переменная канального уровня для всех контекстов

Добавлено: 27 май 2022, 12:27
Zavr2008
Например для каждого пира в sip.conf можно сделать SetVar и потом юзать уже.
setvar = variable=value : Channel variable to be set for all calls from this peer/user.
Подробнее

Re: Переменная канального уровня для всех контекстов

Добавлено: 27 май 2022, 15:21
AlexeyFatnev
Здравствуйте, Zavr2008.

Большое спасибо, работает.

Единственный момент. Setvar объявлена как устаревшая, вместо нее объявлена Set. Реализовать такое же с Set не получилось. Подскажите, следует использовать Setvar?

Re: Переменная канального уровня для всех контекстов

Добавлено: 30 май 2022, 09:38
ded
Покажите строчку кода, как вы пытались реализовать через Set.

Re: Переменная канального уровня для всех контекстов

Добавлено: 31 май 2022, 13:36
AlexeyFatnev
SIP.CONF
Set(TestVariable=123)

EXTENSIONS.CONF

same => n,Verbose(------)
same => n,Verbose(${TestVariable})
same => n,Verbose(------)
same => n,Set(TestVariable=777)
same => n,Verbose(${TestVariable})
same => n,Verbose(------)

Вывод:

-------

-------
777
-------

Re: Переменная канального уровня для всех контекстов

Добавлено: 31 май 2022, 22:51
ded
Читайте книгу о будущем телефонии, язык диал плана. Проверяем так:

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

same => n,Verbose(------)
same => n,NoOp(my variable is ${TestVariable})
same => n,Verbose(------)
same => n,Set(TestVariable=777)
same => n,NoOp(my variable is ${TestVariable})
same => n,Verbose(------)

Re: Переменная канального уровня для всех контекстов

Добавлено: 01 июн 2022, 01:30
Zavr2008
Не понимаю как опция setvar в настройках пира chan_sip в sip.conf связана с одноименной функцией диалплана)
Можно конечно и через set в диалплане делать, но вопрос то был про маркировку как раз пиров и мне показалось это оптимальным и простым.

Re: Переменная канального уровня для всех контекстов

Добавлено: 01 июн 2022, 14:01
AlexeyFatnev
Здравствуйте, ZVAR2008.

Теперь я понимаю, что никак. Функция DIALPLAN SetVar устарела, а опция аналогичная опция SIP.CONF нет.

Еще раз большое Вам спасибо за помощь!