Автоматический перезвон клиентам — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
м (Использование сценария)
 
(не показано 25 промежуточных версии этого же участника)
Строка 11: Строка 11:
 
Во время работы исходящей задачи нередко возникает потребность перезвонить клиенту в определенное время. Подразумевается, что оператор должен ввести время и причину перезвона, а также при необходимости номер, на который будет совершен перезвон. При наступлении срока повторного звонка клиенту, система должна напомнить оператору причину перезвона, время на которое был запланирован перезвон, а также другие дополнительные показатели. При этом резервирование происходит только того оператора, который последний раз разговаривал с данным клиентом.  
 
Во время работы исходящей задачи нередко возникает потребность перезвонить клиенту в определенное время. Подразумевается, что оператор должен ввести время и причину перезвона, а также при необходимости номер, на который будет совершен перезвон. При наступлении срока повторного звонка клиенту, система должна напомнить оператору причину перезвона, время на которое был запланирован перезвон, а также другие дополнительные показатели. При этом резервирование происходит только того оператора, который последний раз разговаривал с данным клиентом.  
  
 +
=== Основные моменты ===
  
=== Шаг. Создание проекта.===  
+
Чтобы перезвон работал необходимо установить:
 +
* переменная '''(сл) Статус звонка''' = число 0
 +
* переменная '''(сл) Статус абонента''' = число 2
 +
* переменная '''(сл) Дата следующего звонка''' = переменная '''recalldate'''
 +
* переменная '''(сл) Номер для перезвона''' = переменная '''recallphone'''
 +
* В компоненте "'''Стоп'''" - В компоненте важно поставить свойство "'''Отображать стоп-карточку'''" в значение "'''Да'''". Это необходимо для записи служебных переменных.
 +
* <span style="color:red;">ВНИМАНИЕ:</span> Для версии 2.8 и ниже необходимо выставить в настройках задаче на вкладке "'''Абоненты'''" приоритет обхода номеров "'''Отсутствует (поочередно)'''"
 +
 
 +
=== Создание проекта.===  
 
* В разделе "'''Call-центр'''" модуль "Проекты" нажмите '''Добавить'''.  
 
* В разделе "'''Call-центр'''" модуль "Проекты" нажмите '''Добавить'''.  
 
* Введите название проекта. В примере, проект называется "'''Перезвон'''". Нажмите '''Сохранить'''.  
 
* Введите название проекта. В примере, проект называется "'''Перезвон'''". Нажмите '''Сохранить'''.  
Строка 20: Строка 29:
  
  
=== Шаг. Создание таблицы абонентов. ===
+
=== Создание таблицы абонентов. ===
 
* Перейдите в модуль "'''Таблицы абонентов'''".  
 
* Перейдите в модуль "'''Таблицы абонентов'''".  
 
* Нажмите '''Добавить'''. Введите название списка и название таблицы (только на латинице). В примере, список называется '''Таблица Обзвона''', таблица называется '''TableMain'''.
 
