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

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

Наверх

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

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



Компонент "На группу". Переключает абонента на групповой номер 105.

  • Назначение - внутрь
  • Номер - 105

Компонент "Пауза 200мс". Обеспечивает запись информации о соединении в базу данных.

  • Время задержки - 200

Компонент "Номер линии". Определяет номер линии внешнего абонента.

  • переменной "номер линии" (строковая)

Компонент "Номер скоммутированной линии"

Компонент "ID пользователя"

Компонент "Внутренний номер"

Компонент "Имя пользователя"

Компонент "Вывод данных"

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

Шаг 2. Определяем номер линии абонента Реализуется с помощью компонента присвоения и функции "Id цепочки коммутаций"


Определение имени пользователя 001.PNG


Шаг 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
)

Выходные переменные: @name - имя пользователя, @prefix - внутренний номер пользователя.


Определение имени пользователя 002.PNG


Скачать сценарий: Определение имени и номера пользователя.oscr