Определение времени работы внутренних линий — различия между версиями
Строка 7: | Строка 7: | ||
[[Файл:РаботаВнутреннихЛиний-001.png | center]] | [[Файл:РаботаВнутреннихЛиний-001.png | center]] | ||
+ | Структурно сценарий состоит из | ||
+ | * Цикла по внутренним 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 | ||
+ | |||
+ | [[Файл:РаботаВнутреннихЛиний-002.png]] | ||
+ | |||
+ | |||
+ | 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 (не определена). Более подробно по статусам вы можете прочитать [[Общие_компоненты_сценариев#.D0.A1.D1.82.D0.B0.D1.82.D1.83.D1.81_.D0.BE.D0.B1.D1.8A.D0.B5.D0.BA.D1.82.D0.B0 | Общие компоненты сценариев]] | ||
Строка 18: | Строка 53: | ||
* [oktell_settings].[dbo].[A_ServerExtLines] — столбец SystemNumStr показывает номера внешних SIP линий | * [oktell_settings].[dbo].[A_ServerExtLines] — столбец SystemNumStr показывает номера внешних SIP линий | ||
− | |||
− | |||
− | |||
− |
Версия 10:59, 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
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 (не определена). Более подробно по статусам вы можете прочитать Общие компоненты сценариев
В данной статье обсуждается вопрос о работе линий, работающих по SIP. Сценарий использует таблицу:
- [oktell_settings].[dbo].[A_ServerSipLines] — столбец SystemNumStr показывает номера внутренних SIP линий, определенных в системе.
Вы можете использовать также:
- [oktell_settings].[dbo].[A_ServerUSBLines] — столбец SystemNumStr показывает номера внутренних Voip линий (гарнитура или usb телефон).
- [oktell_settings].[dbo].[A_ServerExtLines] — столбец SystemNumStr показывает номера внешних SIP линий