* Нажмите '''Добавить'''. Введите название списка и название таблицы (только на латинице). В примере, список называется '''Таблица Обзвона''', таблица называется '''TableMain'''.
* Перейдите на вкладку '''Данные'''. Добавьте стобцы, необходимые для вашей задачи, а также служебные столбцы для работы перезвона. В качестве примера, разберем столбцы созданной таблицы:  
+
* Перейдите на вкладку '''Данные'''. Добавьте столбцы, необходимые для вашей задачи, а также служебные столбцы для работы перезвона. В качестве примера, разберем столбцы созданной таблицы:  
:* '''Id''' - номер абонента в списке. Тип '''Int''', назначение Идентификатор создается автоматически.
+
:* Id - номер абонента в списке. Тип '''Int''', назначение Идентификатор создается автоматически.
:* '''phone''' - телефон абонента. Тип '''Nvarchar (auto)''', назначение Телефон, <FONT color="green">необходим для задачи</FONT>.
+
:* phone - телефон абонента. Тип '''Nvarchar (auto)''', назначение Телефон, <FONT color="green">необходим для задачи</FONT>.
:* '''calldate''' - время звонка. Тип '''Datetime''',  <FONT color="green">необходим для задачи</FONT>.
+
:* calldate - время звонка. Тип '''Datetime''',  <FONT color="green">необходим для задачи</FONT>.
:* '''param1''' - информационное поле. Тип '''Nvarchar (auto)''',  <FONT color="green">необходим для задачи</FONT>.
+
:* param1 - информационное поле. Тип '''Nvarchar (auto)''',  <FONT color="green">необходим для задачи</FONT>.
:* '''param2''' - информационное поле. Тип '''Nvarchar (auto)''',  <FONT color="green">необходим для задачи</FONT>.
+
:* param2 - информационное поле. Тип '''Nvarchar (auto)''',  <FONT color="green">необходим для задачи</FONT>.
:* '''param3''' - информационное поле. Тип '''Nvarchar (auto)''',  <FONT color="green">необходим для задачи</FONT>.
+
:* param3 - информационное поле. Тип '''Nvarchar (auto)''',  <FONT color="green">необходим для задачи</FONT>.
:* '''operator''' - имя обслуживающего оператора. Тип '''Nvarchar (auto)''',  <FONT color="green">необходим для задачи</FONT>.
+
:* operator - имя обслуживающего оператора. Тип '''Nvarchar (auto)''',  <FONT color="green">необходим для задачи</FONT>.
:* '''operatorid''' - id обслуживающего оператора. Тип '''Uniqueidentifier''', <FONT color="red">необходим для перезвона</FONT>.
+
:* operatorid - id обслуживающего оператора. Тип '''Uniqueidentifier''', <FONT color="red">необходим для перезвона</FONT>.
:* '''recalldate''' - дата перезвона. Тип '''Datetime''', назначение Информационное поле, <FONT color="red">необходим для перезвона</FONT>.
+
:* recalldate - дата перезвона. Тип '''Datetime''', назначение Информационное поле, <FONT color="red">необходим для перезвона</FONT>.
:* '''recallreason''' - причина перезвона. Тип '''Nvarchar (auto)''', назначение Информационное поле, <FONT color="red">необходим для перезвона</FONT>.
+
:* recallreason - причина перезвона. Тип '''Nvarchar (auto)''', назначение Информационное поле, <FONT color="red">необходим для перезвона</FONT>.
:* '''recallphone''' - причина перезвона. Тип '''Nvarchar (auto)''', назначение Информационное поле, <FONT color="red">необходим для перезвона</FONT>.
+
:* recallphone - причина перезвона. Тип '''Nvarchar (auto)''', назначение Информационное поле, <FONT color="red">необходим для перезвона</FONT>.
:* '''status''' - статус звонка (1- перезвон, 2 -успешный). Тип '''Nvarchar (auto)''', <FONT color="red">необходим для перезвона</FONT>.
+
:* status - статус звонка (1- перезвон, 2 -успешный). Тип '''Nvarchar (auto)''', <FONT color="red">необходим для перезвона</FONT>.
  
 
Импортируйте или введите вручную номера для обзвона.
 
Импортируйте или введите вручную номера для обзвона.
  
  
<center>[[Файл:Перезвон-011.png| 500px]][[Файл:Перезвон-012.png | 500px]]</center>
+
<center>[[Файл:Перезвон-012.png | 500px]][[Файл:Перезвон-011.png| 500px]]</center>
 
+
  
=== Шаг. Создание сценария. ===
+
=== Создание сценария. ===
  
 
'''Общий вид сценария:'''
 
'''Общий вид сценария:'''
Строка 49: Строка 57:
  
 
<center>[[Файл:Перезвон-003.png]]</center>
 
<center>[[Файл:Перезвон-003.png]]</center>
 +
 +
 +
