Примеры пользовательских процедур — различия между версиями
| Строка 2: | Строка 2: | ||
__TOC__ | __TOC__ | ||
| + | |||
| + | Каждый раз когда задача выбирает абонента в исходящей задаче или поступает абонент по входящей, ей необходимо закрепить за ним оператора, который будет его обслуживать. Для этого используется опция "Вариант обхода операторов" в настройках задачи. Администраторы задачи могут выбрать один из 6 алгоритмов распределения или написать свой с помощью пользовательской процедуры. | ||
| + | |||
| + | Пользовательская процедура применяется в Call-центре для динамического распределения операторов внутри задачи. Процедура часто используется в тех случаях, когда каждому клиенту необходимо предоставлять различный набор операторов для обслуживания. В частности, формируемый список может зависеть от квалификации оператора и степени важности клиента. Нередко пользовательская процедура применяется для закрепления абонента за оператором, например в задачах с автоматическим перезвоном. | ||
| + | |||
| + | Чтобы установить пользовательскую процедуру в задаче необходимо выполнить следующие шаги: | ||
| + | |||
| + | |||
== Выбор оператора в зависимости от его приоритета == | == Выбор оператора в зависимости от его приоритета == | ||
Версия 07:48, 22 декабря 2014
Содержание
Каждый раз когда задача выбирает абонента в исходящей задаче или поступает абонент по входящей, ей необходимо закрепить за ним оператора, который будет его обслуживать. Для этого используется опция "Вариант обхода операторов" в настройках задачи. Администраторы задачи могут выбрать один из 6 алгоритмов распределения или написать свой с помощью пользовательской процедуры.
Пользовательская процедура применяется в Call-центре для динамического распределения операторов внутри задачи. Процедура часто используется в тех случаях, когда каждому клиенту необходимо предоставлять различный набор операторов для обслуживания. В частности, формируемый список может зависеть от квалификации оператора и степени важности клиента. Нередко пользовательская процедура применяется для закрепления абонента за оператором, например в задачах с автоматическим перезвоном.
Чтобы установить пользовательскую процедуру в задаче необходимо выполнить следующие шаги:
Выбор оператора в зависимости от его приоритета
таблица создана с полями id name mark берет первых менее опытных операторов с оценкой меньше 50 и более опытных после если прочие заняты. в случайном порядке чтобы не нагружать одного если потом слишком маленький
DECLARE @Id uniqueidentifier
IF (@idtask = '703DDF3A-47E5-4C87-AF0C-5E90130819A8')
BEGIN
SELECT * FROM (SELECT TOP 1000 [id]
FROM [oktell].[dbo].[Poryadok_operatory]
wHERE mark < 50 order by NEWID()) a
UNION ALL
SELECT * FROM
(SELECT TOP 1000 [id]
FROM [oktell].[dbo].[Poryadok_operatory]
WHERE mark >= 50
ORDER BY NEWID()
) b
END
С закреплением оператора
Пользовательская процедур
IF (@idtask = 'B8A22910-BFA4-480D-BFB1-151D0C06F93B')
BEGIN
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
С закреплением оператора и проверкой статуса
IF (@idtask = 'B77E5601-A103-4A41-B1FD-6E82EEB6B46A')
BEGIN
DECLARE @state INT
SELECT @ID = idoperator
FROM clients
WHERE id = @idabonent
SELECT top 1 @state = h.state
FROM A_Users u
LEFT JOIN
(SELECT h.*
FROM
(SELECT UserId, max(TimeChange) TimeChange
FROM A_UserStateHistory
GROUP BY UserId ) t
JOIN A_UserStateHistory h
ON t.UserId = h.UserId AND h.TimeChange = t.TimeChange
) h ON h.UserId = u.Id
WHERE u.id = @ID
IF (@state= 0 or @state 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
END