CDR

Очень сильно раздражает, если для поиск нужного звонка в статистике любой АТС нужно ждать десятки секунд, а то и минуты. А теперь представьте, что Вы постоянно работаете со статистикой… Каждый поиск, каждый новый фильтр – потерянные минуты, которые собираются в часы 🙁 Вы можете увеличить вычислительные ресурсы сервера, можно удалить старые записи… А можно перейти на полнотекстовый поиск. Вот это последние мы и решили испытать в ожидающем нас новом релизе webitel.

Те, кто пользовался админкой в webitel 3.0 или 3.1, очень хорошо помнят ее ограничения при работе со статистикой – только фильтры по дате. Я сам неоднократно не мог найти нужный мне звонок:

Старая статистика звонков

В релизе 3.2 мы презентовали новый Webitel WebClient, который обзавелся не только новым видом, но и новым конструктором фильтров:

Конструктор фильтров

Недавно я рассказывал о нашем опыте подружить webitel с elasticsearch. И вот мы запустили в тестовом режиме сервис аналитики по звонкам для всех пользователей webitel on-demand. В основе все та же связка elasticsearch и kibana. Сегодня я хочу более подробней рассказать, что это такое.

Пройдя авторизацию (все данные можете запросить у поддержки), для Вас открывается простой Dashboard:

Dashboard

После публикации “Звонок с сайта“, ко мне обращались несколько человек с одним вопросом: “Можно вместо CallerID подставить IP-адрес звонящего?” Отвечаю: Можно! 🙂 Просто добавьте в Ваш диалплан:

<action application=“set” data=“effective_caller_id_number=${network_addr}”/>
<action application=“set” data=“effective_caller_id_name=Site Call”/>

Получите:

Если Вы используете Oktell IP PBX без модуля КЦ и Вы не умеете разрабатывать плагины, а необходимо быстро решить вопрос: При входящем звонке отобразить историю всех звонков по номеру с комментариями. Как это сделать? Пойдем через веб-страничку 🙂

Для начало разработаем SQL запрос, что бы увидеть все входящие, исходящие и пропущенные звонки по номеру:

SELECT [s].[TimeAnswer] as [TimeAnswer]
   ,CONVERT(varchar(max), Cast (Cast ( [s].TimeStop - [s].TimeAnswer as float ) * 1440 as decimal(15,2))) as [TimeLong]
   ,'входящий' AS [D]
   ,CONVERT(varchar(max), [s].[Astr]) as [Abonent] 
   ,CONVERT(varchar(max), [s].[Bstr]) as [Oper] 
   ,l.LineCode as [LineCode]
   ,CONVERT(varchar(max), [c].[Comment])  AS [Comment]
   FROM [oktell].[dbo].[A_Stat_Comments] [c]
   right outer join [oktell].[dbo].[A_Stat_Connections_1x1] [s] on [s].[Id] = c.[id]
   join [oktell].[dbo].A_ServerExtLines [l] on [s].ALineId = [l].id
WHERE ([s].[AOutNumber] like '$c' AND [s].[Bstr] not like 'IVR') 

UNION

SELECT [s].[TimeAnswer] as [TimeAnswer]
   ,CONVERT(varchar(max), Cast (Cast ( [s].TimeStop - [s].TimeAnswer as float ) * 1440 as decimal(15,2))) as [TimeLong]
   ,'исходящий' AS [D]
   ,CONVERT(varchar(max), [s].[Bstr]) as [Abonent] 
   ,CONVERT(varchar(max), [s].[Astr]) as [Oper] 
   ,l.LineCode as [LineCode]
   ,CONVERT(varchar(max), [c].[Comment])  AS [Comment]
   FROM [oktell].[dbo].[A_Stat_Comments] [c]
   right outer join [oktell].[dbo].[A_Stat_Connections_1x1] [s] on [s].[Id] = c.[id]
   join [oktell].[dbo].A_ServerExtLines [l] on [s].BLineId = [l].id
WHERE [s].[BOutNumber] like '$c' AND [s].[Astr] not like 'IVR'

UNION