В сценарии заранее созданы переменные с названиями, идентичными столбцам таблицы '''TableMain''' и типом "<span style="color:darkgreen">'''Поле таблицы'''</span>". Перечень переменных: calldate, id, operator, operatorid, param1, param2, param3, phone, recalldate, recallphone, recallreason, status. Все эти переменные имеют тип данных "<span style="color:darkgreen">'''Поле таблицы'''</span>", а значит в них будут автоматически присвоены значения из таблицы абонентов для конкретного клиента.
 +
 +
 +
<center>[[Файл:Перезвон a.png]]</center>
  
  
Строка 111: Строка 125:
  
  
Компонент "'''Дата для перезвона'''" - склеивает дату и время в одну переменную. Переменной '''recalldate (поле таблицы)''' присваивается выражение:
+
Компонент "'''Дата для перезвона'''" - склеивает дату и время в одну переменную с помощью SQL-запроса.  
datetime(substr([recalldata],0,11)+substr([recalltime],11,8))
+
  
В этом компоненте также устанавливается '''status (поле таблицы)''' равный 1.  
+
<FONT color="red">ВНИМАНИЕ: </FONT> '''Рекомендуется использовать SQL-запрос для склеивания даты и времени.''' Строковые операции (substr) использовать не рекомендуется, так как на компьютере могут быть американские региональные стандарты (панель управления Windows) и строка с датой может выглядеть по другому.
  
 +
''Например, на одном компьютере дата выглядит как 27.01.2014 14:57:43 (русский), а на другом 27\1\2014 02:57:43 PM (американский). Работать со строками во втором случае не получится.''
 +
 +
select @recalldate = cast(floor(cast(@recalldata as float)) as datetime) +
 +
(@recalltime - cast(floor(cast(@recalltime as float)) as datetime))
 +
 +
где
 +
* '''@recalldata''' - переменная recalldata (дата/время)
 +
* '''@recalltime''' - переменная recalltime (дата/время)
 +
* '''@recalldata''' - переменная tempdata (дата/время)
 +
 +
<FONT color="red">ВНИМАНИЕ: </FONT> Необходимость введения дополнительной переменной '''tempdata''' обуславливается тем, что в SQL-запросе нельзя в выходную переменную сразу определить поле таблицы.
  
 
<center>[[Файл:Перезвон-006.png]]</center>
 
<center>[[Файл:Перезвон-006.png]]</center>
  
 +
 +
'''Компонент "Присвоение даты и статуса"''' - присваивает
 +
* переменной '''recalldate(поле таблицы)''' присваивается переменная '''tempdata(дата/время)'''
 +
* переменной '''status (поле таблицы)''' присваивается значение '''1'''
  
 
'''Компонент "Ув4"''' - отладочное уведомление для проверки значений. Текст уведомления - выражение: <br>  
 
'''Компонент "Ув4"''' - отладочное уведомление для проверки значений. Текст уведомления - выражение: <br>  
Строка 140: Строка 168:
 
'''Компонент "Стоп 2"''' - В компоненте важно поставить свойство "'''Отображать стоп-карточку'''" в значение "'''Да'''". Это необходимо для записи служебных переменных.
 
'''Компонент "Стоп 2"''' - В компоненте важно поставить свойство "'''Отображать стоп-карточку'''" в значение "'''Да'''". Это необходимо для записи служебных переменных.
  
 
+
=== Создание задачи ===
=== Шаг. Создание задачи ===
+
  
 
* Перейдите на вкладку "'''Задачи'''". Нажмите "'''Добавить'''" и выберите "'''Исходящее голосовое оповещение'''".
 
* Перейдите на вкладку "'''Задачи'''". Нажмите "'''Добавить'''" и выберите "'''Исходящее голосовое оповещение'''".
Строка 161: Строка 188:
 
* На вкладке "'''Абоненты'''" выберите таблицу абонентов
 
* На вкладке "'''Абоненты'''" выберите таблицу абонентов
 
