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

Преобразование номеров Б

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

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

Ответить
alifreed3
Сообщения: 5
Зарегистрирован: 14 июл 2019, 10:37

Преобразование номеров Б

Сообщение alifreed3 »

Всем добрый день!
Приходят звонки на экстеншены вида sipnet74951234567, или например citiroute74953345544
Мне необходимо вырезать имя провайдера (названий провайдеров много и они могут быть разной длины) и поместить его в диалплане в название транка, через который нужно отправить звонок. Соответственно, номер поместить в ${EXTEN}. С приходящего транка есть возможность после названия провайдера вставить любой допустимый символ.
В итоге должно сработать так: Dial(SIP/sipnet/74951234567) или Dial(SIP/citiroute/74953345544)
Так как названия провайдеров могут быть разной длинны, удаление нескольких символов перед номеров не подойдет((

Прошу помощи, или подскажите куда копать.
ded
Сообщения: 15619
Зарегистрирован: 26 авг 2010, 19:00

Re: Преобразование номеров Б

Сообщение ded »

Во первых - регистрируйте их правильно, чтобы не склеивать в одно - sipnet74951234567.
Приземляйте звонки от разных провайдеров не в один контекст, а в каждый свой. Где и можно делать нужные преобразования.

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

[from-sipnet]
exten => sipnet74951234567,1,Set(OP=sipnet)
same => n,Set(DEST=${EXTEN:6})

[citiroute]
exten => citiroute74953345544,1,Set(OP=citiroute)
same => n,Set(DEST=${EXTEN:9})

[outbound]
exten => _X.,1,SIP/${OP}/${DEST})
Или в один контекст, где разделяйте

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

[inbound]
exten => _sipnetX.,1,1,Set(OP=sipnet)
same => n,Set(DEST=${EXTEN:6})

exten => _citirouteX.,1,Set(OP=citiroute)
same => n,Set(DEST=${EXTEN:9})
А хорошо бы вам Книгу почитать, главу 6 - про диал-план.
alifreed3
Сообщения: 5
Зарегистрирован: 14 июл 2019, 10:37

Re: Преобразование номеров Б

Сообщение alifreed3 »

Спасибо ded за развернутый ответ!
Чтобы не заводить в диал-плане кажды маршрут, например номер придет sipnetX74951234567, возможно ли диал-планом сделать так:
[from-trunk]
exten => _X.,1,Set(OP=взять все до Х)
same => n,Set(DEST=${взять все что после Х})

[outbound]
exten => _X.,1,SIP/${OP}/${DEST})

Если не возможно, чтобы не писать в диал-плане много строчек под каждого провайдера также думаем подключить AGI скрипт, который будет брать все до X и помещать в переменную OP, и все после X в переменную DEST.
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Преобразование номеров Б

Сообщение virus_net »

AGI скрипт тут как из пушки по воробьям.

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

[test]
exten => s,1,Set(foo=test12345)
exten => s,n,Set(a=${FILTER(0-9,${foo})})
exten => s,n,Set(b=${FILTER(a-z,${foo})})
exten => s,n,NoOp(a is [${a}] or [${a:1}] b is [${b}])
-- Executing [s@test:1] Set("Local/s@test-0000000e;2", "foo=test12345") in new stack
-- Executing [s@test:2] Set("Local/s@test-0000000e;2", "a=12345") in new stack
-- Executing [s@test:3] Set("Local/s@test-0000000e;2", "b=test") in new stack
-- Executing [s@test:4] NoOp("Local/s@test-0000000e;2", "a is [12345] or [2345] b is [test]") in new stack
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
alifreed3
Сообщения: 5
Зарегистрирован: 14 июл 2019, 10:37

Re: Преобразование номеров Б

Сообщение alifreed3 »

Спасибо! То что нужно.
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Преобразование номеров Б

Сообщение Zavr2008 »

названия провов удобнее передавать в callerid(name), так к слову)
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
ded
Сообщения: 15619
Зарегистрирован: 26 авг 2010, 19:00

Re: Преобразование номеров Б

Сообщение ded »

+++ !
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH