перехват звонков

153 views
Skip to first unread message

Igor__D

unread,
Jul 20, 2017, 6:06:11 AM7/20/17
to freeswitch-ru
Добрый день!

пробежался по обсуждаемым темам и практически не увидел обсуждения вопроса по перехвату звонков
есть три типа перехвата
1 - глобальный
2 - групповой
3 - перехват конкретного номера 

перехват по
-pickup
-intercept

есть пример в дефолтной конфигурации.... но там что-то много накручено(в том числе регистрация звонков в отдельной базе)

может есть варианты как проще это организовать ?
пока интересует вариант перехвата конкретного номера

если у Вас есть решения - прошу поделиться...

Borik Bobrujskov

unread,
Jul 20, 2017, 9:14:39 AM7/20/17
to freeswitch-ru
Приветствую!

Решения из примера и есть самое простое. Его логика довольно очевидна исходя из того, что может команда intercept. А она может только одно: установить соединение с плечом, uuid которого передан ей в качестве параметра. То бишь: нам нужно где-то взять этого самый uuid. Какие есть варианты:
- выбрать из всех активных звонков именно тот, который нам нужен, и посмотреть его uuid;
- сохранить uuid в момент обработки звонка, заранее, с мыслью, что кому-то может понадобиться этот звонок перехватить и в момент перехвата просто его посмотреть

Пример в vanilla конфигурации реализует именно второй вариант. А первый будет связан с написанием отдельного скрипта, который будет заниматься анализом каждого звонка из текущих на предмет "а этот ли звонок надо перехватить". Это существенно сложнее

alexeyme...@gmail.com

unread,
Jul 20, 2017, 11:16:46 AM7/20/17
to freeswitch-ru
Только если начинать пытаться перехватывать звонки идущие через очередь (fifo/callcenter), то не факт что будет проще.
Можете посмотреть как это реализовано во FusionPBX. Там используется Lua скрипт.
Основная проблема это найти нужный канал. В БД нет поля отвечающего за номер на который этот канал звонит.
Но там есть presence_id который и используется во FusionPBX. Но в общем случае они не обязаны совпадать.
Так же могут быть 2 плеча. Например звонок приходит на номер 100 и ставится в fifo. Далее fifio инициирует звонок на абонента 200.
Так вот. Что бы перехватить номер 200 в этом случае нужно перехватить звонок на номер 100 который инициировал звонок на 200.
Во FusionPBX реализована следующая логика. По CID номеру ищется пользователь в БД и определяется в каких он
группах состоит. Далее создается список всех номеров всех групп этого пользователя. Ну и в конце среди активных
каналов ищется первый номер из этого списка. Если нужно перехватить один номер то ищется только этот номер.


pickup приложение работает немного по другому. Это специальный endpoint который нужно добавить в строку как параллельный звонок.
В нем можно указать любой номер и далее использовать его для перехвата. Это все из описания. Я сам его ни когда не пробовал.

четверг, 20 июля 2017 г., 16:14:39 UTC+3 пользователь Borik Bobrujskov написал:
Reply all
Reply to author
Forward
0 new messages