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

отслеживание перехвата

Добавлено: 27 апр 2021, 11:19
userkarl
Добрый день.

Подскажите, пожалуйста есть ли переменная, в которой содержится номер телефона, который звонил и был перехвачен?
На телефоне он отображается, но ни как не могу его получить, что-бы сообщить перехватившему информацию по данному номеру.


И второй вопрос - как перехватывать звонок, если разговор уже идет и приходит второй звонок. Как этот второй перехватить?
Через **num не получается, видимо он пытается перехватить первый звонок.

Re: отслеживание перехвата

Добавлено: 27 апр 2021, 15:23
Wapo
Для начала DumpChan вам в помощь, где все переменные увидите.
А насчет перехвата посмотрите: https://wapo-spb.livejournal.com/7753.html

Re: отслеживание перехвата

Добавлено: 27 апр 2021, 17:23
Zavr2008
функция CONNECTEDLINE в помощь.

Re: отслеживание перехвата

Добавлено: 28 апр 2021, 11:29
userkarl
Спасибо за советы.
Но видимо я не правильно выразился - как узнать данные до того, как вызвано pickup()?
Не могу ни как сообразить. Ведь до команды перехвата не известно ни чего о перехватываемом звонке.
Хочется послать команду до начала перехваченного разговора.

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

        _**X. => {

                NoOp(From=${PJSIP_HEADER(read,From)});
                NoOp(TEST=${CONNECTEDLINE(all)});
                NoOp(exten=${EXTEN});
                NoOp(callerid=${CALLERID(num)});
                NoOp(channel=${CHANNEL});
                DumpChan(1);
                Pickup(${EXTEN:2});
                HangUp();
        };

Re: отслеживание перехвата

Добавлено: 28 апр 2021, 11:46
ded
extensions_custom.conf

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

[from-internal-custom]
exten => _**X.,1,NoOp(From=${PJSIP_HEADER(read,From)})  ; а это зачем?
same => n,NoOp(TEST=${CONNECTEDLINE(all)}) 
same => n,NoOp(exten=${EXTEN}) 
same => n,NoOp(callerid=${CALLERID(num)}) 
same => n,NoOp(channel=${CHANNEL}) 
same => n,DumpChan(1)
same => n,Pickup(${EXTEN:2}@ext-local)
Оформление туманных идей в код диал-плана. Дорого. (с)

Re: отслеживание перехвата

Добавлено: 28 апр 2021, 21:21
userkarl
Это просто в CLI следил за разными переменными.

Думал донес что хочется получить. Видимо не понятно, попытаюсь по другому:

Есть команда Pickup(${EXTEN:2});
До ее выполнения надо получить номер звонящего, который мы перехватываем.

Объяснение ситуации:

В соседнем кабинете звонит телефон, у меня мигает BLF, я нажимаю и вижу на телефоне номер и имя того, кто звонил в соседний кабинет.
Но не всегда имя помещается на экране. А хотелось бы сказать "Здравствуйте Иван Иванович..."
Да и неизвестный номер надо бы проверить по спам базам.

По этому вопрос как получить этот номер?

Re: отслеживание перехвата

Добавлено: 29 апр 2021, 09:03
ded
userkarl писал(а):В соседнем кабинете звонит телефон, у меня мигает BLF, я нажимаю и вижу на телефоне номер и имя того, кто звонил в соседний кабинет.
Но не всегда имя помещается на экране.
Купить телефон с бОльшим экраном.
userkarl писал(а):Да и неизвестный номер надо бы проверить по спам базам.
Модуль CIDlookup в сценарий inbound routes.
userkarl писал(а):По этому вопрос как получить этот номер?
same => n,NoOp(callerid is ${CALLERID(all)})

Re: отслеживание перехвата

Добавлено: 30 апр 2021, 11:03
userkarl
ded писал(а):same => n,NoOp(callerid is ${CALLERID(all)})
А вы в курсе, что в контексте перехвата ${CALLERID(all)} равен внутреннему номеру на который звонят, а не тому, который звонит.
По сути перехватывающий совершает исходящий звонок на номер перехватываемого, но вместо DIAL идет PICKUP.
И т.к. это разные каналы, то переменные между ними не передаются. Можно записать в глобальную, но тогда вопрос -
если будет два звонка одновременно, то в переменной будет данные от последнего звонка, а перехват какого из них произойдет?

Re: отслеживание перехвата

Добавлено: 30 апр 2021, 11:36
ded
Готов воспроизвести диал-план, указанный выше, в таком виде -

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

[from-internal-custom]
exten => _**X.,1,NoOp(Connected line is ${CONNECTEDLINE(all)})
same => n,NoOp(exten is ${EXTEN:2})
same => n,NoOp(callerid is ${CALLERID(all)})
same => n,NoOp(channel is ${CHANNEL}) 
И позвоню с номера 721 на 731. Согласно вашему утверждению
userkarl писал(а):в контексте перехвата ${CALLERID(all)} равен внутреннему номеру на который звонят, а не тому, который звонит.
callerid is будет равен 731, а не 721, так?

Re: отслеживание перехвата

Добавлено: 30 апр 2021, 13:34
userkarl
ded писал(а):Готов воспроизвести диал-план, указанный выше, в таком виде -

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

[from-internal-custom]
exten => _**X.,1,NoOp(Connected line is ${CONNECTEDLINE(all)})
same => n,NoOp(exten is ${EXTEN:2})
same => n,NoOp(callerid is ${CALLERID(all)})
same => n,NoOp(channel is ${CHANNEL}) 
И позвоню с номера 721 на 731. Согласно вашему утверждению
userkarl писал(а):в контексте перехвата ${CALLERID(all)} равен внутреннему номеру на который звонят, а не тому, который звонит.
callerid is будет равен 731, а не 721, так?
Звонок идет с номера, например, +79998887766 на 731. На телефоне с номером 721 набираю **731 и происходит Pickup(${EXTEN:2});
Хочу видеть в карточке или в мессенджере(это уже сам сделаю как надо) номер - +79998887766. Т.е. мне надо в команду SHELL передать
именно +79998887766.
Типа такого:

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

    _**. => {
            Set (num="+79998887766"); // Вот здесь надо подставить нужный номер.
            Set(result=${SHELL(script.bash ${num} )});
            Pickup(${EXTEN:2});
            HangUp();
     };