*: <span style="color:red;">ВНИМАНИЕ:</span> Рекомендуется отключить "'''Использовать алгоритм перезвона абонентам строго в назначенное время'''". Этот алгоритм использует кэш абонентов и использует постоянный мониторинг этого кэша на предмет необходимости звонка. Тесты показывают, что он может не подхватывать других абонентов из основной таблицы абонентов, пока не произойдет обзвон кэша.  
 
*: <span style="color:red;">ВНИМАНИЕ:</span> Рекомендуется отключить "'''Использовать алгоритм перезвона абонентам строго в назначенное время'''". Этот алгоритм использует кэш абонентов и использует постоянный мониторинг этого кэша на предмет необходимости звонка. Тесты показывают, что он может не подхватывать других абонентов из основной таблицы абонентов, пока не произойдет обзвон кэша.  
 
+
:* <span style="color:red;">ВНИМАНИЕ:</span> Для версии 2.8 и ниже необходимо выставить приоритет обхода номеров "'''Отсутствует (поочередно)'''"
  
 
<center>[[Файл:Перезвон-016.png| 500px]]</center>
 
<center>[[Файл:Перезвон-016.png| 500px]]</center>
Строка 175: Строка 202:
  
  
=== Шаг. Пользовательская процедура ===
+
=== Пользовательская процедура ===
  
 
В созданной таблице абонентов '''TableMain''' есть поле '''operatorid'''. Если это поле обозначено, задача должна закреплять клиентов за данными операторами.  
 
В созданной таблице абонентов '''TableMain''' есть поле '''operatorid'''. Если это поле обозначено, задача должна закреплять клиентов за данными операторами.  
  
Для того, чтобы задача работала необходимо добавить в хранимую процедуру '''[dbo].[A_TaskManager_OperatorsAll_Get_Custom]''' следующий запрос:
+
Для того, чтобы задача работала необходимо добавить в хранимую процедуру '''[dbo].[A_TaskManager_OperatorsAll_Get_Custom]''' следующий запрос. В запросе используется id задачи ''B8A22910-BFA4-480D-BFB1-151D0C06F93B'', замените его на '''id''' вашей задачи (найти '''id''' можно в таблице '''A_TaskManager_Tasks''')
  
 
  if (@idtask = 'B8A22910-BFA4-480D-BFB1-151D0C06F93B')
 
  if (@idtask = 'B8A22910-BFA4-480D-BFB1-151D0C06F93B')
Строка 198: Строка 225:
 
  order by NEWID()
 
  order by NEWID()
 
 
 
 
  --select '6156BDD9-40CF-4AA2-9B90-AA4E9B7A3A23'
+
 
 
  end
 
  end
 
  else
 
  else
Строка 244: Строка 271:
  
  
'''Скачать файл сценария и текст запроса:''' [http://wiki.oktell.ru/images/7/70/%D0%9F%D0%B5%D1%80%D0%B5%D0%B7%D0%B2%D0%BE%D0%BD.zip]
+
'''Скачать файл сценария и текст запроса:''' [[Media:Перезвон.zip|Перезвон.zip]]

Текущая версия на 10:34, 31 марта 2023

Наверх

Поставленные задачи:
1) обеспечить автоматический перезвон клиентам в задаче.
2) обеспечить закрепление оператора за клиентом

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

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

Основные моменты

Чтобы перезвон работал необходимо установить:

  • переменная (сл) Статус звонка = число 0
  • переменная (сл) Статус абонента = число 2
  • переменная (сл) Дата следующего звонка = переменная recalldate
  • переменная (сл) Номер для перезвона = переменная recallphone
  • В компоненте "Стоп" - В компоненте важно поставить свойство "Отображать стоп-карточку" в значение "Да". Это необходимо для записи служебных переменных.
  • ВНИМАНИЕ: Для версии 2.8 и ниже необходимо выставить в настройках задаче на вкладке "Абоненты" приоритет обхода номеров "Отсутствует (поочередно)"

