Автоматический перезвон клиентам

Материал из Oktell
Перейти к: навигация, поиск

Наверх

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

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

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

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

  • В разделе "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), необходим для перезвона.

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


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


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

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


Перезвон-003.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


Компонент "Дата для перезвона" - склеивает дату и время в одну переменную. Переменной recalldate (поле таблицы) присваивается выражение:

datetime(substr([recalldata],0,11)+substr([recalltime],11,8))

В этом компоненте также устанавливается status (поле таблицы) равный 1.


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


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

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

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

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


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


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

Закрепление оператора за клиентом

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

Для того, чтобы задача работала необходимо добавить в хранимую процедуру [dbo].[A_TaskManager_OperatorsAll_Get_Custom] следующий запрос:

	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()
			
			--select '6156BDD9-40CF-4AA2-9B90-AA4E9B7A3A23'	
			end
		else
			begin
				select @Id Id
			end
		
		return
	end

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

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

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