Oktell

Буквально вчера мы наблюдали начало тестирования последнего обновления Oktell, где была добавлена поддержка работы SIP-сервера за NAT. Решил и я проверить, как оно все работает 🙂

Для чистоты эксперимента, я нахожусь дома, где все устройства работают за WiFi-роутером. И для начало, что бы не играться с пробрасыванием портов, я включу DMZ на своем роутере для ноутбука с установленным Oktell:

DMZ
DMZ

В этом году на Партнерской Конференции Oktell многих заинтересовал вопрос “звонка с сайта”, о котором я упомянул в своем докладе. Что же, опишу более подробно, как каждый может это реализовать у себя.

1. Устанавливаем FreeSWITCH
Для начало необходимо установить FreeSWITCH. Именно его мы будем использовать как транспорт с сайта на oktell. Вы можете устанавливать на том же сервере (тогда не забудьте сменить стандартный порт SIP) или на любом другом. Главное, не забудьте собрать и включить модуль RTMP!

Неоднократно приходись делать объединение офисной АТС на базе Asterisk с call-центром Oktell или просто интегрировать два номерных плана удаленных офисов на Oktell IP PBX и Asterisk. В общем, нет ничего сложного, посмотрим как это все работает на простом примере.

У нас есть 2 офиса: в одном прекрасно работает Oktell IP PBX (номерной план 1хх и 2хх), а в другом со своей задачей отлично справляется Asterisk (номерной план 3хх и 4хх). У каждой из АТС имеются свои городские номера, только еще на Asterisk установлен GSM-шлюз. Каждая из АТС имеет белый внешний адрес (или VPN между офисами). Задача сделать прозрачное объединение двух номерных планов, что бы сотрудник не задумываясь набирал номер, а так же дать возможность сотрудникам за Oktell звонить через GSM-шлюз. Рассмотрим как это решается.

Долго думал в какую категорию разместить… Жаль, что нет у меня категории “Юмор”, может стоит создать? Ладно, о чем это я…

Не так давно, в необъятных просторах Интернета, появился сайт oktell.com.ua, который громко назвал себя “Oktell Украина”. Те партнеры, что работают с телекоммуникационной платформой Oktell на территории Украины (в том числе и Ваш покорный слуга), обратились к всезнающему Google и поняли откуда ноги растут (voxline.net.ua). Конечно, мы им пожелали успехов в новом деле (не припоминаю, что бы они внедряли до этого oktell)!

Но, вот сегодня все заметили амбициозные заявления на главной страницы сайта с названием oktell.com.ua от компании, которая еще не внедряла oktell:

Эксперты в создании Call центров
Эксперты в создании Call центров

Уже не первый раз меня спрашивают: “Как подключить SIP-телефон и рабочее место Oktell на ноутбуке, который подключен по WiFi”

Отвечаю:

1. Ноутбук подключен к локальной сети только по WiFi, создаем сетевой мост:

Сетевой мост
Сетевой мост
Сетевой мост
Сетевой мост

2. На карте сети в Oktell ассоциируем SIP-телефон с нашим ноутбуком:

Карта сети
Карта сети

3. Подключаем Internet\WAN порт SIP-телефона к ноутбуку

Один из наших клиентов (очень большая компания в России) не может пользоваться Skype для звонков к нам в офис (политика безопасности), а на стационарный – дорого. Единственный вариант для него – Google Talk. А мне хочется что бы этот звонок отображался в единой статистике с возможностью прослушать его запись. Давайте объединим пожелания клиента с нашими!

Будем использовать FreeSWITCH. Необходимо включить модуль Dingaling. В файле conf/jingle_profiles/client.xml

  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  

Для входящих в dialplan добавляем:


     
         
         
     
   

Все! Теперь звонок будет поступать на номер 1000

И принимать звонок в Oktell

Наш адрес GTalk для звонков: it.sfera.com

Если Вы используете 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