Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Астериск Подмена внутреннего номера при выходе на определённый транк

0

Добрый день, прошу помочь с задачей: Есть Астериск, пользователь при наборе определённой комбинации попадает на sip trunk в сторону шлюза, и в этом случае его внутренний номер должен менять, а точнее к его внутреннему номер спереди должно добавиться 3 цифры.

Например: Внутренний абонент c номер 170 набирает номер 7XXXXX, звонок отправился на шлюз и на принимающий стороне должен определиться номер YYY170, но при звонке на другой внутренний номер должен оставаться 170.

На FreePBX это сделать можно - в настройках самого Extension можно прописать Outbound CID YYY170, тогда все гладко, при звонке на внутренний номер отображается как 170, при звонке на транк который ведет на шлюз отображается как YYY170, а если использовать транк провайдера с указанным fromuser - то берет значение отсюда.

А вот в Астериске так не получается сделать, пробовал в настройках пользователя прописывать callerid=YYY170 <170> - то он определяется как YYY170 и на внутренних номерах и на шлюзе. пробовал различные комбинации - не вышло. Конфиг: sip.conf

[Шлюз]
type
=friend      
host
=x.x.x.x  
qualify
=yes  
nat
=no      
disallow
=all
allow
=alaw
allow
=ulaw
allow
=g729
dtmfmod
=rfc2833
context
=ael-in
permit
=x.x.x.x
--------------
[170]
type
=friend
host
=dynamic
context
=ael-out
qualify
=yes
secret
=*
pickupgroup
=1    
callgroup
=1  
callerid
=730170 <170>

extension.ael

context ael-out {


    _7XXXXXX
=> {
       
&record(${EXTEN},${UNIQUEID});
       
Dial(SIP/ШЛЮЗ/${EXTEN:1});
       
Set(CALLERID(name)=430);
       
};

Set(CALLERID(name)=430); тут тоже пробовал менять значение - ноль реакции на любые изменения.

спросил Nov 30 '14

leonin Gravatar leonin
1 1 1 2

обновил Nov 30 '14

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

Comments

Set(CALLERID(name)=430); нужно выставлять до Dial . И не name , а num . Set(CALLERID(num)=430);

zzuz (Nov 30 '14)edit

2 Ответа

0

Спасибо за помощь! протупил, что set должен быть выше Dial Правильное решение оказалось проще: в sip.conf нечего прописывать не надо,

а extension.ael:

_7XXXXXX => {

&record(${EXTEN},${UNIQUEID});

    Set(CALLERID(num)=YYY${CALLERID(num)});

   
Dial(SIP/ШЛЮЗ/${EXTEN:1});
   
};

Как раз перед внутренним номером добавляется нужный "префикс" (YYY) при звонке через этот транк

ссылка удалить спам редактировать

ответил Dec 1 '14

leonin Gravatar leonin
1 1 1 2

обновил Dec 1 '14

Comments

ну я написал как сделать так, чтоб были РАЗНЫЕ callerid. а так конечно проще. но человек который наткнется поиском может так не считать. порчитайте faq на этом сайте.

meral (Dec 1 '14)edit
0

Очевидно вам прийдется сделать как в freepbx

а именно, сначала выставить cid потом звонить на транк

в sip.conf добавляете

setvar: outbound_cid=1234567

в каждую секцию

потом

context ael-out {

_7XXXXXX => {
   
&record(${EXTEN},${UNIQUEID});
   
Set(CALLERID(num)=${outbound_cid})
   
Dial(SIP/ШЛЮЗ/${EXTEN:1});
   
};
ссылка удалить спам редактировать

ответил Dec 1 '14

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

обновил Dec 1 '14

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Nov 30 '14

Просмотрен: 3,216 раз

Обновлен: Dec 01 '14

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.