Сценарии IVR

Описание, Компиляция и Активация сценариев IVR

Описание

Основным инструментом обработки вызова в «Infinity Call-центр X» является сценарий. В терминах «Infinity Call-центр X» сценарий это специальным образом сформулированный алгоритм (программный код) по которому происходит обработка вызова. Создание и редактирование сценариев происходит через специальный редактор сценариев. Сценарий предназначен для построения голосовых меню (IVR), интеллектуальной обработки и маршрутизации вызовов, а так же для решения ряда служебных задач.

Аббревиатура IVR расшифровывается на английском языке как Interactive Voice Response. Дословно это можно перевести как интерактивный голосовой автоответчик. Основная задача системы предварительно записанных голосовых сообщений это функция маршрутизации звонков внутри call-центра на основе данных о звонке и действий абонента.

Помимо базового функционала IVR – воспроизведения ряда заранее записанных фраз и обработки нажатий абонентом кнопок на телефоне, – сценарии в «Infinity» позволяют:

- выполнить запрос в базу данных и получить данные;

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

- синтезировать текст в голос и воспроизвести результат;

- переключить вызов на любой номер телефона;

- записать голосовое сообщение;

- принять заявку на встречный звонок;

- выполнить любое количество математических операций, операций со строками и операций сравнений.

При помощи сценариев можно реализовать любую произвольную логику обработки вызовов. Кроме обработки входящих и исходящих вызовов, сценарии могут быть использованы при совершении внутренних звонков, при переключении вызова на служебный номер, или при завершении вызова. На базе сценариев может быть построено не только голосовое приветствие call-центра, но и системы самообслуживания клиентов (предоставление информации без участия оператора), и голосовые порталы

Голосовой портал – это высоко технологичный инструмент, состоящий из комплекса интерактивных голосовых сервисов, ориентированных на потребителей товаров и услуг

Передовой технологией в «Infinity Call-центр X» является возможность синтеза речи в сочетании с ее распознаванием. Это значит, что любой абонент – мужчина, женщина или ребенок могут осуществлять навигацию по голосовому меню просто голосом. В сценарии встроены модули, распознающие произнесенный абонентом текст. Это значит, что можно в дополнении к традиционным тональным сигналам (DTMF) распознавать запросы по имени, отчеству и фамилии, названию отдела, по комбинациям цифр

Озвучивание сценариев важная составляющая успеха call-центра. Правильно подобранное сочетание голоса диктора, используемой лексики и музыкального сопровождения создает благоприятное впечатление от звонка в организацию

Любой вызов, поступивший со стороны телефонной сети общего пользования (ТФОП, IP-провайдер, АТС, IP-АТС) попадает в сценарий, обозначенный как главный сценарий call-центра

Редактор Сценариев

В создании и разработке сценариев есть очень приятная особенность – вам, возможно, никогда не придется писать ни единой строчки программного кода, а все программирование сводится к визуальному построению блок-схемы обработки вызова.

Редактор сценариев это инструмент визуального программирования при помощи которого создаются сценарии обработки вызова. Для создания сценария доступны три десятка специальных компонентов за счет использования которых и реализуется логика сценария.

Редактор сценариев доступен с рабочего места администратора «Infinity Call-центр X». Управление сценариями производится из раздела "Администрирование/Сценарии" рабочего места администратора

Администрирование сценариев предназначено для осуществления основных операций со сценариями:

-создавать, редактировать, удалять;

-переименовывать, сортировать и иерархически упорядочить;

-экспортировать и импортировать;

-компилировать;

-активировать и деактивировать;

-назначить главным.

Для всех сценариев поддерживается их версионность – можно создавать любое количество версий сценария, что значительно упрощает процедуру редактирования сценария и сохранения истории изменений. Количество сценариев в системе не ограничено. Любой сценарий может быть вызван из другого сценария, а количество вложенных сценариев не ограниченно.

Все сценарии перед их использованием должны быть скомпилированы и активированы. Для приема всех входящих звонков один из активных сценариев должен быть Главным. Любой входящий звонок начинает обрабатываться в Главном сценарии, именно Главный сценарий является единой точкой входа для всех входящих звонков.

При редактировании каждого сценария доступны такие функции как:

-сохранить сценарий;

-очистить сценарий;

-восстановить последние изменения;

-изменить масштаб;

-и переключиться из режима редактирования в режим обзора сценария.

Управление основными функциями редактора сценариев сгруппировано в левой верхней части меню:

В меню "Вид" редактора сценариев настраивается внешний вид соединительных линий, свойства компонентов и стиль отображения компонентов

Рабочая область редактора сценариев

