Задача по обработке пропущенных — различия между версиями
Строка 26: | Строка 26: | ||
:* '''recalloperator''' - причина перезвона. Тип '''Nvarchar (auto)''' | :* '''recalloperator''' - причина перезвона. Тип '''Nvarchar (auto)''' | ||
+ | Также создадим таблицу "'''missed2'''". Данная таблица нужна для работы задачи, так как в ней на одной строке содержится вся информация по клиенту, а не на нескольких строках, как у '''missed'''. С помощью такого хода, задача не будет несколько раз звонить одному клиенту. Таблица идентична предыдущей, в ней добавлено поле '''count''', которое будет подсчитывать сколько раз клиент пытался дозвониться до компании: | ||
+ | |||
+ | Таблица "'''missed2'''" имеет следующие поля: | ||
+ | |||
+ | :* '''Id''' - номер абонента в списке. Тип '''Int''', назначение '''Идентификатор''' создается автоматически. | ||
+ | :* '''phone''' - телефон клиента. Тип '''Nvarchar (auto)''', назначение '''Телефон''' | ||
+ | :* '''calldate''' - время звонка. Тип '''Datetime''' | ||
+ | :* '''calledid''' - набранный номер. Тип '''Nvarchar (auto)''' | ||
+ | :* '''timewait''' - время ожидания в секундах. Тип '''Nvarchar (auto)''' | ||
+ | :* '''reason''' - причина потери соединения. Тип '''Nvarchar (auto)''' | ||
+ | :* '''operator''' - номер, на который происходило соединение. Тип '''Nvarchar (auto)''' | ||
+ | :* '''recalldate''' - дата перезвона. Тип '''Datetime''' | ||
+ | :* '''recalloperator''' - причина перезвона. Тип '''Nvarchar (auto)''' | ||
+ | :* '''count''' - количество неудачных звонков. Тип '''Nvarchar (auto)''' | ||
=== Главный сценарий === | === Главный сценарий === | ||
Строка 114: | Строка 128: | ||
:*Переменной '''recalloperator''' (поле таблицы) присваивается значение функции "'''Имя оператора'''". | :*Переменной '''recalloperator''' (поле таблицы) присваивается значение функции "'''Имя оператора'''". | ||
− | *Компонент "UPDATE MISSED" - заносит информацию в детализированную таблицу | + | *Компонент "'''UPDATE MISSED'''" - заносит информацию в детализированную таблицу '''missed'''. Проставляется отметка всем пропущенным от клиента, которые были не обработаны. |
update missed | update missed | ||
Строка 125: | Строка 139: | ||
=== Создание исходящей задачи === | === Создание исходящей задачи === | ||
− | + | Исходящая задача будет работать по созданной таблице и обзванивать только тех, кому еще не перезвонили. Ниже перечислены рекомендованные параметры: | |
− | + | ||
− | : | + | |
− | + | ||
− | + | ||
− | *Ресурсы: | + | *'''Параметры:''' |
+ | :* '''Тип''': Исходящая с уведомлением | ||
+ | :* '''Сценарий диалога''' - выберите созданный сценарий | ||
+ | :* '''Расписание задачи''' - установите время действия задачи | ||
+ | :* '''Остановить задачу''' - Никогда не останавливать задачу | ||
+ | |||
+ | *'''Ресурсы:''' | ||
:* Выберите операторов, супервизоров и внешние линии | :* Выберите операторов, супервизоров и внешние линии | ||
− | *Абоненты: | + | *'''Абоненты:''' |
− | :* Таблица абонентов - missed3 | + | :* '''Таблица абонентов''' - missed3 |
+ | |||
+ | *'''Дополнительно:''' | ||
+ | :* '''Поведение сценария диалога после разрыва коммутации''' - Довести сценарий до конца | ||
+ | :* '''Момент запуска сценария диалога''' - (рекомендуется) Сразу после поступления вызова | ||
+ | |||
+ | Сохраните задачу и запустите ее. | ||
+ | |||
− | + | === Результаты работы === | |
− | + | ||
− | + |
Версия 12:37, 11 февраля 2014
Содержание
Задача: Создать задачу по автоматическому перезвону клиентам, от которых был пропущенный звонок.
Задача становится актуальной при большом потоке клиентов. В компании получается следующая ситуация: часть клиентов не хочет дожидаться ответа оператора и вешает трубку спустя минуту ожидания на линии. Как правило, это происходит в, так называемый, "час пик". Однако, терять клиентов из-за недостатка операторов многим не хочется. Возникает проблема - как перезвонить клиентам, от которых был пропущенный звонок.
Oktell позволяет решить эту задачу. Если клиент не дожидается ответа или переходит по веткам "занято", "нет ответа", система фиксирует это в базе данных. Затем, при освобождении оператора система резервирует его и дозванивается до клиента, от которого был пропущенный звонок. Оператор перед своими глазами видит всю информацию по предыдущему звонку от клиента: сколько времени тот ждал на линии, почему соединение прервалось и любые другие параметры.
Рассмотрим процедуру создания такой задачи.
Таблица абонентов
В модуле Таблицы абонентов создаем таблицу "missed" со следующими полями:
- Id - номер абонента в списке. Тип Int, назначение Идентификатор создается автоматически.
- phone - телефон клиента. Тип Nvarchar (auto), назначение Телефон
- calldate - время звонка. Тип Datetime
- calledid - набранный номер. Тип Nvarchar (auto)
- timewait - время ожидания в секундах. Тип Nvarchar (auto)
- reason - причина потери соединения. Тип Nvarchar (auto)
- operator - номер, на который происходило соединение. Тип Nvarchar (auto)
- recalldate - дата перезвона. Тип Datetime
- recalloperator - причина перезвона. Тип Nvarchar (auto)
Также создадим таблицу "missed2". Данная таблица нужна для работы задачи, так как в ней на одной строке содержится вся информация по клиенту, а не на нескольких строках, как у missed. С помощью такого хода, задача не будет несколько раз звонить одному клиенту. Таблица идентична предыдущей, в ней добавлено поле count, которое будет подсчитывать сколько раз клиент пытался дозвониться до компании:
Таблица "missed2" имеет следующие поля:
- Id - номер абонента в списке. Тип Int, назначение Идентификатор создается автоматически.
- phone - телефон клиента. Тип Nvarchar (auto), назначение Телефон
- calldate - время звонка. Тип Datetime
- calledid - набранный номер. Тип Nvarchar (auto)
- timewait - время ожидания в секундах. Тип Nvarchar (auto)
- reason - причина потери соединения. Тип Nvarchar (auto)
- operator - номер, на который происходило соединение. Тип Nvarchar (auto)
- recalldate - дата перезвона. Тип Datetime
- recalloperator - причина перезвона. Тип Nvarchar (auto)
- count - количество неудачных звонков. Тип Nvarchar (auto)
Главный сценарий
Ниже приведенный сценарий является упрощенным примером. В сценарии показываются основные моменты, на которые стоит обратить внимание при составлении задачи по перезвону.
Все основные переменные в этом сценарии требуется сделать сессионными для передачи в сценарий обработки контента, в котором они будут добавлены в базу данных.
Вид сценария приведен на рисунке:
- Компонент "Основные параметры" - в компоненте присваиваются
- сессионная переменная calldate (дата/время) = функция "Текущие дата и время"
- сессионная переменная calledid (строковая) = функция "Внешний номер (CalledId)"
- сессионная переменная callerid (строковая) = функция "Номер абонента (CallerId)"
- сессионная переменная reason (строковая) = строка "Клиент сбросил"
- Переменная reason - это причина, по которой появился пропущенный. По умолчанию, задается значение "Клиент сбросил".
- Компонент "flag=0" - сессионной переменной flag (строковая) присваивается строка "0". Эта переменная будет индикатором является ли звонок пропущенным. По умолчанию, считается пропущенным (значение 0).
- Это нужно сделать, так как IVR-сценарий прекращается как только клиент кладет трубку, поэтому нужно заранее установить значения по умолчанию.
- Компонент "operator" - сессионной переменной operator (строковая) присваивается строка "400". Переменная обозначает номер оператора или групповой номер, на который клиент не дозвонился.
- Компонент "Переключение 1" - происходит переключение на обозначенный номер 400.
- Компонент "flag=1". Переменной flag присваивается значение "1", если соединение прошло удачно.
- В вашем сценарии входящей маршрутизации может быть довольно сложная система переключений. В этом случае перед каждым переключением нужно установить переменную operator с номером, а после удачного соединения переменной flag присвоить значение "1".
- Если соединение неудачно, то в каждой ветке переменной reason переприсваивается соответствующая причина пропущенного звонка. Например, по ветке "Занято" (если все операторы заняты в разговоре, а очередь ожидания не установлена), переменной reason будет присвоено значение "Заня
Сценарий обработки контента
В сценарии обработки контента записывается информация о пропущенном звонке в таблицу missed. Вид сценария приведен на рисунке:
- Компонент "flag=0?" - определяет равна ли переменная flag значению "0", т.е. является ли звонок пропущенным. Если нет, то сценарий завершается (или переходит к дальнейшей обработке в вашем случае).
- Компонент "timewait" - если звонок определен как пропущенный, то происходит присвоение переменной timewait (строковая) времени ожидания клиента с помощью следующего выражения:
DateDiff( ss , [calldate] , now )
- Выражение определяет разницу в секундах между временем начала звонка и текущим временем. Вы можете вычислять это выражение в минутах или в другой величине, изменив первый параметр "ss", например на "mi". Подробнее в статье Выражения.
- Компонент "Запись в missed" - записывает в таблицу missed детализированную информацию о пропущенном. Текст SQL запроса:
insert into missed (phone, calldate, calledid, timewait, reason, operator) values (@phone, @calldate, @calledid, @timewait, @reason, @operator)
- где
- @phone - переменная callerid,
- @calldate - переменная calldate,
- @calledid - переменная calledid,
- @timewait - переменная timewait,
- @reason - переменная reason,
- @operator - переменная operator
- Компонент "Запись в missed2" - записывает в таблицу missed2 информацию о первом пропущенном, а также подсчитывает количество пропущенных от конкретного номера. Если это первая запись, то добавляет ее полностью. Текст SQL запроса:
update missed2 set [count] = cast([count] as int)+1, calldate = @calldate, calledid = @calledid, timewait = @timewait, reason = @reason, operator = @operator where phone=@phone and recalldate is null if (@@rowcount = 0) insert into missed2 (phone, calldate, calledid, timewait, reason, operator, [count]) values (@phone, @calldate, @calledid, @timewait, @reason, @operator, '0')
После создания сценария не забудьте назначить его в Администрирование.Общие настройки.Сценарии АТС в качестве служебного сценария обработки контента.
Диалоговый сценарий обработки пропущенных
Диалоговый сценарий обработки пропущенных нужен для вывода информации оператору по предыдущему звонку от клиента. Вид сценария показан на рисунке:
Чтобы получить информацию, а также записать данные по перезвону (какой оператор и когда перезвонил) нужно ввести все переменные таблицы в сценарий (имя такое же как у столбца, тип поле таблицы). Данный сценарий будет работать фактически с таблицей missed2 (конкретнее по тем полям, которые не были обзвонены).
- Компонент "Форма оператора" - настройте вид формы удобным образом, чтобы оператор получил всю необходимую информацию. В примере создана следующая диалоговая форма:
- Компонент "Запись в Missed2". Компонент записывает в таблицу Missed2 информацию о перезвоне.
- Переменной recalldate (поле таблицы) присваивается значение функции "Текущие дата и время"
- Переменной recalloperator (поле таблицы) присваивается значение функции "Имя оператора".
- Компонент "UPDATE MISSED" - заносит информацию в детализированную таблицу missed. Проставляется отметка всем пропущенным от клиента, которые были не обработаны.
update missed set recalloperator=@recalloperator, recalldate=@recalldate where phone=@phone and recalldate is null
Создание таблицы абонентов для задачи
Создание исходящей задачи
Исходящая задача будет работать по созданной таблице и обзванивать только тех, кому еще не перезвонили. Ниже перечислены рекомендованные параметры:
- Параметры:
- Тип: Исходящая с уведомлением
- Сценарий диалога - выберите созданный сценарий
- Расписание задачи - установите время действия задачи
- Остановить задачу - Никогда не останавливать задачу
- Ресурсы:
- Выберите операторов, супервизоров и внешние линии
- Абоненты:
- Таблица абонентов - missed3
- Дополнительно:
- Поведение сценария диалога после разрыва коммутации - Довести сценарий до конца
- Момент запуска сценария диалога - (рекомендуется) Сразу после поступления вызова
Сохраните задачу и запустите ее.