SELECT [s].[TimeAnswer] as [TimeAnswer]
   ,CONVERT(varchar(max), Cast (Cast ( [s].TimeStop - [s].TimeAnswer as float ) * 1440 as decimal(15,2))) as [TimeLong]
   ,'пропущенный' AS [D]
   ,CONVERT(varchar(max), [s].[Astr]) as [Abonent] 
   ,CONVERT(varchar(max), [s].[Bstr]) as [Oper] 
   ,l.LineCode as [LineCode]
   ,CONVERT(varchar(max), [c].[Comment])  AS [Comment]
   FROM [oktell].[dbo].[A_Stat_Comments] [c]
   right outer join [oktell].[dbo].[A_Stat_Connections_1x1] [s] on [s].[Id] = c.[id]
   join [oktell].[dbo].A_ServerExtLines [l] on [s].ALineId = [l].id
WHERE [s].[AOutNumber] like '$c' AND [s].[Bstr] like 'IVR' AND [s].[ReasonStop] = '3'

ORDER BY [TimeAnswer] DESC

Стоит задача на Oktell IP PBX ограничить длительность внешних разговоров для всех сотрудников до 10 мин. Решил задачу так:

1. Создаем служебный сценарий который проверяет активность на каждой из внешних SIP-линий и если превышено 10 мин. – разрывает соединение:

2. Прописываем служебный сценарий на периодический запуск каждых 20 сек.

Задача решена 🙂

Запускаем новую услугу для пользователей Oktell“Подписка ua-region.info”. Есть одна из лучших баз с актуальной информацией по украинским предприятиям http://www.ua-region.info/. Вы можете оформить подписку на год и при входящем звонке, Oktell отправит запрос на сайт ua-region.info, где по callerid найдет компанию и ее описание. Эти данные с сайта Вы увидите у себя на мониторе (и на дисплее ip-телефона) вот так:

Всегда приятно знать кто тебе сейчас звонит 🙂

Продолжаем нашу передачу “По письмам интернет читателей”. Сегодня ответим на письмо читателя из Херсона: создадим автоинформатор на обычной Oktell IP PBX (конечно, можно все намного проще сделать с помощью модуля Колл Центр, но мы будим делать это без последнего).

1. К нашей Excel-ке добавим еще одну колонку result (не знаете о каком файле идет речь? Вам сюда).

2. Создаем служебный сценарий, задача которого последовательно пройти файл выбирая каждую запись и дозваниваясь. Если не дозвонились – в колонку result вносим значение “Неудача” и берем следующее значение. Для идентификатора будем использовать колонку id:

3. Если мы дозвонились, тогда передаем управление на голосовой (IVR) сценарий, задача которого воспроизвести предварительно записанный файл с информацией и суммой долга и ответить в Excel, что абонент дослушал до конца:

Вот и все! Теперь этот служебный сценарий можно просто запустить или же запланировать запуск по расписанию.

Здравствуйте, уважаемые читатели! Продолжаю отвечать на Ваши письма. И вот еще одно письмо из Алтайского Края: “.. при входящем звонке от клиента нужно взять из файла Excel файла сумму его долга …” Что же, попробуем ответить и на этот вопрос.

1. Имеем файл в формате Microsoft Excel с определенными колонками:

В ответ на письмо уважаемого читателя, хочу рассказать как можно в обычной Oktell IP PBX запустить автодозвон (callback) на пропущенный звонок. Процесс перезвона клиента будет состоять из трех стадий:

  1. Понимаем, что звонок пропустили. Получаем номер абонента.
  2. Запускаем служебный сценарий с входящим параметром для дозвона абоненту
  3. Запускаем голосовой сценарий для соединения клиента с группой сотрудников

Теперь о каждом детально:

1. У нас уже есть сценарий обработки контента (у кого нет – читаем SVC: Фиксируем пропущенные звонки в Oktell IP PBX). Вносим в него правку: проверка на время (а если звонок был ночью – зачем перезванивать?) и запуск служебного сценария:

2. Непосредственно служебный сценарий:

3. Голосовой (IVR) сценарий с переключением на группу сотрудников: