Страница 1 из 1

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

Добавлено: 30 ноя 2014, 14:59
leonin
Добрый день, прошу помочь с задачей: Есть Астериск, пользователь при наборе определённой комбинации попадает на 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); тут тоже пробовал менять значение - ноль реакции на любые изменения.

Re: Подмена внутреннего номера при выходе на определённый тр

Добавлено: 30 ноя 2014, 15:33
Vlad1983
Set всегда перед Dial

Re: Подмена внутреннего номера при выходе на определённый тр

Добавлено: 30 ноя 2014, 15:38
ded
Ну, кроме того, наверное не
Set(CALLERID(name)=430)
а
Set(CALLERID(num)=430) ?

Re: Подмена внутреннего номера при выходе на определённый тр

Добавлено: 01 дек 2014, 08:23
leonin
Спасибо за помощь! протупил, что set должен быть выше Dial
Правильное решение оказалось проще:
в sip.conf нечего прописывать не надо,
а extension.ael:
_7XXXXXX => {
&record(${EXTEN},${UNIQUEID});
Set(CALLERID(num)=YYY${CALLERID(num)});
Dial(SIP/ШЛЮЗ/${EXTEN:1});
};

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