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

Материал из Oktell
Перейти к: навигация, поиск
 
(не показано 19 промежуточных версии этого же участника)
Строка 1: Строка 1:
[[Практики | Наверх]]
+
[[Практики | Наверх]]    <span style="color:darkviolet"><nowiki>[Oktell 2.9+]</nowiki></span>
  
'''Цель''': Определить имя и внутренний номер соединившегося сотрудника при переключении абонента на групповой номер'''.  
+
'''Цель''': '''Определить имя и внутренний номер соединившегося сотрудника при переключении абонента на групповой номер'''.  
  
Рассмотрим следующую часть сценария. Пусть происходит переключение на групповой номер, происходит вызов группового номера, и абонент соединяется с одним из пользователей Oktell.  
+
Рассмотрим следующую часть сценария. Пусть происходит переключение на групповой номер, происходит вызов группового номера, и абонент соединяется с одним из пользователей '''Oktell'''. Алгоритм выглядит следующим образом:
  
На данном этапе определить с каким именно пользователем соединился абонент стандартными средствами невозможно. Поэтому решение данной задачи будет проводится с использованием статистики соединения [a_stat_connections_1x1].
 
  
Шаг 1. После соединения необходимо поставить паузу (в примере, 500 мс), чтобы данное соединение записалось в базу данных.  
+
[[Файл:Определение имени пользователя 000.png | center]]
  
Шаг 2. Получение id цепочки коммутации. Реализуется с помощью компонента присвоения.
 
  
Шаг 3. Выполнение SQL-запроса. Выполняется запрос в таблицу соединения на предмет нахождения самого последнего соединения в данной цепочке коммутации. Затем, с помощью связи таблиц внутреннего номерного плана и таблицы имен пользователей, находится внутренний номер сотрудника.  
+
Компонент "'''На группу'''". Переключает абонента на групповой номер 105.
 +
*'''Назначение''' - внутрь
 +
*'''Номер''' - 105
  
  
select @prefix=prefix,@name=np.name from
+
Компонент "'''Пауза 200мс'''". Обеспечивает запись информации о соединении в базу данных.
(
+
*Время задержки - 200
  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
+
[[Файл:Определение имени пользователя 001.png | center|1000px]]
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
+
Компонент "'''ID пользователя'''". Определяет ID сотрудника по номеру линии.  
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
+
Компонент "'''Внутренний номер'''". Определяет внутренний номер сотрудника по ID пользователя.  
on rr.reactid = u.id
+
* Действие - Определить
) np
+
* Тип объекта - Пользователь
group by np.Prefix
+
* Ключ пользователя - переменная "'''идентификатор пользователя'''"
) cn where cn.countname = 1
+
* Функция - Внутренний номер
)
+
* Значение в переменную - переменная "'''внутренний номер'''" (строковая)
and np.Name in
+
 
(
+
 
select top 1 bstr
+
[[Файл:Определение имени пользователя 002.png | center|1000px]]
from (
+
 
select top 1000 timeanswer, bstr
+
 
from a_stat_connections_1x1
+
Компонент "'''Имя пользователя'''". Определяет имя пользователя по его ID.  
where idchain= @idchain
+
* Действие - Определить
order by timeanswer desc
+
* Тип объекта - Пользователь
)a
+
* Ключ пользователя - переменная "'''идентификатор пользователя'''"
)
+
* Функция - Имя пользователя
 +
* Значение в переменную - переменная "'''имя пользователя'''" (строковая)  
 +
 
 +
 
 +
Компонент "'''Вывод данных'''". Выводит все найденные значения на экран.
 +
 
 +
 
 +
[[Файл:Определение имени пользователя 003.png | center|660px]]
 +
 
 +
 
 +
'''Скачать сценарий''': [[Media:%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8_%D0%B8_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D0%B0_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F.oscr|Определение имени и номера пользователя.oscr]] ''(собрано на 2.11.141101)''

Текущая версия на 11:15, 31 марта 2023

Наверх    [Oktell 2.9+]

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

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


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


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

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


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

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


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

  • переменной "номер линии" (строковая) присваиваем значение функции "Номер линии"


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


Компонент "Номер скоммутированной линии". Определяет линию сотрудника, с которым произошло соединение.

  • Действие - Определить
  • Тип объекта - Линия
  • Ключ линии - переменная "номер линия"
  • Функция - Номер скоммутированной линии/конференции
  • Значение в переменную - переменная "номер скоммутированной линии" (строковая)


Компонент "ID пользователя". Определяет ID сотрудника по номеру линии.

  • Действие - Определить
  • Тип объекта - Линия
  • Ключ линии - переменная "номер скоммутированной линии"
  • Функция - Идентификатор пользователя
  • Значение в переменную - переменнная "идентификатор пользователя" (строковая)


Компонент "Внутренний номер". Определяет внутренний номер сотрудника по ID пользователя.

  • Действие - Определить
  • Тип объекта - Пользователь
  • Ключ пользователя - переменная "идентификатор пользователя"
  • Функция - Внутренний номер
  • Значение в переменную - переменная "внутренний номер" (строковая)


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


Компонент "Имя пользователя". Определяет имя пользователя по его ID.

  • Действие - Определить
  • Тип объекта - Пользователь
  • Ключ пользователя - переменная "идентификатор пользователя"
  • Функция - Имя пользователя
  • Значение в переменную - переменная "имя пользователя" (строковая)


Компонент "Вывод данных". Выводит все найденные значения на экран.


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


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