ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы и их решения Asterisk как такового

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

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

Сообщение sergio » 30 янв 2018, 15:11

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

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

Для себя выбрал первый вариант но решил посоветоваться, вдруг есть еще проще?
sergio
 
Сообщений: 58
Зарегистрирован: 09 сен 2014, 12:13

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

Сообщение ded » 30 янв 2018, 15:30

Всё было бы проще, используй Вы какую-то оболочку типа 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})
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение Zavr2008 » 30 янв 2018, 15:39

Нужно только осознавать, что после
Код: выделить все
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-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2159
Зарегистрирован: 27 янв 2011, 01:35

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

Сообщение sergio » 30 янв 2018, 16:10

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)}
...
sergio
 
Сообщений: 58
Зарегистрирован: 09 сен 2014, 12:13

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

Сообщение april22 » 30 янв 2018, 16:52

могу покащаться банальным , но я делал немного по другому.
перед 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)}---------------- )


в астДБ храню отпределители как мне заблагорассудится . может пригодится
Своими вопросами , вы загоняете меня в ГУГЛЬ.
april22
 
Сообщений: 2187
Зарегистрирован: 09 июл 2012, 09:47

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

Сообщение sergio » 30 янв 2018, 17:05

april22 писал(а):в астДБ храню отпределители как мне заблагорассудится . может пригодится

Не очень понял что происходит в этом куске кода. Не хватает части кода откуда вызывается макрос, что в качестве arg1 передается, и что подставляется в dial.
sergio
 
Сообщений: 58
Зарегистрирован: 09 сен 2014, 12:13

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

Сообщение Wapo » 30 янв 2018, 17:08

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

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

[macro-selectnum]
....
далее по тексту
Аватар пользователя
Wapo
 
Сообщений: 795
Зарегистрирован: 02 мар 2011, 18:53

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

Сообщение sergio » 30 янв 2018, 17:20

Wapo писал(а):...
далее по тексту

Пардон, но что далее по тексту предлагаете? портянку из конструкции _X./2222 ? вариант 1 или вариант 2 ?
Иль быть может вариант n ?
Попробуйте еще раз перечитать стартовый пост. Я за советом пришел. Реализация то как у вас выполнена?
sergio
 
Сообщений: 58
Зарегистрирован: 09 сен 2014, 12:13

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

Сообщение ded » 30 янв 2018, 17:49

sergio писал(а):Фокус с подстановкой CALLERID(num) во fromuser транка не проходит. Иль я не правильно это делаю? :
Код: выделить все
[rt_trunk]
...
fromuser=${CALLERID(num)}
...

Нет единой схемы для всех провайдеров. У некоторых user= CallerID, у некоторых это разные вещи, и под одним юзером он может оригинировать в мир закреплённые за ним CallerID.
Кроме того,, провайдер не только может, но и обязан прикрывать вас, если Вы сознательно или по ошибек подставляете левые CallerID. Тема легитимности "прозрачных" CID широко освещена в сети.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение april22 » 30 янв 2018, 18:01

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

Код: выделить все
asterisk -rx 'database put USER/154 callerid  79089999999'


как то так наверное
Своими вопросами , вы загоняете меня в ГУГЛЬ.
april22
 
Сообщений: 2187
Зарегистрирован: 09 июл 2012, 09:47

След.

Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH