Соединение с последним обслужившим оператором — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
Строка 1: Строка 1:
Задача: При входящем звонке соединить клиента с последним обслужившим сотрудником.  
+
Задача: При входящем звонке соединить клиента '''с последним обслужившим сотрудником'''.  
  
В данной статье последний обслуживший сотрудник - любой пользователь, который последний разговаривал с данным клиентом. Для решения этой задачи используется sql-запрос в статистику соединений [a_stat_connections_1x1] базы данных Oktell.
+
В данной статье последний обслуживший сотрудник - любой пользователь, который последний разговаривал с данным клиентом. Для решения этой задачи используется sql-запрос в статистику соединений '''[a_stat_connections_1x1]''' базы данных Oktell.
  
Главный сценарий входящей маршрутизации выглядит следующим образом:
+
'''Главный сценарий''' входящей маршрутизации выглядит следующим образом:
  
  
Строка 9: Строка 9:
  
  
Компонент присвоения "Определяем Caller id". В переменную callerid записываем номер абонента с помощью функции "Номер абонента (CallerID)"
+
Компонент присвоения "'''Определяем Caller id'''". В переменную '''callerid''' записываем номер абонента с помощью функции "'''Номер абонента (CallerID)'''"
  
  
Строка 15: Строка 15:
  
  
В компоненте sql-запроса "определяем последнего обслужившего сотрудника" делаем запрос в таблицу соединений и определяем с кем в последний раз общался данный абонент:
+
В компоненте '''sql-запроса''' "'''определяем последнего обслужившего сотрудника'''" делаем запрос в таблицу соединений и определяем с кем в последний раз общался данный абонент:
  
  
Строка 60: Строка 60:
  
  
Переменной запроса @callerid присваиваем переменную сценария callerid, @name - operator, @prefix - operatorprefix
+
Переменной запроса '''@callerid''' присваиваем переменную сценария '''callerid''', '''@name''' - '''operator''', '''@prefix''' - '''operatorprefix'''
  
  
Строка 66: Строка 66:
  
  
Переменная operatorprefix теперь содержит внутренний номер нужного нам сотрудника, если такой сотрудник не найден, то номер будет пустой. SQL запрос отсеивает все групповые номера, оставляя только стандартные номера, у которых определен только один пользователь.
+
Переменная '''operatorprefix''' теперь содержит внутренний номер нужного нам сотрудника, если такой сотрудник не найден, то номер будет пустой. '''SQL запрос''' отсеивает все групповые номера, оставляя только стандартные номера, у которых определен только один пользователь.
  
  
Далее запускается отладочное уведомление, в котором показывается значение переменной callerid и operatorprefix. Затем в компоненте сравнения определяется пустой ли номер callerid.  
+
Далее запускается отладочное уведомление, в котором показывается значение переменной '''callerid''' и '''operatorprefix'''. Затем в компоненте сравнения определяется пустой ли номер '''callerid'''.  
  
  
Строка 75: Строка 75:
  
  
Если номер не пустой и оператор определен, сценарий переходит по ветке ложь на компонент "переключение" (промежуточное отладочное уведомление не рассматривается). В компоненте переключения в свойстве "номер" указана переменная operatorprefix. По желанию, в компоненте можно включить очередь ожидания.  
+
Если номер не пустой и оператор определен, сценарий переходит по ветке ложь на компонент "'''переключение'''" (промежуточное отладочное уведомление не рассматривается). В компоненте переключения в свойстве "'''номер'''" указана переменная '''operatorprefix'''. По желанию, в компоненте можно включить '''очередь ожидания'''.  
  
  
Строка 82: Строка 82:
  
 
Если данного оператора нет на месте, звонок переводится в главный сценарий входящую маршрутизацию.
 
Если данного оператора нет на месте, звонок переводится в главный сценарий входящую маршрутизацию.
 +
 +
'''Дополнительно''': Если последний раз клиент общался с директором, то скорее всего при повторном звонке не надо переводить заново на директора, в таком случае, в sql-запросе следует добавить после строки "...and bstr!='ivr'" строку
 +
and not in [director, zamdir]

Версия 08:16, 13 ноября 2013

Задача: При входящем звонке соединить клиента с последним обслужившим сотрудником.

В данной статье последний обслуживший сотрудник - любой пользователь, который последний разговаривал с данным клиентом. Для решения этой задачи используется sql-запрос в статистику соединений [a_stat_connections_1x1] базы данных Oktell.

Главный сценарий входящей маршрутизации выглядит следующим образом:


Соединениесоператором 001.PNG


Компонент присвоения "Определяем Caller id". В переменную callerid записываем номер абонента с помощью функции "Номер абонента (CallerID)"


Соединениесоператором 002.PNG


В компоненте sql-запроса "определяем последнего обслужившего сотрудника" делаем запрос в таблицу соединений и определяем с кем в последний раз общался данный абонент:


select @prefix=prefix,@name=np.name from
(
	select np.prefix, u.name from A_RuleRecords rr  
	inner join 
	A_NumberPlanAction as npa 
	on rr.ruleid = npa.extraid and npa.numtype=0 
	inner join 
	A_NumberPlan as np 
	on np.id=npa.numid 
	inner join 
	A_Users as u 
	on rr.reactid = u.id
	) np
	where np.Prefix in
		(
		select cn.Prefix from
		(
		select np.Prefix, count(np.Name) countname from
		(
		select np.prefix, u.name from A_RuleRecords rr 
		inner join 
		A_NumberPlanAction as npa 
		on rr.ruleid = npa.extraid and npa.numtype=0 
		inner join 
		A_NumberPlan as np 
		on np.id=npa.numid 
		inner join 
		A_Users as u 
		on rr.reactid = u.id
		) np
		group by np.Prefix
		) cn where cn.countname = 1
		)
		and np.Name in (select top 1 bstr from a_stat_connections_1x1 
						where astr = @callerid  
						and bstr!='ivr' 
						order by timeanswer desc)


Соединениесоператором 003.PNG


Переменной запроса @callerid присваиваем переменную сценария callerid, @name - operator, @prefix - operatorprefix


Соединениесоператором 004.PNG


Переменная operatorprefix теперь содержит внутренний номер нужного нам сотрудника, если такой сотрудник не найден, то номер будет пустой. SQL запрос отсеивает все групповые номера, оставляя только стандартные номера, у которых определен только один пользователь.


Далее запускается отладочное уведомление, в котором показывается значение переменной callerid и operatorprefix. Затем в компоненте сравнения определяется пустой ли номер callerid.


Соединениесоператором 006.PNG


Если номер не пустой и оператор определен, сценарий переходит по ветке ложь на компонент "переключение" (промежуточное отладочное уведомление не рассматривается). В компоненте переключения в свойстве "номер" указана переменная operatorprefix. По желанию, в компоненте можно включить очередь ожидания.


Соединениесоператором 007.PNG


Если данного оператора нет на месте, звонок переводится в главный сценарий входящую маршрутизацию.

Дополнительно: Если последний раз клиент общался с директором, то скорее всего при повторном звонке не надо переводить заново на директора, в таком случае, в sql-запросе следует добавить после строки "...and bstr!='ivr'" строку

and not in [director, zamdir]