Сори, ошибочка вышла. То, что я написал выше, происходит исключительно с Blind Transfer. Attended Transfer понимает CallerID внутреннего абонента. Но на заметку все равно возьму =) Спасибо!
Janealter ( 2013-08-19 10:12:39 +0400 )редактироватьexten =>_1XX,1,Set(foo=${CALLERID(num)})
exten =>_1XX,2,Set(foo2=$[{LEN(${foo})}-3])
exten =>_1XX,3,Dial(SIP/${CALLERID(num):0:${foo2}}${EXTEN})
Если звонить, например, с номера 2101 на номер 2102, то CallerID определяется как 2101, а если внешний абонент +7905xxxxxxx позвонит на 2101, а 2101 переведет звонок с помощью ## на 2102, то CallerID будет уже +7905xxxxxxx. Вопрос, как заставить функцию Attended Transfer определят CallerID того, кто перенаправил ему звонок (то есть 2101), а не того, кто висит на внешней линии (+7905xxxxxxx)?
Вообще это нелогично: с т.з. третьего телефона ему просто приходит звонок от другого абонента. Но думаю можно обойти спец. проверкой: перед попаданием к номеру B сначала запоминаем номер в astdb, при трансфере извлекаем номер из astdb по номеру B (astdb нужна потому что там будет другой номер канала, новый вызов), и его подставляем для абонента C.
Сори, ошибочка вышла. То, что я написал выше, происходит исключительно с Blind Transfer. Attended Transfer понимает CallerID внутреннего абонента. Но на заметку все равно возьму =) Спасибо!
Janealter ( 2013-08-19 10:12:39 +0400 )редактироватьЗадан: 2013-08-19 09:47:32 +0400
Просмотрен: 839 раз
Обновлен: Aug 19 '13
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.