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

Материал из Oktell
Перейти к: навигация, поиск
 
(не показано 13 промежуточных версии этого же участника)
Строка 1: Строка 1:
[[Практики | Наверх]]
+
[[Практики | Наверх]]    <span style="color:darkviolet"><nowiki>[Oktell 2.9+]</nowiki></span>
  
 
'''Цель''': '''Определить имя и внутренний номер соединившегося сотрудника при переключении абонента на групповой номер'''.  
 
'''Цель''': '''Определить имя и внутренний номер соединившегося сотрудника при переключении абонента на групповой номер'''.  
  
Рассмотрим следующую часть сценария. Пусть происходит переключение на групповой номер, происходит вызов группового номера, и абонент соединяется с одним из пользователей '''Oktell'''.  
+
Рассмотрим следующую часть сценария. Пусть происходит переключение на групповой номер, происходит вызов группового номера, и абонент соединяется с одним из пользователей '''Oktell'''. Алгоритм выглядит следующим образом:
  
  
[[Файл:Определение имени пользователя 000 .PNG | center]]
+
[[Файл:Определение имени пользователя 000.png | center]]
  
  
На данном этапе определить с каким именно пользователем соединился абонент стандартными средствами невозможно. Поэтому решение данной задачи будет проводится с использованием статистики соединения [a_stat_connections_1x1].  
+
Компонент "'''На группу'''". Переключает абонента на групповой номер 105.
 +
*'''Назначение''' - внутрь
 +
*'''Номер''' - 105
  
'''Шаг 1.''' '''Пауза.''' После соединения необходимо поставить паузу (в примере, 500 мс), чтобы данное соединение записалось в базу данных.
 
  
'''Шаг 2.''' '''Получение id цепочки коммутации.''' Реализуется с помощью компонента присвоения и функции "Id цепочки коммутаций"
+
Компонент "'''Пауза 200мс'''". Обеспечивает запись информации о соединении в базу данных.
 +
*Время задержки - 200
  
  
[[Файл:Определение имени пользователя 001.PNG | center]]
+
Компонент "'''Номер линии'''". Определяет номер линии внешнего абонента.
 +
* переменной "'''номер линии'''" (строковая) присваиваем значение функции "'''Номер линии'''"
  
  
'''Шаг 3.''' '''Выполнение SQL-запроса'''. Выполняется запрос в таблицу соединения на предмет нахождения самого последнего соединения в данной цепочке коммутации. Затем, с помощью связи таблиц внутреннего номерного плана и таблицы имен пользователей, находится внутренний номер сотрудника.  
+
[[Файл:Определение имени пользователя 001.png | center|1000px]]
  
  
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''' - внутренний номер пользователя.
 
  
 +
Компонент "'''ID пользователя'''". Определяет ID сотрудника по номеру линии.
 +
* Действие - Определить
 +
* Тип объекта - Линия
 +
* Ключ линии - переменная "'''номер скоммутированной линии'''"
 +
* Функция - Идентификатор пользователя
 +
* Значение в переменную - переменнная "'''идентификатор пользователя'''" (строковая)
  
[[Файл:Определение имени пользователя 002.PNG | center]]
 
  
 +
Компонент "'''Внутренний номер'''". Определяет внутренний номер сотрудника по ID пользователя.
 +
* Действие - Определить
 +
* Тип объекта - Пользователь
 +
* Ключ пользователя - переменная "'''идентификатор пользователя'''"
 +
* Функция - Внутренний номер
 +
* Значение в переменную - переменная "'''внутренний номер'''" (строковая)
  
'''Скачать сценарий''': [[Файл:Определение имени и номера пользователя.zip]]
+
 
 +
[[Файл:Определение имени пользователя 002.png | center|1000px]]
 +
 
 +
 
 +
Компонент "'''Имя пользователя'''". Определяет имя пользователя по его ID.
 +
* Действие - Определить
 +
* Тип объекта - Пользователь
 +
* Ключ пользователя - переменная "'''идентификатор пользователя'''"
 +
* Функция - Имя пользователя
 +
* Значение в переменную - переменная "'''имя пользователя'''" (строковая)
 +
 
 +
 
 +
Компонент "'''Вывод данных'''". Выводит все найденные значения на экран.
 +
 
 +
 
 +
[[Файл:Определение имени пользователя 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)