Сценарий – это алгоритм, состоящий из компонентов и переходов между ними. Компонент сценария это действие, выполняемое call-центром. Каждый компонент имеет один вход, собственный набор свойств, и несколько выходов, соответствующих разным результатам выполнения действия. Последовательности компонентов (действий) и переходов между ними и образуют сценарий call-центра.

КОМПОНЕНТЫ

Все компоненты объединяются в три группы:

Основные – набор компонентов, обеспечивающих математическую логику

IVR– набор компонентов обеспечивающих управление вызовом и работу со звуковыми файлами

Дополнительные– набор компонентов, обеспечивающих интеграцию сценария с другим функционалом call-центра и сторонними источниками данных

Для того, чтобы добавить компонент в сценарий, необходимо выбрать его в меню, кликнуть на компонент и следом на рабочую область сценария. Если компонент выбран, а вы передумали его добавлять, то снять выделение можно нажав на кнопку со стрелкой в левой части меню

Каждый компонент (за исключением компонентов "старт" и "стоп") имеет вход, один или несколько выходов и собственный набор свойств. В свойствах определяется специфика выполнения действия, выполняемого компонентом. Один и тот же компонент может быть несколько раз использован в сценарии с разным набором свойств. Каждый компонент в сценарии имеет уникальное свойство "Имя".

Имя компонента в сценарии может быть любым, но не должно совпадать с именами других компонентов.

Каждый сценарий начинается компонентом "Старт" и заканчивается компонентом "Стоп".

Каждый компонент в отдельности описан в соответствующем разделе.

КОМПИЛЯЦИЯ И АКТИВАЦИЯ

Сценарий представляет собой исходный программный код на языке C++. Перед его использование в системе он должен быть преобразован в машинные коды. Этот процесс называется компиляцией. В момент компиляции «Infinity Call-центр X» проверяет сценарий на наличие ошибок и в случае их отсутствия преобразует сценарий в машинные коды

Для компиляции сценария его необходимо выбрать в списке сценариев "Администрирование" / "Сценарии" и нажать на кнопку "Компилировать" в панели инструментов. Если в процессе проверки сценария в нем были обнаружены ошибки, то компиляция сценария не произойдет и будет выведено сообщение об ошибке. Для успешной компиляции необходимо исправить ошибки и отправить сценарий на компиляцию заново. Чтобы сценарий прошедший компиляцию стал готов к использованию в системе его надо активировать.

Активация сценария это простая процедура для выполнения которой достаточно выбрать сценарий из списка и нажать кнопку "Активировать" в панели инструментов. Сценарий прошедший процедуру компиляции и активированный готов к использованию в системе.

Стандартное голосовое меню (сценарий IVR)

Рассмотрим Стандартный сценарий голосового меню.

После того как вызов попадает в сценарий, абонент слышит приветствие: "Ведите добавочный номер телефона или дождитесь ответа оператора". Если же внутренний номер был введен, система пытается переключить вызов на указанный внутренний номер и при успешном переключении сценарий завершает свою работу. Если же внутренний номер введен неправильно, занят или не отвечает система переключает вызов на группу операторов

На рисунке изображен общий вид сценария IVR стандартного голосового приветствия.

В сценарии используются компоненты редактора сценариев IVR:

- Основные / Старт [1]

- Основные / Поднять трубку [2]

- Основные / Объявить переменную [3],[4]

- IVR / Проиграть файл [5], [13], [14]

- IVR / Очередь [6]

- IVR / Ввод данных [7]

- IVR / Положить трубку [8] , [15]

- Основные / Стоп [9], [16]

- IVR / Переключить [10]

- Основные / Присвоить значение [11],[12]

Рассмотрим сценарий детально

Компоненты Объявить переменную [3] и [4] декларируют переменные, которые мы будем использовать в сценарии и определяют им начальные значения. В выпадающем списке слева указан тип переменной "Строка", а справа указывается ее имя – Номер, а поле справа активирует редактор выражений, который позволяет задать значение объявленной переменной.

Переменная Номер будет использоваться для получения и обработки вводимых абонентом цифр. Переменная Пусто используется для сброса значения введенного изначально добавочного номера, при повторном наборе. Обеим переменным определяем начальное значение пустая строка.

Следующий компонент - Проиграть файл

Первая строка компонента указывает на его название

Примечание 1: Название компонента должно быть уникальным для каждого компонента в пределах всего тела сценария

Вторая строка свойства определяет файл, который будет проигрываться. Щелчком мыши вызываем редактор выражений, в котором указываем конкретный звуковой файл. В данном случае файл будет проигрываться из локальной медиа-библиотеки сценария. У каждого сценария IVR существует собственная медиа-библиотека звуковых файлов, попасть в которую можно начав выбирать файл в поле "Значение".

