Описание решения Call Center на базе Oktell Подготовлено для: ООО "Альтернатива" 12 августа 2013 Версия 1.0 Права и распространение Все права интеллектуальной собственности принадлежат: © Заказчик: ООО "Альтернатива" © Исполнитель: ООО «Программные технологии» Распространение копий допускается по согласованию с разработчиками документа. Оригиналы в электронном виде и в виде утвержденных печатных копий находятся под контролем библиотек и архивов разработчиков документа. Передача копий третьим лицам допускается по согласованию с Заказчиком и Исполнителем. Лист согласования ФИО Компания Должность Подпись Дата История изменения документа Дата Автор Версия Комментарий 12.07.2013 Орлов Дмитрий 1.0 Релиз документа Страница 2 Оглавление Права и распространение ...........................................................................................................................2 Лист согласования .......................................................................................................................................2 История изменения документа ..................................................................................................................2 Общие сведения ..........................................................................................................................................5 Структурная схема .......................................................................................................................................5 Аппаратно-программное обеспечение системы ......................................................................................5 Сервер.......................................................................................................................................................5 Обеспечение клиентов ...........................................................................................................................5 Настройки АТС Oktell ...................................................................................................................................6 Настройки шлюза ТФОП..........................................................................................................................6 Карта сети .................................................................................................................................................7 Внутренний номерной план ...................................................................................................................7 Пользователи и роли...............................................................................................................................8 Логика обработки входящих вызовов ...................................................................................................9 Сценарий «Альтернатива главный»...................................................................................................9 Сценарий «Альтернатива IVR рабочее время» .................................................................................9 Сценарий «Альтернатива IVR нерабочее время» ...........................................................................10 Определение рабочего времени .....................................................................................................11 Логика обработки исходящих вызовов ...............................................................................................13 Проект колл-центра Oktell для актуализации номеров и контактов ....................................................13 Таблицы абонентов ...............................................................................................................................14 Таблица «Абоненты».........................................................................................................................14 Таблица «Абоненты для обзвона»...................................................................................................14 Сценарии ................................................................................................................................................15 Сценарий «Дозвон»...........................................................................................................................15 Сценарий «Актуализация номеров» ................................................................................................15 Задачи .....................................................................................................................................................16 Актуализация номеров .....................................................................................................................16 Прогрессивный обзвон ТС ................................................................................................................16 Интеграция с CRM Terrasoft ......................................................................................................................17 Интеграция клиентской библиотеки телефонии Oktell .....................................................................17 Таблицы абонентов ...............................................................................................................................17 Вычисление ответственного менеджера ............................................................................................18 Страница 3 Отказоустойчивость и резервное копирование системы ......................................................................21 Страница 4 Общие сведения Внедрение колл-центра на базе Oktell в телефонную инфраструктуру обеспечит Заказчика стандартными функциями АТС, а также дополнительными функциями программных IP АТС, такими как получение информации о входящем звонке, управление телефонными вызовами, обращение к записям собственных разговоров, создание конференций и установка нужных режимов переадресации. Возможности колл-центра Oktell также будут доступны для проведения автоматизированных телефонных кампаний. В рамках проекта произведена интеграция с интерфейсом и с базой данных системы CRM Terrasoft. Структурная схема E1 SIP SIP Oktell АГАТ FXS UX-3410 SIP Оператор связи Оператор связи Оператор связи Операторы связи SIP Аппаратно-программное обеспечение системы Сервер Аппаратное обеспечение Параметр Модель сервера Процессор Память Дисковая подсистема Сеть Программное обеспечение Программа Windows 7SP1 Ultimate Oktell (Server and Client) Microsoft SQL Server 2005 SP4 Express Edition Значение Виртуальный компьютер VMware Intel Xeon X5650, 2,67 GHz 4 Gb VMware Virtual disk 40 Gb Intel(R) PRO/1000 MT (10.9.48.224) Intel(R) PRO/1000 MT (10.9.49.224) Назначение Операционная система Программная IP АТС, колл-центр Хранилище конфигурации и пользовательских данных Oktell Обеспечение клиентов Аппаратное обеспечение Тип клиента Обеспечение Страница 5 Компьютер с гарнитурой IP телефон Аналоговый телефон с ATA адаптером Программное обеспечение Программа Oktell (Client) Terrasoft CRM 3.3.2 с интеграционной библиотекой Oktell Компьютер пользователя с ОС семейства Windows, с установленной клиентской частью АТС Oktell. В качестве звукового интерфейса может использоваться обычная аудиогарнитура или USB телефон. Любой IP телефон, поддерживающий протокол SIP, например DLink DPH-150S, Yealink SIP-T38G Любой аналоговый телефон совместно с FXS адаптером, поддерживающим протокол SIP, например Linksys SPA-1001 Назначение Выполнение, прием телефонных звонков, вход в задачи коллцентра Выполнение, прием телефонных звонков, вход в задачи коллцентра. Интерфейс колл-центра Terrasoft Настройки АТС Oktell Настройки шлюза ТФОП Выход на городские телефонные сети организован посредством существующих каналов связи, подключенных к офисной АТС АГАТ UX-3410. Связь между АТС Oktell и АТС АГАТ UX-3410 организована при помощи SIP транка (шлюз без регистрации) на 23 канала. Настройки шлюза со стороны Oktell Страница 6 Карта сети Карта сети содержит 1 сервер Oktell, 1 SIP шлюз и клиентские компьютеры с подключенными гарнитурами. Список элементов карты сети офиса сведен в таблицу. Объект SIP шлюз Сервер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Компьютер Имя в сети 10.9.48.22 Admin-ПК Админ-ПК НаташКаЖ-HP User-sopr1 User-sopr2 Olgasmalaykina Noyt-HP User-sopr3 User-op1 User-op2 User-op3 User-op4 User-op5 User-op6 User-op7 USER-ПК1 USER-ПК computer-0cf152 Примечание SIP шлюз без регистрации на 23 канала Сервер Oktell Клиентский компьютер отдела сопровождения Клиентский компьютер отдела сопровождения Клиентский компьютер отдела сопровождения Клиентский компьютер отдела сопровождения Клиентский компьютер отдела сопровождения Клиентский компьютер отдела сопровождения Клиентский компьютер отдела сопровождения Клиентский компьютер отдела продаж Клиентский компьютер отдела продаж Клиентский компьютер отдела продаж Клиентский компьютер отдела продаж Клиентский компьютер отдела продаж Клиентский компьютер отдела продаж Клиентский компьютер отдела продаж Клиентский компьютер колл-центра Клиентский компьютер колл-центра Клиентский компьютер колл-центра Внутренний номерной план Номера внутри АТС Oktell имеют следующий формат 19XX, то есть 4 цифры и начинаются на 19 Номер 1900 1901 1902 1910 1911 1912 1913 1920 1921 1922 1923 1924 1925 1926 1927 Тип Стандартный, групповой Стандартный Стандартный Стандартный, групповой Стандартный Стандартный Стандартный Стандартный, групповой Стандартный Стандартный Стандартный Стандартный Стандартный Стандартный Стандартный Описание Секретариат Секретарь1 Секретарь2 Колл-центр Актуализатор1 Актуализатор2 Актуализатор3 Отдел продаж Менеджер ОП1 (Нач. ОП) Менеджер ОП 2 Менеджер ОП 3 Менеджер ОП 4 Менеджер ОП 5 Менеджер ОП 6 Менеджер ОП 7 Страница 7 1928 1929 1930 1931 1932 1933 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1991 1994 1995 Стандартный Стандартный Стандартный Стандартный Стандартный Стандартный Стандартный, групповой Стандартный Стандартный Стандартный Стандартный Стандартный Стандартный Стандартный Стандартный Стандартный Стандартный Зарезервированный Зарезервированный Менеджер ОП 8 Менеджер ОП 9 Менеджер ОП 10 Менеджер ОП 11 Менеджер ОП 12 Менеджер ОП 13 Отдел сопровождения Менеджер ОС1 (Нач. ОС) Менеджер ОС2 Менеджер ОС3 Менеджер ОС4 Менеджер ОС5 Менеджер ОС6 Менеджер ОС7 Менеджер ОС8 Менеджер ОС9 Администратор Признак звонка в компанию Альтернатива Признак звонка в компанию Регион-Пресс Пользователи и роли Логин actualizer01 actualizer02 actualizer03 manager01 manager02 manager03 manager04 manager05 manager06 manager07 manager08 manager09 manager10 manager11 manager12 manager13 support01 support02 support03 support04 support05 support06 Роли Оператор колл-центра, Пользователь системы Оператор колл-центра, Пользователь системы Оператор колл-центра, Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Номера 1910, 1911 1910, 1912 1910, 1913 1920, 1921 1920, 1922 1920, 1923 1920, 1924 1920, 1925 1920, 1926 1920, 1927 1920, 1928 1920, 1929 1920, 1930 1920, 1931 1920, 1932 1920, 1933 1940, 1941 1940, 1942 1940, 1943 1940, 1944 1940, 1945 1940, 1946 Страница 8 support07 support08 support09 secretary01 secretary02 user1 Пользователь системы Пользователь системы Пользователь системы Пользователь системы Пользователь системы Администратор 1940, 1947 1940, 1948 1940, 1949 1900, 1901 1900, 1902 1991 Логика обработки входящих вызовов Логика обработки входящих вызовов организована посредством нескольких сценариев. Сценарий «Альтернатива главный» Данный сценарий обрабатывает все входящие вызовы и реализует следующую логику: Начало Альтернатива (1994)? Да Да IVR Альтернатива рабочее время Нет IVR Альтернатива нерабочее время Да IVR Регион-Пресс рабочее время Нет IVR Регион-Пресс нерабочее время Время рабочее? Нет Регион-Пресс (1995)? Да Время рабочее? Нет Переключаем на номер вызова (19XX) Конец Сценарий «Альтернатива IVR рабочее время» 2 сценария с одинаковой логикой обрабатывают входящие вызовы в рабочее время. Разница заключается в различном воспроизводимом тексте. 1. Альтернатива IVR рабочее время 2. Альтернатива (РП) IVR рабочее время Логика: Страница 9 Начало Воспроизведение IVR Выбор да 2 Менеджер определён? Соединение с менеджером Есть соединение? нет Звонок на весь ОП нет 3 Соединение с начальником ОП Есть соединение? да 1 Доввод до формы 19XX 0 Получение факса таймаут Секретарь Соединение с абонентом Конец Сценарий «Альтернатива IVR нерабочее время» 2 сценария с одинаковой логикой обрабатывают входящие вызовы в рабочее время. Разница заключается в различном воспроизводимом тексте. 1. Альтернатива IVR нерабочее время 2. Альтернатива (РП) IVR нерабочее время Логика: Страница 10 Начало Воспроизведение IVR Выбор 0 Получение факса 1 или таймаут Голосовое сообщение Конец Определение рабочего времени График рабочего времени и отклонения от графика (праздники, переносы) задаются при помощи встроенного в интерфейс администрирования Oktell (Внимание работает только если браузер по умолчанию IE). Данные записываются в поле, представляющее XML структуру. Для вычисления рабочего времени, написана функция на SQL сервере Oktell_Settings.dbo.WorkingTime, которая возвращает 0 или 1. На вход подаётся текущее время. Страница 11 USE [oktell_settings] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[WorkingTime](@DATE datetime) RETURNS int AS BEGIN DECLARE @WorkingTime int, @Current int; DECLARE @Index int, @XMLString varchar(1500), @Start char(8), @Stop char(8), @Day char(1); If (select count(*)from A_HolidaysUser where Datepart(yy,date) = Datepart(yy,@DATE) and Datepart(mm,date) = Datepart(mm,@DATE) and Datepart(dd,date) = Datepart(dd,@DATE) and type=1)>0 Return(0); If (select count(*) from A_HolidaysUser where Datepart(yy,date) = Datepart(yy,@DATE) and Datepart(mm,date) = Datepart(mm,@DATE) and Datepart(dd,date) = Datepart(dd,@DATE) and type=0)>0 select @day=asDayofWeek from A_HolidaysUser where Datepart(yy,date) = Datepart(yy,@DATE) and Datepart(mm,date) = Datepart(mm,@DATE) and Datepart(dd,date) = Datepart(dd,@DATE) Else Set @day=case when datepart(dw,@DATE)=1 then 7 else datepart(dw,@DATE)-1 end set @Current=datepart(hh,@Date)*60+datepart(mi,@Date); SELECT @XMLString=valuestr FROM A_Settings where name='us~~~~o_WorkTime' Set @Index = 1; While @Index>0 Begin Set @Index = CharIndex('Period WeekDay="'+@Day+'"', @XMLString, @Index+1); Set @Start = SubString(@XMLString,@Index+30,8); Set @Stop = SubString(@XMLString,@Index+52,8); Select @WorkingTime = case when @current>=cast(substring(@Start,1,2) as int)*60+cast(substring(@Start,4,2) as int) and @current<=cast(substring(@Stop,1,2) as int)*60+cast(substring(@Stop,4,2) as int) then 1 else 0 end; If @WorkingTime = 1 Break If CharIndex('Period WeekDay="'+@Day+'"', @XMLString, @Index+1) = 0 Break; End Страница 12 RETURN(@WorkingTime); END Логика обработки исходящих вызовов Исходящие вызовы подчиняются следующей логике: Начало Номер набран? Нет Набор номера Да Длина номера Соединение с абонентом АГАТ 3 Нет 4 Первые цифры 19? 6 Прочее Добавление к номеру «9" Да Соединение с внутренним пользователем Соединение «Город» Соединение «Межгород» Конец Проект колл-центра Oktell для актуализации номеров и контактов Для решения задач актуализации в колл-центре Oktell создан проект «Автообзвон1». Проект решает 2 задачи, представляющие собой исходящие телефонные кампании: 1. Актуализация телефонных номеров Страница 13 2. Актуализация контактов Данный раздел описывает ресурсы этого проекта. Таблицы абонентов Таблица «Абоненты» Представляет собой запрос к таблице БД Terrasoft. Текст запроса: Select ID_int, OfficialAccountName as 'Название', Communication1 as 'Средство связи 1', Communication2 as 'Средство связи 2', Communication3 as 'Средство связи 3', Communication4 as 'Средство связи 4', Communication5 as 'Средство связи 5', IsActual as 'Дозвон' from tbl_Account where ID in (select AccountID from tbl_AccountInGroup as AinG where 'Обзвон' = (SELECT TOP 1 Name from tbl_AccountGroup where ID = AinG.GroupID)) and IsActual !=1 Поля «Средство связи 1» - «Средство связи 5» объявлены как «Телефон» Поле «ID_int» объявлено как идентификатор Поля «Название» и «Дозвон» объявлены как информационные поля Таблица «Абоненты для обзвона» Представляет собой запрос к таблице БД Terrasoft. Текст запроса: Select ID_int, OfficialAccountName as 'Название', Communication1 as 'Средство связи 1', Communication2 as 'Средство связи 2', Communication3 as 'Средство связи 3', Communication4 as 'Средство связи 4', Communication5 as 'Средство связи 5', IsActual as 'Дозвон' from tbl_Account where ID in (select AccountID from tbl_AccountInGroup as AinG where 'Обзвон' = (SELECT TOP 1 Name from tbl_AccountGroup where ID = AinG.GroupID)) and IsActual = 1 Поля «Средство связи 1» - «Средство связи 5» объявлены как «Телефон» Поле «ID_int» объявлено как идентификатор Страница 14 Поля «Название» и «Дозвон» объявлены как информационные поля Сценарии Сценарий «Дозвон» Сценарий «Дозвон» используется для набора номеров в задачах проекта. Логика сценария: Начало Да Длина номера больше 6 цифр? Первая цифра 7? Замена 7 на 8 Добавление цифры 9 Набор номера Конец Сценарий «Актуализация номеров» Сценарий «Актуализация номеров» представляет собой IVR сценарий и используется в задаче «Актуализация номеров» для выставления флага «Дозвон» при удачной попытке дозвона. В случае удачной попытке дозвона, выполняется SQL скрипт на сервере БД Terrasoft. Текст скрипта: Update tbl_Account set IsActual=1 where ID_int = @ID Переменная @ID вычисляется чуть раньше в данном сценарии и представляет собой идентификатор текущей записи таблицы абонентов. Страница 15 Задачи Актуализация номеров Параметры задачи описаны в таблице: Параметры Направление Тип Сценарий IVR Расписание Остановить задачу Ресурсы Внешние линии Абоненты Таблица абонентов Метод работы с таблицей Дополнительно Служебный сценарий набора номеров абонента Исходящая IVR Актуализация номеров Пн-Пт, 9:00-18:00 После выполнения всех абонентов 13001sip-13004sip Абоненты Загрузка в память и синхронизация Дозвон Прогрессивный обзвон ТС Параметры задачи описаны в таблице: Параметры Направление Тип Расписание Остановить задачу Ресурсы Внешние линии Исходящая Прогрессивный обзвон Пн-Пт, 8:30-12:00, 13:00-17:30 Никогда не останавливать задачу 13021sip-13023sip Страница 16 Операторы Абоненты Таблица абонентов Метод работы с таблицей Лояльность к абонентам Дополнительно Служебный сценарий набора номеров абонента actualizer01, actualizer02, actualizer03 Абоненты для обзвона Загрузка в память и синхронизация Средняя лояльность Дозвон Интеграция с CRM Terrasoft Интеграция клиентской библиотеки телефонии Oktell Для входа в АТС Oktell и колл-центр Oktell из клиентского приложения Terrasoft CRM используется интеграционная библиотека Oktell.ClientComLib.dll Чтобы зарегистрировать данную библиотеку на рабочей станции с Terrasoft CRM, на данную рабочую станцию необходимо установить клиентскую часть Oktell и выполнить следующую команду от имени администратора C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe "C:\Program Files\Oktell\Client\Oktell.ClientComLib.dll" После этого в CRM Terrasoft появится возможность осуществить вход в АТС и колл-центр Таблицы абонентов Для минимизации рутинных операций по импорту и экспорту таблиц абонентов из CRM Terrasoft, выполнена следующая интеграция – таблицы абонентов представляют собой прямые запросы в базу данных Terrasoft. Запросы осуществляются посредством интерфейса программирования приложений ActiveX Data Objects (ADO). Стока подключения для данной реализации: Server=10.9.49.222;Database=TS;User Id=Supervisor;Password=; На сервере Oktell каждые 5 минут выполняется служебный сценарий, который нужен для того чтобы определить была ли обновлена папка с абонентами для обзвона и если да, то выполнить перезапуск задач проекта. Логика сценария представляет собой следующую схему: Страница 17 Запрос состояния задачи «Актуализация» Начало Запущена? Да Остановка задачи «Актуализация» Нет Запрос флага обновления Да Обновление было? Очиститка статистику задачи «Актуализация» Синхронизация таблицы абонентов «Актуализация» Запрос состояния задачи «Обзвон» Запущена? Запуск задачи «Актуализация» Да Остановка задачи «Обзвон» Нет Очиститка статистику задачи «Обзвон» Синхронизация таблицы абонентов «Обзвон» Запуск задачи «Обзвон» Нет Сброс флага обновления Конец Вычисление ответственного менеджера Для вычисления ответственного менеджера реализованы 2 функции в базе данных Terrasoft dbo.NormNumber используется чтобы оставить в номере только цифры USE [TS] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[NormNumber](@OrgNumber varchar(50)) RETURNS varchar(50) AS BEGIN DECLARE @NormNumber varchar(50), @Count int, @c int, @l int Страница 18 Set @NormNumber = '' Set @Count = 0 Set @l = Len(@OrgNumber) While @Count <= @l Begin set @c = ascii(substring(@OrgNumber, @Count, 1)) if @c between 48 and 57 Set @NormNumber = @NormNumber + CHAR(@c) Set @Count = @Count + 1 End RETURN(@NormNumber) END dbo.GetManagerNumber1 используется для получения внутреннего номера Oktell и мобильного номера ответственного за клиента менеджера. Условия: номер Oktell менеджера должен быть прописан в поле Communication5 таблицы tbl_Contact, мобильный номер должен быть прописан в поле Communication2 таблицы tbl_Contact. USE [TS] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[GetManagerNumber1] (@CallerID varchar(20)) RETURNS @Result table ( [OktNum] varchar(3), [MobNum] varchar(20) ) AS BEGIN IF(SELECT Count(*) FROM tbl_Contact where Right(dbo.NormNumber(Communication1), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(Communication2), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(Communication3), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(Communication4), 6) like Right(@CallerID, 6))>0 Begin Insert into @Result SELECT Communication5 as OktNum,Communication2 as MobNum FROM tbl_Contact where ID in ( SELECT OwnerID FROM tbl_Contact where Right(dbo.NormNumber(Communication1), 6) like Right(@CallerID, 6) Страница 19 or or or RETURN Right(dbo.NormNumber(Communication2), 6) like Right(@CallerID, 6) Right(dbo.NormNumber(Communication3), 6) like Right(@CallerID, 6) Right(dbo.NormNumber(Communication4), 6) like Right(@CallerID, 6)) End IF (SELECT Count(*) FROM tbl_Contact INNER JOIN tbl_Account ON tbl_Contact.ID = tbl_Account.OwnerID where Right(dbo.NormNumber(tbl_Account.Communication1), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(tbl_Account.Communication2), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(tbl_Account.Communication3), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(tbl_Account.Communication4), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(tbl_Account.Communication5), 6) like Right(@CallerID, 6))>0 Begin Insert into @Result SELECT Communication5 as OktNum,Communication2 as MobNum FROM tbl_Contact where ID in ( SELECT tbl_Account.OwnerID FROM tbl_Contact INNER JOIN tbl_Account ON tbl_Contact.ID = tbl_Account.OwnerID where Right(dbo.NormNumber(tbl_Account.Communication1), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(tbl_Account.Communication2), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(tbl_Account.Communication3), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(tbl_Account.Communication4), 6) like Right(@CallerID, 6) or Right(dbo.NormNumber(tbl_Account.Communication5), 6) like Right(@CallerID, 6)) RETURN End Insert into @Result Values ('','') RETURN END Страница 20 Отказоустойчивость и резервное копирование системы В данном разделе документации представлены рекомендации по отказоустойчивости программной АТС Oktell. Поскольку сервис телефонии, как правило, является критичным для бизнеса, необходимо озаботиться сохранностью данных и минимизацией времени восстановления после сбоя. Сервис Oktell ежедневно в 2:00 выполняет резервное копирование всех своих баз данных и сценариев в папку C:\Program Files\oktell\Server\Backup. Кроме того выполняется резервное копирование файлов при обновлении версии в папку C:\Program Files\oktell\Server\SavedOldVersions. Но хранение резервных копий и данных на одном и том же жёстком диске не очень хорошая практика, поскольку при выходе из строя жёсткого диска теряются и полезные данные, и архивные копии. Поэтому предлагается сделать регулярную задачу в планировщике Windows, которая будет копировать папку C:\Program Files\oktell\Server\Backup на сетевой диск и назначить эту задачу на 4:00. Для минимизации времени восстановления после сбоя предлагается также делать еженедельный снимок машины, на которой установлен Oktell, например, с помощью Acronis True Image. Страница 21