Создание проекта.

  • В разделе "Call-центр" модуль "Проекты" нажмите Добавить.
  • Введите название проекта. В примере, проект называется "Перезвон". Нажмите Сохранить.


Перезвон-001.pngПерезвон-002.png


Создание таблицы абонентов.

  • Перейдите в модуль "Таблицы абонентов".
  • Нажмите Добавить. Введите название списка и название таблицы (только на латинице). В примере, список называется Таблица Обзвона, таблица называется TableMain.
  • Перейдите на вкладку Данные. Добавьте столбцы, необходимые для вашей задачи, а также служебные столбцы для работы перезвона. В качестве примера, разберем столбцы созданной таблицы:
  • Id - номер абонента в списке. Тип Int, назначение Идентификатор создается автоматически.
  • phone - телефон абонента. Тип Nvarchar (auto), назначение Телефон, необходим для задачи.
  • calldate - время звонка. Тип Datetime, необходим для задачи.
  • param1 - информационное поле. Тип Nvarchar (auto), необходим для задачи.
  • param2 - информационное поле. Тип Nvarchar (auto), необходим для задачи.
  • param3 - информационное поле. Тип Nvarchar (auto), необходим для задачи.
  • operator - имя обслуживающего оператора. Тип Nvarchar (auto), необходим для задачи.
  • operatorid - id обслуживающего оператора. Тип Uniqueidentifier, необходим для перезвона.
  • recalldate - дата перезвона. Тип Datetime, назначение Информационное поле, необходим для перезвона.
  • recallreason - причина перезвона. Тип Nvarchar (auto), назначение Информационное поле, необходим для перезвона.
  • recallphone - причина перезвона. Тип Nvarchar (auto), назначение Информационное поле, необходим для перезвона.
  • status - статус звонка (1- перезвон, 2 -успешный). Тип Nvarchar (auto), необходим для перезвона.

Импортируйте или введите вручную номера для обзвона.


Перезвон-012.pngПерезвон-011.png

Создание сценария.

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


Перезвон-003.png


В сценарии заранее созданы переменные с названиями, идентичными столбцам таблицы TableMain и типом "Поле таблицы". Перечень переменных: calldate, id, operator, operatorid, param1, param2, param3, phone, recalldate, recallphone, recallreason, status. Все эти переменные имеют тип данных "Поле таблицы", а значит в них будут автоматически присвоены значения из таблицы абонентов для конкретного клиента.


Перезвон a.png


Компонент "Присвоение данных" - в компоненте присваиваются

  • переменная operator (поле таблицы) = функция "Имя оператора"
  • переменная calldate (поле таблицы) = функция "Текущие даты и время"
  • переменная temp (строковая) = переменная recallphone (поле таблицы). Переменная temp хранит в себе текущее значение телефона, на который позвонила задача. Телефон, как мы знаем, может измениться от первоначального, если клиент захочет, чтобы ему перезвонили на другой номер.
  • переменная operatorid (поле таблицы) = функция "Id оператора"


Перезвон-004.png


Компонент "Ув1" - уведомление для контроля работы. Текст уведомления - выражение:

[operator]+' позвонил абоненту '+ [id] 

Компонент "Проверка" - проверяет систему на предмет перезвона. Если переменная status (поле таблицы) равна 1, то это перезвон.

Компонент "temp" - Если система звонит клиенту первый раз, перезаписывает переменную temp значением phone (поле таблицы). Таким образом в переменной temp будет храниться актуальный телефон.

Компонент "Ув2" - Если система перезванивает клиенту, показывает уведомление супервизору о том, что оператор перезвонил клиенту. Текст уведомления - выражения:

[operator] +' перезвонил клиенту '+[id]

Компонент "Перезвон" - Диалоговая форма для уведомления оператора о причинах перезвона. По этой форме оператор напоминает клиенту, что он просил перезвонить ему.


