Определение времени работы внутренних линий — различия между версиями
Строка 1: | Строка 1: | ||
Задача: Мониторинг состояния внутренних линий и определение времены работы внутренних линий. | Задача: Мониторинг состояния внутренних линий и определение времены работы внутренних линий. | ||
− | Задача становится актуальной, когда операторы системы не используют клиентских приложений, а установлены как "пользователь по умолчанию" для своего телефона. В | + | Задача становится актуальной, когда операторы системы не используют клиентских приложений, а установлены как "пользователь по умолчанию" для своего телефона. В базу данных Oktell информация о разрегистрации линии не заносится и проверка работы линий доступна только с помощью клиентского приложения (модуль "'''Мониторинг'''"), что является не очень удобным. |
− | Сценарий выглядит следующим образом: | + | Следовательно, необходимо создать сценарий, который будет проверять состояние линий и вести статистику о времени работы каждой линии, а следовательно и пользователя системы. Сценарий выглядит следующим образом: |
[[Файл:РаботаВнутреннихЛиний-001.png | center]] | [[Файл:РаботаВнутреннихЛиний-001.png | center]] | ||
Строка 26: | Строка 26: | ||
set @res=@@rowcount | set @res=@@rowcount | ||
− | + | Запрос использует таблицу: | |
+ | * [oktell_settings].[dbo].[A_ServerSipLines] — столбец SystemNumStr показывает номера внутренних SIP линий, определенных в системе. | ||
+ | |||
+ | Однако вы также можете использовать таблицы: | ||
+ | |||
+ | * [oktell_settings].[dbo].[A_ServerUSBLines] — столбец SystemNumStr показывает номера внутренних Voip линий (гарнитура или usb телефон). | ||
+ | |||
+ | * [oktell_settings].[dbo].[A_ServerExtLines] — столбец SystemNumStr показывает номера внешних SIP линий | ||
3. Компонент "Проверка на завершение". Определяет конец цикла (был осуществлен перебор всех линий). Сравнение переменной res с нулем. | 3. Компонент "Проверка на завершение". Определяет конец цикла (был осуществлен перебор всех линий). Сравнение переменной res с нулем. | ||
Строка 68: | Строка 75: | ||
11. Компонент "Оповещение". Происходит уведомление администратора системы о том, что внутренняя линия выключена. | 11. Компонент "Оповещение". Происходит уведомление администратора системы о том, что внутренняя линия выключена. | ||
+ | В работе используется таблица Lines в [Oktell].[dbo].[Lines]. Запрос для создания таблицы (выполняется в SSMS) | ||
− | + | USE [oktell] | |
− | + | GO | |
− | + | SET ANSI_NULLS ON | |
− | + | GO | |
− | + | ||
− | + | SET QUOTED_IDENTIFIER ON | |
− | + | GO | |
− | + | ||
− | + | CREATE TABLE [dbo].[Lines]( | |
− | + | [Id] [int] IDENTITY(1,1) NOT NULL, | |
+ | [Line] [nvarchar](2000) NULL, | ||
+ | [User] [nvarchar](2000) NULL, | ||
+ | [Status] [nvarchar](2000) NULL, | ||
+ | [Online] [datetime] NULL, | ||
+ | [Offline] [datetime] NULL, | ||
+ | [date] [datetime] NULL, | ||
+ | [datetime] [datetime] NULL, | ||
+ | PRIMARY KEY CLUSTERED | ||
+ | ( | ||
+ | [Id] ASC | ||
+ | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
+ | ) ON [PRIMARY] | ||
+ | |||
+ | GO |
Версия 11:11, 14 января 2014
Задача: Мониторинг состояния внутренних линий и определение времены работы внутренних линий.
Задача становится актуальной, когда операторы системы не используют клиентских приложений, а установлены как "пользователь по умолчанию" для своего телефона. В базу данных Oktell информация о разрегистрации линии не заносится и проверка работы линий доступна только с помощью клиентского приложения (модуль "Мониторинг"), что является не очень удобным.
Следовательно, необходимо создать сценарий, который будет проверять состояние линий и вести статистику о времени работы каждой линии, а следовательно и пользователя системы. Сценарий выглядит следующим образом:
Структурно сценарий состоит из
- Цикла по внутренним SIP линиям. Блок взят из статьи Построковая обработка sql выборки в сценарии (Вариант 1)
- Определения статуса конкретной SIP линии. Блок взят из статьи Мониторинг состояния внешних линий
- Обновление статистики по работе линии
1. Компонент "Начальные параметры". Заданы параметры - начальное значение для поиска внутренних линий и текущая дата.
2. Компонент "Находим линию". Определяет следующую по порядку внутреннюю SIP линию по столбцу systemnumstr. В качестве выходных параметров запрос выдает res - результат запроса (1- найдена линия, 0 -не найдена), systemnumstr - номер внутренней линии.
declare @min int select @min = min(systemnumstr) from [oktell_settings].[dbo].[A_ServerSipLines] where systemnumstr>@systemnumstr_before if (@min is not null) select @systemnumstr=@min set @res=@@rowcount
Запрос использует таблицу:
- [oktell_settings].[dbo].[A_ServerSipLines] — столбец SystemNumStr показывает номера внутренних SIP линий, определенных в системе.
Однако вы также можете использовать таблицы:
- [oktell_settings].[dbo].[A_ServerUSBLines] — столбец SystemNumStr показывает номера внутренних Voip линий (гарнитура или usb телефон).
- [oktell_settings].[dbo].[A_ServerExtLines] — столбец SystemNumStr показывает номера внешних SIP линий
3. Компонент "Проверка на завершение". Определяет конец цикла (был осуществлен перебор всех линий). Сравнение переменной res с нулем.
4. Компонент "id_before = id_after". Переприсваивает переменную для поиска следующей sip линии на следующем цикле.
5. Компонент "Статус линии". Определяет состояние линии по ее номеру и записывает в переменную status.
6. Компонент "Идентификатор пользователя". Определяет пользователя, контролирующего линию ("Пользователь по умолчанию" или логически связанный пользователь), и записывает его в переменную user.
7. Компонент "Определяем пользователя по умолчанию". Используется SQL запрос, определяющий по идентификатору пользователя его имя.
select @name=name from a_users where ID =@id
8. Компонент "Определяем статус линии". В компоненте определяется состояние линии по ее статусу - включена или выключена. В сценарии, линия считается выключенной если ее статус = 1 ( не подключена) или 1024 (не определена). Более подробно по статусам вы можете прочитать Общие компоненты сценариев
9. Компонент "Линия включена". В компоненте происходит запись информации в таблицу работы линий. Если записи о линии нет, она будет создана. Если запись есть, то она будет обновлена.
ВНИМАНИЕ: В запросе делается предположение, что если линия на момент проверки работает, значит она работала все предыдущее время со времени последней проверки.
update Lines set Line=@line, status=@status, datetime= getdate(), online = online+ getdate()- [datetime] where date= @date and line=@line if (@@rowcount=0) insert into Lines (Line, status, date, online, offline, [datetime], [user]) values (@line, @status, @date, dateadd(mi, 0, '1990-01-01'), dateadd(mi, 0, '1990-01-01'), getdate(), @user)
10. Компонент "Линия выключена". Запрос аналогичен выше описанному SQL запросу, за исключением того, что время суммируется к столбцу offline.
11. Компонент "Оповещение". Происходит уведомление администратора системы о том, что внутренняя линия выключена.
В работе используется таблица Lines в [Oktell].[dbo].[Lines]. Запрос для создания таблицы (выполняется в SSMS)
USE [oktell] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Lines]( [Id] [int] IDENTITY(1,1) NOT NULL, [Line] [nvarchar](2000) NULL, [User] [nvarchar](2000) NULL, [Status] [nvarchar](2000) NULL, [Online] [datetime] NULL, [Offline] [datetime] NULL, [date] [datetime] NULL, [datetime] [datetime] NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO