Мониторинг состояния внешних линий

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

Наверх

Цель: Получать оповещения при отключении\подключении внешних линий. При отключении\подключении внешней линии (в мониторинге отображается «Состояние» - серый\зеленый телефон) сценарий отправляет уведомления сотрудникам (возможно также например на e-mail).

Text check lines.jpg

Алгоритм проверки:

1)Устанавливаем начальное значение для поиска линий = «0»
2)Выполняем SQL запрос и находим первую линию у которой номер > чем начальное значение для поиска.
3)Если запрос выполнился, то определяем состояние. Если есть история по данной линии то модифицируем её 
при смене статуса в отдельной таблице или не выполняем никаких действий если статус не изменился. 
Если нет истории то сохраняем её и добавляем в отчет по подключенным\отключенным линиям.
4)Меняем начальное значение для поиска линий на номер текущей линии.
5) Повторяем пункты 1-5 до тех пор пока не определим состояние у всех внешних линий.
6)Проверяем есть ли в отчете подключенные\отключенные линии, если есть то выводим их в разных уведомлениях.

ВНИМАНИЕ! Проверка происходит по всем внешним линиям, которые находятся в таблице [oktell_settings].[dbo].[A_ServerExtLines].
ВНИМАНИЕ! Статусы 2 и 1024 интерпретируются как состояние 1 (линия не подключена). Список кодов и значений см. ниже.

Далее переходим «Администрирование» - «Общие настройки» - вкладка «Служебные задачи» - «Добавить» - выбираем для запуска данный сценарий и указываем необходимый период запуска - «Сохранить» - активируем служебную задачу.


SQL запросы для создания таблиц в БД Oktell:

История изменения статусов:

USE [oktell]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[table_line_state_history](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[line_num] [nvarchar](2000) NULL,
	[line_state] [nvarchar](2000) NULL,
	[line_date] [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


Описание состояния линии по коду:

USE [oktell]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[table_line_state](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[code] [nvarchar](2000) NULL,
	[meaning] [nvarchar](2000) 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

Данные для таблицы [dbo].[table_line_state_history]:

code	meaning
1	Не подключена
2	Выключена
4	Готова
8	Трубка поднята
16	Входящий звонок
32	Скоммутирована
64	Ожидание
128	Флеш
256	Не используется
512	Занято
1024	Неопределено
2048	Зарезервирована
4096	Зарезервирована задачей


Файл сценария:
Мониторинг состояния внешних линий

ВНИМАНИЕ! Начиная с версии 2.8, поменять в компоненте "Получаем номер линии" название столбца systemnum на systemnumstr

Дополнение: Чтобы не перегружать сервер баз данных Oktell постоянными SQL-запросами, рекомендуется использовать глобальную переменную со списком всех внешних линий и далее определять состояние, пользуясь полученным результатом. Подобный метод описан Перехват звонков из очереди