Перезвон-010.png


Компонент "Основная форма" - Диалоговая форма для составления заявки. В вашей задаче форма может отличаться - быть более сложной, иметь больше параметров.


Перезвон-005.png


Компонент "Ув3" - Отладочное уведомление для проверки значений. Текст уведомления - выражение:

[operator]+ ' ввел:'+endline+
'[param1] '+[param1]+endline+
'[param2] '+[param2]+endline+
'[param3] '+[param3]+endline+
'[recallflag] '+[recallflag]

Компонент "Перезвон?" - проверяет установил ли оператор флажок на перезвон. Если recallflag (строковая) равен 1, то переходим на заполнение формы перезвона.

Компонент "Ув 5" - Если перезвон не понадобился, уведомление оповещает супервизора, что оператор обзвонил клиента. Текст уведомления - выражение:

[operator]+' обзвонил абонента '+[id]

Компонент "Status=2" - присваивает переменной status (поле таблицы) значение 2.

Компонент "Статус звонка=1" - присваивает служебной переменной (сл) Статус звонка значение 1. После этого задача перестает обзванивать данного абонента и считает его завершенным.


Перезвон-008.png


Компонент "Стоп 1" - В компоненте важно поставить свойство "Отображать стоп-карточку" в значение "Да". Это необходимо для записи служебных переменных.

Компонент "Форма перезвона" - Если перезвон понадобился, открывается форма перезвона. В этой форме оператор заполняет дату и время для перезвона, номер на который надо звонить и причину для более детального описания ситуации.


Перезвон-009.png


Компонент "Дата для перезвона" - склеивает дату и время в одну переменную с помощью SQL-запроса.

ВНИМАНИЕ: Рекомендуется использовать SQL-запрос для склеивания даты и времени. Строковые операции (substr) использовать не рекомендуется, так как на компьютере могут быть американские региональные стандарты (панель управления Windows) и строка с датой может выглядеть по другому.

Например, на одном компьютере дата выглядит как 27.01.2014 14:57:43 (русский), а на другом 27\1\2014 02:57:43 PM (американский). Работать со строками во втором случае не получится.

select @recalldate = cast(floor(cast(@recalldata as float)) as datetime) +
(@recalltime - cast(floor(cast(@recalltime as float)) as datetime))

где

  • @recalldata - переменная recalldata (дата/время)
  • @recalltime - переменная recalltime (дата/время)
  • @recalldata - переменная tempdata (дата/время)

ВНИМАНИЕ: Необходимость введения дополнительной переменной tempdata обуславливается тем, что в SQL-запросе нельзя в выходную переменную сразу определить поле таблицы.

Перезвон-006.png


Компонент "Присвоение даты и статуса" - присваивает

  • переменной recalldate(поле таблицы) присваивается переменная tempdata(дата/время)
  • переменной status (поле таблицы) присваивается значение 1

Компонент "Ув4" - отладочное уведомление для проверки значений. Текст уведомления - выражение:

[operator]+' поставил на перезвон абонента '+[id]+endline+
'[recallphone] '+[recallphone]+endline+
'[recallreason] '+[recallreason]+endline+
'[recalldate] '+[recalldate]

Компонент "Статус звонка=0" - В компоненте устанавливаются служебные переменные необходимые для перезвона:

  • переменная (сл) Статус звонка = число 0
  • переменная (сл) Статус абонента = число 2
  • переменная (сл) Дата следующего звонка = переменная recalldate
  • переменная (сл) Номер для перезвона = переменная recallphone


Перезвон-007.png


Компонент "Стоп 2" - В компоненте важно поставить свойство "Отображать стоп-карточку" в значение "Да". Это необходимо для записи служебных переменных.

Создание задачи

  • Перейдите на вкладку "Задачи". Нажмите "Добавить" и выберите "Исходящее голосовое оповещение".
  • На вкладке "Параметры" основные характеристики:
  • Тип - С запросом у оператора
  • Сценарий диалога - выберите созданный сценарий диалога "СценарийГлавный"