Третий параметр ("Пауза") определяет значение паузы в секундах, которое система будет ждать после окончания проигрывания звукового файла. В нашем случае выставлено значение 0. Это означает, что по окончанию проигрывания звукового файла "Наберите номер абонента в тоновом режиме или дождитесь ответа оператора" система не будет дополнительно, для того, чтобы дать абоненту время нажать какую либо клавишу на телефоне.

Примечание 2: стоит учитывать, что в некоторых случаях стоит осторожно указывать как нулевое значение паузы, так и слишком большое значение величины паузы. В первом случае, абонент может не успеть среагировать на приглашение нажатия кнопки, а слишком большая пауза будет вызывать излишние подозрения в работоспособности сервиса.

Параметр "стоп по кнопке" определяет будет ли воспроизведение голосового файла сразу же прервано, если абонент нажал какую либо кнопку на телефоне. Нажатие абонентом кнопки на телефоне эквивалентно передачу одиночного DTMF символа в систему. В нашем случае мы ждем от абонента ввода трехзначного номера телефона, поэтому, чтобы не вводить абонента в сомнение, мы останавливаем воспроизведение файла "Стоп по кнопке", с тем, чтобы получить от него оставшиеся две цифры ввода. Последнее поле свойства компонента определяет переменную в которую будет записано значение переданного DTMF сигнала (нажатой клиентом кнопки). Для обработки действий клиента мы используем переменную Номер, ее и указываем в свойствах компонента: "Редактор выражений / Переменная: Номер".

В случае если абонент повесил трубку или произошла ошибка (к примеру указанный звуковой файл не найден на сервере, мы завершаем выполнение сценария) В случае если абонент дослушал приветствие переводим его на группу операторов в компоненте Очередь [6].

Если же абонент нажал любую кнопку в процессе проигрывания файла [5] оно прерывается. Компонент Проиграть файл воспринимает всего один нажатый символ. Для ввода двух и более символов используется другой компонент IVR Ввод данных [7]. Вместе с тем, компонент Ввод данных не предназначен для воспроизведения звукового файла. Для совмещения ввода строки длинной 2 и более символов с голосовым сопровождением используется комбинация двух компонентов "Проиграть файл" и "Ввод данных", расположенных следом друг за другом.

