Определение имени и номера пользователя после соединения
Цель: Определить имя и внутренний номер соединившегося сотрудника при переключении абонента на групповой номер.
Рассмотрим следующую часть сценария. Пусть происходит переключение на групповой номер, происходит вызов группового номера, и абонент соединяется с одним из пользователей Oktell. Сценарий выглядит следующим образом:
Компонент "На группу". Переключает абонента на групповой номер 105.
- Назначение - внутрь
- Номер - 105
Компонент "Пауза 200мс". Обеспечивает запись информации о соединении в базу данных.
- Время задержки - 200
Компонент "Номер линии". Определяет номер линии внешнего абонента.
- переменной "номер линии" (строковая)
Компонент "Номер скоммутированной линии"
Компонент "ID пользователя"
Компонент "Внутренний номер"
Компонент "Имя пользователя"
Компонент "Вывод данных"
Шаг 1. Пауза. После соединения необходимо поставить паузу (в примере 200 мс), чтобы данное соединение записалось в базу данных.
Шаг 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 )
Выходные переменные: @name - имя пользователя, @prefix - внутренний номер пользователя.
Скачать сценарий: Определение имени и номера пользователя.oscr