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

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

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

Модератор: april22

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

Сообщение alifreed3 » 14 июл 2019, 11:44

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

Прошу помощи, или подскажите куда копать.
alifreed3
 
Сообщений: 3
Зарегистрирован: 14 июл 2019, 11:37

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

Сообщение ded » 15 июл 2019, 00:12

Во первых - регистрируйте их правильно, чтобы не склеивать в одно - 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 - про диал-план.
ded
 
Сообщений: 14063
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение alifreed3 » 15 июл 2019, 07:13

Спасибо 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.
alifreed3
 
Сообщений: 3
Зарегистрирован: 14 июл 2019, 11:37

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

Сообщение virus_net » 15 июл 2019, 10:58

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 - звони бесплатно и напрямую.
virus_net
 
Сообщений: 2293
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение alifreed3 » 15 июл 2019, 14:33

Спасибо! То что нужно.
alifreed3
 
Сообщений: 3
Зарегистрирован: 14 июл 2019, 11:37

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

Сообщение Zavr2008 » 18 июл 2019, 01:45

названия провов удобнее передавать в callerid(name), так к слову)
Asterisk-совместимые Российские SIP/E1 шлюзы Alvis. Для форумчан скидки, В цены входит настройка связи с Asterisk! Помогаем в настройке TDM АТС: TDA/TDE/LDK и др.
Аватар пользователя
Zavr2008
 
Сообщений: 1452
Зарегистрирован: 27 янв 2011, 01:35

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

Сообщение ded » 18 июл 2019, 11:14

+++ !
ded
 
Сообщений: 14063
Зарегистрирован: 26 авг 2010, 19:00


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

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

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

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