Примечание 3: DTMF сигналы, полученные от абонента, трансформируются системой в строковую переменную. Несколько полученных подряд DTMF сигналов называются DTFM последовательностью. DTMF сигнал и DTMF последовательность могут состоять только из символов {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *, #}, нажатие других кнопок абонентом в системой не воспринимается

В компоненте Ввод данных задаются условия при выполнении хотя бы одного из которых ввод данных считается завершенным и указывается переменная в которую будет сохранена полученная DTMF последовательность. Задаем, что общая длинна переменной при которой ввод считается завершенным это три символа (Длина: 3), общее время отведенное на ввод данных 7 секунд (Таймаут: 7 сек.). Полученная от абонента последовательность сохраняется в строковую переменную Номер.

Примечание 4: Вся полученная компонентом DTMF последовательность добавляется к имеющемуся значению переменной. Например, перед входом в компонент "Ввод данных" переменная Действие имела строковое значение равное "1". От абонента компонентом "Ввод данных" была получена DTMF последовательность вида "23". Общая длина строки переменной Действие становится равной трем символам и ввод данных считается завершенным, а переменная Действие получит значение равное "123".

Примечание 5: Ввод данных прерывается когда общая длина строки переменной в которую сохраняются данные будет равна заданной длине строки. Например, если бы перед входом в компонент "Ввод данных" переменная Номер имела строковое значение равное "111", то ввод данных будет изначально считаться выполненным, поскольку длина строки Действие уже равна или более трех символов

Выход из компонента "Ввод данных" предусматривает три варианта:

- "Галочка" [OK] – ввод данных в отведенное время завершен успешно и в переменной находится строка заданной длины;

- "Песочные часы" [Таймаут] – отведенное время для ввода данных закончилось, строка получена не полностью и не нажата клавиша с символом прерывания;

- "Кирпич" [Положили трубку] – во время ожидания системой ввода данных абонент положил трубку.

Очевидно, что в случае, если абонентом была положена трубка, сценарий IVR тоже должен завершить работу. Поэтому стрелку из выхода [Положили трубку] ведет на компонент Положили трубку и затем Стоп.

Если за отведенное время абонент не ввел номер или ввел его не полностью, то вызов направляется на компонент Очередь [6]

При успешном вводе номера переход из компонента идет в компонент Переключить [10].

Компонент Переключить отвечает за переключение телефонного вызова на указанный телефонный номер. Телефонный номер может быть любым внутренним, групповым, внешним городским или мобильным номером. Компонент имеет всего три параметра. Первый – это уникальное название компонента в пределах данного сценария "На внутренний".

Второй параметр это "Номер" – телефонный номер на который будет производится переключение вызова. В данном случае мы используем не конкретный заранее заданный телефонный номер, а переменную Номер

Последний основной параметр "Таймаут" – время в секундах, в течении которого мы будем ожидать успешного переключения.

Примечание 4. В этом сценарии не проводится проверка корректности номера для переключения Если логика используемой АТС предполагает возможность осуществления вызовов на внешние короткие номера, перед компонентом "Переключить" имеет смысл проверить совпадение введенного номера с одним из внешних коротких номеров и в целях исключения злоупотреблений исключить возможность переключения на внешний городской короткий номер.

По результатам попытки переключения компонентом "Переключить" возможны 6 различных вариантов:

- "Галочка" [ОК] – успешное переключение за заданное время осуществлено. Если переключение успешное, то в дальнейшем выполнении сценария IVR необходимости нет. Переводим на компонент Стоп.

- "Красная трубка" [Занято] – выход из компонента, если вызываемый номер занят;

- "Серая трубка" [Нет ответа] – выход из компонента, если вызываемый номер не отвечает в течении заданного параметром "Таймаут" времени;

- "Крест" [Номер не существует] – выход из компонента, если набранный номер не существует, например, попытка переключить на внутренний номер не описанный в номерном плане;

- "Крестик" [Ошибка] – переключение не удалось по причине ошибки, например, во время соединения произошел обрыв связи;

- "Кирпич" [Положена трубка] – если в момент переключения вызова абонент положил трубку не дождавшись ответа вызываемой стороны, то сработает этот вариант выхода из компонента, в дальнейшем выполнении сценария IVR необходимости нет. Переводим на компонент Стоп или Положить трубку.

Примечание 5. Если события по результату переключения не заданы, то сценарий после выполнения компонента "Переключить" завершится.

Примечание 6. Если необходимо дополнительным образом обработать случаи успешного или не успешного переключения, можно по выходу перед переходом на компонентом "Стоп" выполнить и другие действия. Например, выполнить запрос в базу данных или отправить уведомление.

Таким образом при успешном переводе вызова мы завершаем работу сценария IVR. Обработаем случаи неудачного переключения. С точки зрения абонента возможны два разных варианта – номер занят или номер не отвечает. В обоих случаях проигрываем соответствующие звуковые файлы "Номер занят, введите другой добавочный номер или дождитесь ответа оператора" и "Введенный вами номер не существует, ваш звонок будет переведен на операторов".

После первого [11] идет компонент Присвоить значение [13], который обнуляет введенные ранее цифры записанные в переменную Номер. И возвращает абонента к компоненте Ввод данных [7].

После второго [12] также идет компонент Присвоить значение [14], который обнуляет введенные ранее цифры записанные в переменную Номер и переводит абонента к компоненте Очередь [6].

Пример настройки сценария IVR с синтезом и распознаванием речи на базе Yandex Speechkit cloud

Регистрируемся в яндекс паспорте: https://passport.yandex.ru/registration

После регистрации переходим по ссылке: https://cloud.yandex.ru

Далее заполняем все поля для создания платежного аккаунта и указываем способ оплаты(личный либо бизнес аккаунт):

Активируем аккаунт:

После активации переходим в меню «Управление доступом»

Нажимаем кнопку «Настроить роли»

Назначаем роли admin для каталога и облака

Выбираем каталог default

Нажимаем на адресную строку и выделяем и копируем все после (это id folder , которую необходимо будет занести в программу Call-Center Inifnity CX в параметры системы) https://console.cloud.yandex.ru/folders/xxxxxxxxxxxx

Далее переходим по ссылке: https://cloud.yandex.ru/docs/iam/concepts/authorization/oauth-token Нажимаем на гиперссылку.

Нажимаем разрешить и получаем OAuth-токен. Копируем его и заносим в параметры системы программы Call-Center Infinity CX. После этого перезагружаем сервер Infinity X через утилиту Infinity Guardian , либо перезаходим в параметры системы.

После перезапуска сервера или переоткрытия инструмента «Параметры системы» автоматически заполнится поле IAM-токен. На этом настройка «яндекс облака» для работы синтеза и распознавания в программе Infinity завершена

Пример настройки простейшего сценария для Yandex

Для настройки сценария нам потребуются компоненты «Синтез речи (Yandex)», а так же компонент «Распознать текст (Yandex)». Наш сценарий будет проговаривать абоненту нужный текст, который можно задать вручную или можно взять из переменной (выделено красным).

На рисунке Вы можете увидеть, что наш сценарий будет использовать всего 8 основных компонентов, это 2 строковые переменные, куда будет сохранен распознанный текст и компоненты: «Синтез речи (Yandex)» (помечены номерами 1, 3, 4, 6), и «Распознать текст (Yandex)» (помечены номерами 2, 5)

Схема работы представленного сценария:

В Компоненте «1» мы задаем нужный нам текст, в нашем случае это предложение назвать свою должность. Используемый голос у нас будет женским (в поле Голос, выбрано Jane). Остальные параметры для нас не критичны, поэтому оставляем по дефолту. Далее, по окончанию проигрыша указанного нами текста по веткам «Ок» и «Кнопка» направляем на следующий компонент, отмеченный цифрой «2». Данный компонент у нас будет распознавать текст, который будет проговаривать абонент, и записывать его в переменную «Answer1», время на распознавание текста мы отведем в 10 секунд (отмечено зеленым). В компоненте «3» мы проговариваем распознанный текст из переменной «Answer1», и по окончанию переходим к компоненту «4», где синтез речи предложит абоненту назвать свои контактные данные и с помощью компонента «5» запишет их в переменную «Answer2», которую затем воспроизведет компонент под номером «6» и завершит выполнение сценария

Перечень доступных голосов для Yandex Speechkit cloud

Перечень доступных голосов для Yandex Speechkit cloud на 20.04.2017 levitan ermilov zahar silaerkan oksana jane mozhara kolya kostya nastya sasha nick erkanyavas zhenya tanya ermilov samokhvalov abramova voicesearch alyss ермилла робот захар dude zombie smoky аса

Качество синтеза можно протестировать по ссылке https://webasr.yandex.net/ttsdemo.html Для управления скоростью произнесения синтезируемой речи в параметрах IVR нужно указывать не просто название голоса, а строчку "голос&speed=0.5", например "ermilov&speed=0.5"

Оценка работы оператора клиентом после звонка

Данный функционал позволяет оценивать работу оператора абонентом в конце разговора. Абоненту предлагают оценить качество работы операторов по 9-бальной шкале.

Оцениваются параметры:

- общая удовлетворенность

- скорость реакции на вопрос

- взаимодействие с кампанией

Для подключения данного функционала достаточно в основном сценарии в элементе "Очередь" или "Кампания", подключить сценарий "Оценки качества обслуживания".

После этого по завершению разговора с оператором будут заданы базовые вопросы, и по нажатию абонентом кнопки от 0 до 9 будет проставлена оценка соответствующему оператору.

Просмотреть выставленные оценки можно в разделе Отчёты - Статистика – Звонки – Дополнительные отчёты: «Оценка обслуживания».

Как заменить звуковые файлы в существующем сценарии IVR?

Заходим в Инструменты – Управление – Сценарии

Копируете текущую версию сценария(помечена молнией)

Нажимаете кнопку «Дизайнер»

Все звуковые файлы лежат в компонентах IVR Проиграть файл

Находите звуковой файл , который необходимо заменить и выбираете его

После сделаных изменений в сценарии нажимаете кнопку «Сохранить»

Переходите обратно на вкладку сценарии и нажимаете на измененном сценарии кнопку «компилировать» - далее нажимаете кнопку «Активировать»

И назначаете ваш новый сценарий IVR «Текущей версией»

Настройка рабочего времени в сценарии IVR

Существует два разных способа настроить изменение IVR-меню в зависимости от времени:

Настройка рабочего времени в сценарии IVR используя функцию рабочее время

Настройка рабочего времени в сценарии IVR через компонент "Условие"

Пример настройки сценария IVR в компании РРТ

Реализация механизма прямых вызовов чрезвычайно проста, но полезно его привести отдельно. Реализуется он за счет предварительной обработки вызова в сценарии.

Для каждого входящего вызова сразу после получения вызова в главный сценарий call-центра анализируется набранный абонентом номер. Если набранный номер совпадает с одним из закрепленных за сотрудником городских номеров, то вызов адресуется непосредственно на телефон этого сотрудника. В том случае, если нужный сотрудник ответил на вызов, то предварительная обработка вызова считается завершенной. Если же сотрудника нет на месте, то вызов переключается согласно следующему компоненту IVR Переключить

На рисунке приведен пример сценария обработки прямых вызовов. Если вызов поступил на набранный номер 50015001, то он будет переведен на внутренний 102, для набранного номера 5005002 вызов пойдет на номер 108. Если соответствие не задано, или номера 102 и 108 не ответили, то обработка вызова пойдет по общей схеме дальше.

Сценарий обработки прямых вызовов вызывается в главном сценарии сразу после компонента "Старт".

Пример настройки сценария IVR

Описание сценария IVR

Среди реализованных проектов есть проект call-центра для компании "Термофест", которая занимается отопительным оборудованием (печи, камины, котлы) и состоит из десяти офисов продаж в двух городах, объединенных единым call-центром.

В основе call-центра "Термофест" заложено интеллектуальное ядро платформы «Infinity Call-центр X», а в качестве телефонии выбор был сделан в пользу «Infinity IP АТС», которые заменили устаревшую аналоговую офисную телефонную станцию Panasonic АТС. Работы по монтажу, установке-настройке и запуску в эксплуатацию заняли один рабочий день. Это была образцово-показательная установка, в столь сжатые сроки удалось уложиться благодаря высокому уровню квалификации IT-специалистов компании "Термофест", которые при совместной разработке проекта полностью подготовили IT-инфраструктуру предприятия к его старту. Такой основательный подход компании "Термофест" к построению call-центра вызвал понимание и уважение. «Infinity Call-центр X» обеспечил телефонную связь в центральном офисе сети "Термофест", кроме этого программный комплекс объединил в единую внутреннюю телефонную сеть центральный офис и три магазина, расположенных в г. Казань.

Программные рабочие места операторов вкупе со встроенным справочником клиентов позволили обеспечить персонализированное обслуживание VIP-клиентов и партнеров компании

Персонал компании "Термофест" насчитывает более ста человек, это профессиональные сотрудники, специалисты своего дела".."Термофест" – один из ведущих операторов на рынке отопительной техники Республики Татарстан, с развитой сетью из 7 фирменных магазинов, объединенных центральным офисом, с собственным авторизованным сервисным центром. "Термофест" предлагает широчайший ассортимент отопительной техники: газовых котлов, бойлеров, газовых колонок, радиаторов, каминов, банных печей, отопительных печей, каменок и комплектующих к системам отопления, водоснабжения, канализации, кондиционирования

Принципиальная схема организации связи "Термофест" приведена на рисунке

Телефонная сеть общего пользования заведена в call-центр посредством пяти аналоговых линий, с использованием платы компьютерной телефонии "Ольха".

Call-центр подключен к компьютерной локальной сети, которая объединена посредством VPN соединений с локальными сетями удаленных офисов. На всех рабочих местах используются программные телефоны (софтфоны) за исключением факс-аппарата и телефона главного бухгалтера, которые заведены через LinkSys PAP2T.

При звонке на телефонные номера компании вы слышите голосовое приветствие: "Доброе утро, вы позвонили в компанию Термофест" ("добрый день...", "добрый вечер...", "доброй ночи..."). Выглядит очень просто и незатейливо. Вместе с тем, это голосовое приветствие реализует определенный функционал, который позволяет оптимально образом обработать звонок.

В «Infinity Call-центр X» созданы учетные записи операторов, связанные с внутренними телефонными номерами. Интеграция между сценариями call-центра и внешней CRM-системой позволила реализовать специализированное обслуживание для клиентов категории VIP. Кроме этого, если при обработке вызова CRM-система смогла идентифицировать клиента по его номеру телефона, то одновременно с получением вызова оператор автоматически получал и заполненную карточку клиента. Это позволяло оператору не только знать о личности (фирме) клиента, но и обращаться к звонящему по имени.

ЧТО СКРЫВАЕТСЯ ЗА ПРИВЕТСТВИЕМ:

Давайте разберем по пунктам последовательность действий, выполняемых call-центром при приеме вызова.

1. определяем фундаментальные характеристики вызова, такие как: набранный номер (б-номер) и номер телефона клиента (а-номер), время поступления вызова (время);

2. набранный б-номер используется для определения города, в магазин которого поступил вызов (в каждом городе рекламируется свой номер телефона);

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

4. call-центр формирует и осуществляет запрос во внешнюю (для call-центра) базу данных клиентов. В базу данных передается а-номер, а в качестве результата формируется следующий ответ: наименование клиента, маркетинговая категорияклиента, информация о персональномменеджере (рабочий телефон менеджера, сотовый телефон).

5. если маркетинговая категория клиента «VIP», соответственно, у него определен персональный менеджери вызов автоматически переводится непосредственно на персонального менеджера.

Если рабочий телефон персонального менеджера занят или недоступен, вызов переводится на его сотовый телефон, если недоступен и сотовый, вызов переходит на секретаря, таким образом обеспечивается приоритетное обслуживание всех VIP клиентов. Они чувствуют, что о них заботятся им не приходиться ждать, не приходиться каждый раз представляться каждому сотруднику и объяснять цель звонка.

6. Также в зависимости от времени поступления вызова call-центр озвучивает клиенту соответствующее приветствие – доброе утро, день, вечер, ночь.

7. формируется информационная карточка клиента, содержащая сведения о: а-номере, б-номере, городе, наименовании клиента, категории клиента, персональном менеджере.

8. вызов переключается на групповой номер операторов. Оператор в диалоге с клиентом выясняет цель и суть обращения, фиксирует это в программе ведения клиентов и, при необходимости, переключает вызов на нужного сотрудника. При переводе вызова оператор уведомляет сотрудника о том, кто звонит и с какой целью.

Кстати, там же реализована недокументированная возможность – если в момент произнесения приветствия начать набирать внутренний номер, произойдет переключение вызова именно на него.

Реализация сценария IVR

Сценарий голосового приветствия в данной реализации представляет собой компиляцию двух сценариев и запроса во внешнюю базу данных клиентов для формирования карточки клиента. Рассмотрим в этом разделе составные элементы сценария и их использование.

Рассмотрим схему сценария подробнее

Компоненты "Запустить_сценарий1" и "Запустить_сценарий2" вызывают на выполнение сценарии "Получение данных" и "Приветствие", соответственно. После выполнения первого сценария мы получаем данные об абоненте, которые можем использовать в текущем контексте и кроме того, имеем заполненную информационную карточку вызова (информация о звонке).

После мы проверяем (в компоненте "Условие") известен ли внутренний номер персонального менеджера

Если графа с номером телефона пуста (cManagerPhone =="") , значит персональный менеджер для этого клиента не назначен и обработка вызова должна пойти по общей схеме - зеленая ветка. Если же графа с номером телефона менеджера заполнена , то мы переключаем звонок на стационарный или сотовый телефон менеджера, (красная ветка):

Если в обоих случаях ответ получен не был, то вызов переводится на секретаря. Следует помнить, что в этом случае на секретаря поступит вызов с уже заполненной информационной карточкой вызова (информация о звонке) и секретарь будет знать, что за клиент звонит и для какого менеджера надо будет оставить сообщение. Общий вид панели инструментов "Информация о звонке" приведен на рисунке ниже

В общем виде карточка "Информация о звонке" может содержать любые данные, которые занесены в нее компонентом "информация о звонке" или настроены в разделе "Администрирование" / "информация о звонке".

Подробнее о приветствии в сценарии IVR

Реализация различных голосовых приветствий в зависимости от времени суток – - это часто встречающаяся задача, (итак ясно, то же самое) Оформим этот фрагмент в качестве отдельного дочернего сценария, чтобы иметь возможность использовать в других IVR.

Обратите внимание, что в конце сценария расположен компонент "Возврат", что обеспечивает по завершении сценария передачу управления в родительский сценарий.

Для создания этого сценария нам потребуются заранее записанные звуковые файлы:

- "Здравствуйте", с названием "Hello.wav";

- "Доброе утро!", с названием "HelloM.wav";

- "Добрый день!", с названием "HelloD.wav";

- "Добрый вечер!", с названием "HelloE.wav";

- "Доброй ночи!", с названием "HelloN.wav".

Кроме того, надо будет определить те временные интервалы , когда необходимо произносить выбранные приветствия. Мы определили для себя, что утро у нас начинается в 8.00, день в 11.00, вечер в 17.00, а в 20.00 начинается ночь, период времени до 8.00 утра тоже считается ночью.

Общий вид сценария

Компоненты, которые использовались при создании этого сценария:

- Основные / "Объявить переменную";

- Основные / "Условие";

- Основные / "Присвоить значение";

- Основные / "Возврат";

- IVR / "Проиграть файл";

Первым делом объявляем переменные, которые будем использовать в этом сценарии и задаем им начальные значения.

Строковая переменная Приветствие определяет тот звуковой файл с приветствием, который необходимо воспроизвести абоненту. Задаем ей значение по умолчанию "Hello.wav". Объявление переменной осуществляется компонентом "Объявить переменную". Устанавливаем компонент в сценарий, двойным щелчком мыши активируем его свойства, выбираем тип переменной Строка, справа рядом прописываем ее название "Приветствие", щелкаем на поле ниже и в открывшемся редакторе выражений выбираем "Константа", тип константы – Строка, значение Hello.wav.

Если впоследствии мы решим отказаться от различных приветствий в разное время суток и заменить его одним, нам это будет гораздо проще сделать, если мы подготовимся к этому заранее и заготовим возможность быстрого изменения сценария. Если нам потребуется упростить этот сценарий, то мы изменим блок-схему таким образом, чтобы сразу после объявления переменной осуществить переход на компонент "Проиграть_Приветствие".

Объявляем целочисленную переменную Час; Отличие объявления переменной Час от переменной Приветствие заключается лишь в том, что вместо типа "Строка" мы выбираем тип переменной "Целое число 32бит".

При помощи встроенной функции Час() задаем переменной Час целочисленное значение текущего времени в часах. Объявляем целочисленные переменные Утро и задаем им значение по умолчанию равное 8; День значение 11; Вечер значение 17; Ночь значение 20.

Теперь пришло время выбрать звуковой файл в зависимости от времени суток

Ставим компонент "Условие". Двойным щелчком мыши активируем его свойства.

Вызываем встроенный редактор выражений, в котором слева выбираем "Оператор", указываем тип оператора "X < Y (меньше)" и заполняем значения аргумента X = Час и аргумента Y = Утро

Получаем готовый компонент сравнения двух переменных Час и Утро

Из компонента "Условие" выходят две линии зеленого и красного цвета. Зеленая ветка означает переход, если значение внутри компонента истина, а красная, если ложь. По "зеленой" ветке ставим компонент "Присвоить значение" и целочисленной переменной Приветствие строковое значение константы равное "HelloN.wav"

Аналогичным образом расставляем и настраиваем остальные компоненты "Условие" и "Присвоить значение".

Перед компонентом "Проиграть файл" мы определили однозначным образом значение переменной Приветствие и нам осталось только его озвучить абоненту. Озвучивание файла производится компонентом, "Проиграть файл" в котором определим, какой файл мы будем проигрывать

Двойным щелчком мыши активируем свойства компонента, в разделе "Переменная" указываем из какой переменной будем брать название звукового файла Приветствие

А в разделе Константа - что файл будет проигрываться из медиа-библиотеки

Теперь осталось только загрузить звуковые файлы в медиа-библиотеку. У каждого сценария IVR существует собственная медиа-библиотека звуковых файлов. Попасть в медиа-библиотеку можно, начав выбирать файл

В открывшемся окне в раздел "Локальные для сценария" файлы добавляем записанные ранее звуковые файлы. Следует обратить внимание на то, чтобы поле "Значение" осталось пустым, в ином случае «Infinity Call-центр X» будет пытаться проиграть файл заданный именно в поле значение, иначе название файла будет определено из значения переменной Приветствие, как мы и указали ранее.

Сценарий готов, его можно компилировать и проверять.

Подробнее о получении данных в сценарии IVR

База данных клиентов ведется во внешней программе для call-центра, которая использует в качестве СУБД MS SQL сервер. Данные о клиентах и их персональных менеджерах лежат в таблице dbo.tbClients в базе данных Client_DB.

Таблица dbo.tbClients имеет длинный список полей, но нас интересуют только следующие:

id – внутренний целочисленный уникальный идентификатор клиента

cName – строковое, наименование клиента

cManager – строковое, ФИО персонального менеджера (если задан)

cPhone – строковое, номер телефона клиента

cManagerPhone – строковое, внутренний телефон персонального менеджера (если задан)

cManagerMobile – строковое, мобильный телефон персонального менеджера (если задан)

cCategory – строковое, маркетинговая категория абонента (если задана)

Регистрация внешней базы данных Client_DB производится в «Infinity Call-центр X» по процедуре, описанной в разделе документации Интеграция с базами данных.

Данные клиента определяются на основе простого SQL запроса:

SELECT top 1 [cName], [cManager], [cManagerPhone], [cManagerMobile], [cCategory]

FROM [Client_DB].[dbo].[tbClients] wh ere [cPhone]=:cPhone

Данным запросом выбирается первая строка из таблица [dbo].[tbClients] в которой поле [cPhone] совпадает с переменной cPhone.

Внимание! Все входные переменные запроса вне зависимости от синтаксиса языка SQL базы данных обозначаются через знак двоеточие перед переменной.

Фрагмент сценария с запросом к базе данных будет выглядеть так: сначала объявляем строковые переменные cName, cManager, cManagerPhone, cManagerMobile, cCategory и задаем им начальное значение «пустая строка».

После чего ставим компонент "SQL запрос", двойным щелчком мыши активируем его свойства и в свойствах запроса указываем, что будем использовать SQL запрос, в качестве базы данных выбираем зарегистрированную базу Client_DB_MSSQL, а в тело самого запроса пишем наш SQL, запрос, не забывая поставить перед входным параметром двоеточие:

После проверки запроса в компоненте появится перечень переменных, которым задаем значения переменных:

Входному параметру [phone] задаем значение функции АОН(), а выходным параметрам ставим в соответствие переменные сценария cName, cManager, cManagerPhone, cManagerMobile, cCategory.

Общий вид фрагмента сценария выглядит так:

В компоненте "Информация о звонке" записываем в карточку вызова полученные данные

В итоге после выполнения данного фрагмента сценария у нас в переменные сценария попадут соответствующие значения из таблицы клиентов для данного телефонного номера или останется пустота, если совпадений строки с таким номером телефона в таблице не будет