Мониторинг состояния внешних линий — различия между версиями
Строка 9: | Строка 9: | ||
1)Устанавливаем начальное значение для поиска линий = «0» | 1)Устанавливаем начальное значение для поиска линий = «0» | ||
2)Выполняем SQL запрос и находим первую линию у которой номер > чем начальное значение для поиска. | 2)Выполняем SQL запрос и находим первую линию у которой номер > чем начальное значение для поиска. | ||
− | 3)Если запрос выполнился, то определяем состояние. Если есть история по данной линии то модифицируем её при смене статуса в отдельной таблице или не выполняем никаких действий если статус не изменился. Если нет истории то сохраняем её и добавляем в отчет по подключенным\отключенным линиям. | + | 3)Если запрос выполнился, то определяем состояние. Если есть история по данной линии то модифицируем её |
+ | при смене статуса в отдельной таблице или не выполняем никаких действий если статус не изменился. | ||
+ | Если нет истории то сохраняем её и добавляем в отчет по подключенным\отключенным линиям. | ||
4)Меняем начальное значение для поиска линий на номер текущей линии. | 4)Меняем начальное значение для поиска линий на номер текущей линии. | ||
5) Повторяем пункты 1-5 до тех пор пока не определим состояние у всех внешних линий. | 5) Повторяем пункты 1-5 до тех пор пока не определим состояние у всех внешних линий. |
Версия 08:03, 12 января 2015
Цель: Получать оповещения при отключении\подключении внешних линий. При отключении\подключении внешней линии (в мониторинге отображается «Состояние» - серый\зеленый телефон) сценарий отправляет уведомления сотрудникам (возможно также например на e-mail).
Алгоритм проверки:
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-запросами, рекомендуется использовать глобальную переменную со списком всех внешних линий и далее определять состояние, пользуясь полученным результатом. Подобный метод описан Перехват звонков из очереди