Страница 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();
};