Перезвон-014.png


  • На вкладке "Ресурсы" выберите операторов, супервизоров по задаче и внешние линии.
    В поле "Вариант обхода операторов" выберите "Пользовательская процедура" для закрепления клиентов за оператором. Для работы этого варианта обхода необходимо дополнить хранимую процедуру [dbo].[A_TaskManager_OperatorsAll_Get_Custom] в базе данных Oktell, подробнее в следующем разделе.


Перезвон-015.png


  • На вкладке "Абоненты" выберите таблицу абонентов
    ВНИМАНИЕ: Рекомендуется отключить "Использовать алгоритм перезвона абонентам строго в назначенное время". Этот алгоритм использует кэш абонентов и использует постоянный мониторинг этого кэша на предмет необходимости звонка. Тесты показывают, что он может не подхватывать других абонентов из основной таблицы абонентов, пока не произойдет обзвон кэша.
  • ВНИМАНИЕ: Для версии 2.8 и ниже необходимо выставить приоритет обхода номеров "Отсутствует (поочередно)"
Перезвон-016.png


  • На вкладке "Дополнительно" выберите параметры дозвона до абонентов
    В поле "Поведение сценария диалога после разрыва коммутации" поставьте "Довести сценарий до конца"
    В поле "При нажатии на СТОП в диалоговой форме" поставьте "Разрывать коммутацию".
    ВНИМАНИЕ: Если вы используете в вашей системе сценарий "Вместо отбоя внешней линии" выберите параметр "Поведение при переключении абонента на сценарий IVR" - "Осуществлять выход из задачи (с возможностью входа в другую задачу)".


Перезвон-017.pngПерезвон-018.png


Пользовательская процедура

В созданной таблице абонентов TableMain есть поле operatorid. Если это поле обозначено, задача должна закреплять клиентов за данными операторами.

Для того, чтобы задача работала необходимо добавить в хранимую процедуру [dbo].[A_TaskManager_OperatorsAll_Get_Custom] следующий запрос. В запросе используется id задачи B8A22910-BFA4-480D-BFB1-151D0C06F93B, замените его на id вашей задачи (найти id можно в таблице A_TaskManager_Tasks)

	if (@idtask = 'B8A22910-BFA4-480D-BFB1-151D0C06F93B')
	begin
		
		declare @Id uniqueidentifier
		
		select	@Id = operatorid
		from TableMain	
		where Id = @idabonent
		
		if (@Id is null)
			begin
				select	u.Id
				from	A_Users u
							inner join A_UserParams up on u.Id = up.Iduser
				where	IsOperator = 1
				order by NEWID()
			
			
			end
		else
			begin
				select @Id Id
			end
		
		return
	end

Запрос определяет есть ли у заданного абонента @idabonent закрепленный за ним оператор и возвращает его id. Если за клиентом никто не закреплен, запрос возвращает список операторов в случайном порядке.

На рисунке показана последовательность действий. Выберите хранимую процедуру в базе данных Oktell, добавьте запрос и нажмите F5.


Перезвон-013.png


Использование сценария

При первом звонке оператор заполняет карточку. В случае необходимости выбирает "Перезвонить клиенту".


Перезвон-019.png Перезвон-020.png


Перезвон-021.png


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


Перезвон-022.pngПерезвон-023.png
Перезвон-024.png


Благодаря всплывающим уведомлениям супервизор всегда в курсе работы системы. В сценарии вы можете поставить свойство уведомления "Сохранить в БД". Тогда оператор сможет просматривать уведомления в разделе "Офис" - модуль "Кабинет" - вкладка "Уведомления".


Перезвон-025.png


Супервизор может наблюдать за работой задачи также по таблице абонентов (столбец Status). Также можно настроить отчеты по данной таблице абонентов.


Скачать файл сценария и текст запроса: Перезвон.zip