Мониторинг состояния внешних линий — различия между версиями
м |
|||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 9: | Строка 9: | ||
1)Устанавливаем начальное значение для поиска линий = «0» | 1)Устанавливаем начальное значение для поиска линий = «0» | ||
2)Выполняем SQL запрос и находим первую линию у которой номер > чем начальное значение для поиска. | 2)Выполняем SQL запрос и находим первую линию у которой номер > чем начальное значение для поиска. | ||
− | 3)Если запрос выполнился, то определяем состояние. Если есть история по данной линии то модифицируем её при смене статуса в отдельной таблице или не выполняем никаких действий если статус не изменился. Если нет истории то сохраняем её и добавляем в отчет по подключенным\отключенным линиям. | + | 3)Если запрос выполнился, то определяем состояние. Если есть история по данной линии то модифицируем её |
+ | при смене статуса в отдельной таблице или не выполняем никаких действий если статус не изменился. | ||
+ | Если нет истории то сохраняем её и добавляем в отчет по подключенным\отключенным линиям. | ||
4)Меняем начальное значение для поиска линий на номер текущей линии. | 4)Меняем начальное значение для поиска линий на номер текущей линии. | ||
5) Повторяем пункты 1-5 до тех пор пока не определим состояние у всех внешних линий. | 5) Повторяем пункты 1-5 до тех пор пока не определим состояние у всех внешних линий. | ||
Строка 79: | Строка 81: | ||
Файл сценария:<br> | Файл сценария:<br> | ||
− | [ | + | [[Media:%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D1%85_%D0%BB%D0%B8%D0%BD%D0%B8%D0%B9.oscr|Мониторинг состояния внешних линий]] |
<FONT color="red">ВНИМАНИЕ!</FONT> Начиная с версии 2.8, поменять в компоненте "Получаем номер линии" название столбца systemnum на systemnumstr | <FONT color="red">ВНИМАНИЕ!</FONT> Начиная с версии 2.8, поменять в компоненте "Получаем номер линии" название столбца systemnum на systemnumstr | ||
− | <u>'''Дополнение:'''</u> Чтобы не перегружать сервер баз данных '''Oktell''' постоянными SQL-запросами, рекомендуется использовать глобальную переменную со списком всех | + | <u>'''Дополнение:'''</u> Чтобы не перегружать сервер баз данных '''Oktell''' постоянными SQL-запросами, рекомендуется использовать глобальную переменную со списком всех внешних линий и далее определять состояние, пользуясь полученным результатом. Подобный метод описан [[Перехват звонков из очереди]] |
Текущая версия на 11:17, 31 марта 2023
Цель: Получать оповещения при отключении\подключении внешних линий. При отключении\подключении внешней линии (в мониторинге отображается «Состояние» - серый\зеленый телефон) сценарий отправляет уведомления сотрудникам (возможно также например на 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-запросами, рекомендуется использовать глобальную переменную со списком всех внешних линий и далее определять состояние, пользуясь полученным результатом. Подобный метод описан Перехват звонков из очереди