Определение имени и номера пользователя после соединения — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
(Новая страница: « Наверх '''Цель''': Определить имя и внутренний номер соединившегося сотрудника...»)
 
Строка 7: Строка 7:
 
На данном этапе определить с каким именно пользователем соединился абонент стандартными средствами невозможно. Поэтому решение данной задачи будет проводится с использованием статистики соединения [a_stat_connections_1x1].  
 
На данном этапе определить с каким именно пользователем соединился абонент стандартными средствами невозможно. Поэтому решение данной задачи будет проводится с использованием статистики соединения [a_stat_connections_1x1].  
  
Шаг 1. Получение id цепочки коммутации. Реализуется с помощью компонента присвоения.  
+
Шаг 1. После соединения необходимо поставить паузу (в примере, 500 мс), чтобы данное соединение записалось в базу данных.  
  
Шаг 2.
+
Шаг 2. Получение id цепочки коммутации. Реализуется с помощью компонента присвоения.
 +
 
 +
Шаг 3. Выполнение 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 (
 +
select top 1000 timeanswer, bstr
 +
from a_stat_connections_1x1
 +
where idchain= @idchain
 +
order by timeanswer desc
 +
)a
 +
)

Версия 11:38, 13 ноября 2013

Наверх

Цель: Определить имя и внутренний номер соединившегося сотрудника при переключении абонента на групповой номер.

Рассмотрим следующую часть сценария. Пусть происходит переключение на групповой номер, происходит вызов группового номера, и абонент соединяется с одним из пользователей Oktell.

На данном этапе определить с каким именно пользователем соединился абонент стандартными средствами невозможно. Поэтому решение данной задачи будет проводится с использованием статистики соединения [a_stat_connections_1x1].

Шаг 1. После соединения необходимо поставить паузу (в примере, 500 мс), чтобы данное соединение записалось в базу данных.

Шаг 2. Получение id цепочки коммутации. Реализуется с помощью компонента присвоения.

Шаг 3. Выполнение 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 (
	select top 1000 timeanswer, bstr
	from a_stat_connections_1x1 
	where idchain= @idchain
	order by timeanswer desc
)a
)