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

Выбор исходящего транка

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

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

sergio
Сообщения: 58
Зарегистрирован: 09 сен 2014, 12:13

Выбор исходящего транка

Сообщение sergio »

Добрый день.
Подскажите кто-как решил или решает задачу привязки внутреннего абонента к внешнему номеру при выполнении исходящего вызова?
Опыта у меня немного и возможно я чего-то еще не знаю. Потому и обращаюсь за советом.
Конфигурация такая: астериск, голосовые шлюзы FXS, SIP транк от провайдера с выделенным пулом номеров. В sip.conf на каждый номер предполагается свой транк со своим fromuser (иль есть вариант динамически подставлять fromuser при вызове? )
Пока у меня есть два варианта, но как мне кажется оба не очень изящны:
Вариант 1:
- прописывать каждому внутреннему абоненту context соотвествующий внешнему номеру или группе номеров
- в этом контексте с помощью переменной задавать исходящий транк и обходные пути в случае занятости и сбоев
- далее направлять в контекст или макрос с общими правилами фильтрации/маршрутизации
- совершать вызов
Недостаток много контекстов.

Вариант 2:
- направлять всех в один контекст и с общими правилами фильтрации/маршрутизации
- далее направлять в макрос и извратными условиями проверять соответствие внутренний номер - внешний номер и задавать переменной исходящий транк, обходные пути
- совершать вызов
Недостаток каша из условий соответствия внутренний номер - внешний номер.

Для себя выбрал первый вариант но решил посоветоваться, вдруг есть еще проще?
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Выбор исходящего транка

Сообщение ded »

Всё было бы проще, используй Вы какую-то оболочку типа FreePBX, Elastix, AsteriskNOW, etc.
Где это легко делается вписыванием внешнего номера в поле Outbound CID у каждого внутреннего номера.

В вашем случае с самописанными текстовыми конфигурациями проверять соответствие внутренний номер - внешний номер и задавать переменной исходящий транк можно без макроса

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

exten => _ZXXXXXX/123,1,Set(CALLERID(num)=6543210)
exten => _ZXXXXXX,n,Dial(SIP/Operator/${EXTEN})
или даже по маске, назначая внешний номер группе экстенов

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

exten => _ZXXXXXX/1XX,1,Set(CALLERID(num)=6543210)
exten => _ZXXXXXX/2XX,1,Set(CALLERID(num)=7654321)
exten => _ZXXXXXX,n,Dial(SIP/Operator/${EXTEN})
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Выбор исходящего транка

Сообщение Zavr2008 »

Нужно только осознавать, что после

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

exten => _ZXXXXXX/123,1,Set(CALLERID(num)=6543210)
следующая будет не

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

exten => _ZXXXXXX/123,2,Noop(Bla-bla-bla)
,а:

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

exten => _ZXXXXXX,2,Noop(Opa-opa-opa)
или

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

exten => _ZXXXXXX/6543210,2,Noop(Opa-opa-opa)
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
sergio
Сообщения: 58
Зарегистрирован: 09 сен 2014, 12:13

Re: Выбор исходящего транка

Сообщение sergio »

ded писал(а):...
проверять соответствие внутренний номер - внешний номер и задавать переменной исходящий транк можно без макроса
Да согласен, но это будет бесконечно долго при большом количестве внешних номеров и внутренних абонентов, вспотеешь когда потребуется внести изменения...
Насчет маски было интересно но у меня почему-то не получилось, я хотел сделать примерно так:

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

exten => _ZXXXXXX/10[1-7],1,Macro(outbound,6543210,${EXTEN},32,ktS(3600))
...
[macro-outbound]
...
exten => s,n,Dial(SIP/trunk${ARG1}/${ARG2},${ARG3},${ARG4})
...
Но не работает, видать маску CID можно задавать только так 1XX, в целом это не сильно облегчит жизнь.

Фокус с подстановкой CALLERID(num) во fromuser транка не проходит. Иль я не правильно это делаю? :

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

[rt_trunk]
...
fromuser=${CALLERID(num)}
...
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

Re: Выбор исходящего транка

Сообщение april22 »

могу покащаться банальным , но я делал немного по другому.
перед Dial делал макрос

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

exten => s,1,NoOp(-------${ARG1}---${OUT_${DIAL_TRUNK}}---${CALLERID(number)}-----)
exten => s,n,Set(CALLERID(number)=1)
exten => s,n,NoOp(тут будет всякая подстановка определителя )
exten => s,n,Set(CALLERID(number)=${DB(USER/${ARG1}/callerid)})
exten => s,n,Execif($["${CALLERID(number)}"=""]?Hangup())
exten => s,n,NoOp(-------------${CALLERID(number)}---------------- )
в астДБ храню отпределители как мне заблагорассудится . может пригодится
Своими вопросами , вы загоняете меня в ГУГЛЬ.
sergio
Сообщения: 58
Зарегистрирован: 09 сен 2014, 12:13

Re: Выбор исходящего транка

Сообщение sergio »

april22 писал(а): в астДБ храню отпределители как мне заблагорассудится . может пригодится
Не очень понял что происходит в этом куске кода. Не хватает части кода откуда вызывается макрос, что в качестве arg1 передается, и что подставляется в dial.
Аватара пользователя
Wapo
Сообщения: 795
Зарегистрирован: 02 мар 2011, 17:53

Re: Выбор исходящего транка

Сообщение Wapo »

Уууу как все запущено... (да еще с 2014 года)

exten => _X.,n,Macro(selectnum,${CALLERID(num)})

[macro-selectnum]
....
далее по тексту
sergio
Сообщения: 58
Зарегистрирован: 09 сен 2014, 12:13

Re: Выбор исходящего транка

Сообщение sergio »

Wapo писал(а): ...
далее по тексту
Пардон, но что далее по тексту предлагаете? портянку из конструкции _X./2222 ? вариант 1 или вариант 2 ?
Иль быть может вариант n ?
Попробуйте еще раз перечитать стартовый пост. Я за советом пришел. Реализация то как у вас выполнена?
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: Выбор исходящего транка

Сообщение ded »

sergio писал(а):Фокус с подстановкой CALLERID(num) во fromuser транка не проходит. Иль я не правильно это делаю? :

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

[rt_trunk]
...
fromuser=${CALLERID(num)}
...
Нет единой схемы для всех провайдеров. У некоторых user= CallerID, у некоторых это разные вещи, и под одним юзером он может оригинировать в мир закреплённые за ним CallerID.
Кроме того,, провайдер не только может, но и обязан прикрывать вас, если Вы сознательно или по ошибек подставляете левые CallerID. Тема легитимности "прозрачных" CID широко освещена в сети.
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

Re: Выбор исходящего транка

Сообщение april22 »

sergio писал(а):Пардон, но что далее по тексту предлагаете?

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

asterisk -rx 'database put USER/154 callerid  79089999999'
как то так наверное
Своими вопросами , вы загоняете меня в ГУГЛЬ.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH