Динамическое управление картой сети
Компонент Статус объекта позволяет управлять составом карты сети с помощью JSON-форматированных команд. Это может быть полезно для решения интеграционных задач, в многосерверных решениях с внешней логикой управления, а также в проектах с постоянно изменяющимися параметрами карты сети.
Определенным образом формируемые параметры позволяют:
- Добавлять шлюзы (операция gate-add).
- Добавлять потоки (операция stream-add).
- Добавлять телефоны (операция phone-add).
- Удалять шлюзы со всеми потоками (операция gate-del).
- Удалять отдельные потоки (операция stream-add).
- Удалять отдельные телефоны (операция phone-add).
- Изменять параметры шлюзов (операция gate-set).
- Изменять параметры потоков (операция stream-set).
- Изменять параметры телефонов (операция phone-set).
- Удалять единовременно все динамические объекты (команда clear).
Добавленные динамические объекты не появляются среди отображаемых объектов в карте сети, но доступны в мониторинге линий, параметрах аппаратуры, и прочих модулях системы, связанных с исполнением в реальном времени.
Жизненный цикл динамических объектов протекает от момента создания до момента удаления или перезапуска системы. Таким образом при необходимости формирования постоянных настроек карты сети с помощью динамических объектов, необходимо реализовывать однократное исполнение служебной задачи, загружающей требуемые динамические объекты всякий раз после перезапуска системы. Гарантировать однократность можно в том числе с помощью глобальных переменных сценариев.
После исполнения любой операции, связанной с динамическими объектами, автоматически происходит перезагрузка сервера состояний. Это затратная операция. В этой связи настоятельно рекомендуется комбинировать все операции в один запрос, и не исполнять их в цикле одну за другой.
При создании динамических объектов, создаются динамические линии с идентификаторами, задаваемыми в запросе. Формирование этих уникальных идентификаторов возложено на администратора, создающего сценарий, поскольку привязка к ним может потребоваться в бизнес-логике реализуемого процесса для решения внешних задач. Ожидается, что идентификаторы будут уникальны.
Создание динамических потоков в шлюзах может сопровождаться автоматическим созданием направления, состоящего из всех вновь-созданных линий потока.
При создании объектов и изменении их параметров могут указываться как настройки из «Карты сети», так и настройки из «Параметров аппаратуры».
Лицензирование
При добавлении динамических объектов расходуются свободные лицензии на соответствующие линии. При удалении объектов лицензии высвобождаются. Таким образом можно использовать конкурентный механизм в отличие от статической карты сети.
В случае, если после добавления очередного объекта итоговое количество линий превосходит количество линий в лицензии, сервер произведет стандартную процедуру отключения части линий по своему усмотрению (преимущественно выключенные, неактивные).
Формат команд
Команды управления динамической картой сети передаются в строковом виде в формате JSON.
Структура команд, передаваемых серверу через компонент сценария в общем виде выглядит следующим образом:
{ "actions":[ {...}, ... {...} ] }
Команда полной очистки динамических объектов
{ "method":"clear" }
Каждая команда представляет собой одну или несколько операций, возможно различных. В простейшем случае в одной команде содержится одна операция. В каждой операции может присутствовать один или несколько объектов. Так, операция добавления шлюзов может содержать мета-данные нескольких шлюзов, операция добавления потоков - несколько потоков, операция добавления телефонов - несколько SIP-телефонов. То же самое с удалением и изменением параметров.
Структура одной операции добавления шлюза:
{ "method":"gate-add", "gates":[ {...}, ... {...} ] }
В свойстве gates могут перечисляться несколько шлюзов. Каждый шлюз представляет собой совокупность настроек: обязательных и необязательных параметров. Администратор, производящий настройку, должен гарантировать уникальность идентификаторов, а также отличия в настройках шлюзов.
При добавлении шлюзов можно сразу в той же операции определить потоки, соответствующие каждому шлюзу. Для этого среди свойств шлюза необходимо размещение свойства streams с информацией, эквивалентной операции создания потока. Управление отдельными потоками динамического шлюза может производиться и позже.
Структура операции изменения шлюза отличается значением ключа method (gate-set), а также невозможностью одновременно изменять параметры потоков внутри шлюза и изменять тип регистрации (regtype).
Операция удаления шлюза (gate-del) требует указания среди свойств шлюза только идентификатора, остальное игнорируется. При удалении шлюза удаляются все его потоки, линии и динамические направления, с ними связанные.
Структура операций
Структура одной операции добавления потока:
{ "method":"stream-add", "gates":[ { "id":"_guid_шлюза_", "streams":[ {...}, ... {...} ] }, ... {...} ] }
В свойстве gates могут перечисляться несколько шлюзов. Каждый шлюз должен содержать идентификатор и набор добавляемых потоков (streams), другие его свойства игнорируются. Создаваемые потоки привязываются к содержащим их шлюзам. Каждый поток в наборе представляет собой совокупность настроек: обязательных и необязательных параметров.
Структура операции изменения потока отличается значением ключа method (stream-set).
Операция удаления потока (stream-del) требует указания среди свойств шлюза только идентификатора, остальное игнорируется. При удалении потока удаляются динамическое направление и все линии, с ним связанные.
Структура одной операции добавления SIP-телефона:
{ "method":"phone-add", "phones":[ { "id":"_guid_телефона_", ... }, ... {...} ] }
В свойстве phones могут перечисляться несколько телефонов. Каждый телефон представляет собой совокупность настроек: обязательных и необязательных параметров. Администратор, производящий настройку, должен гарантировать уникальность идентификаторов, а также уникальность и сложность авторизационных параметров телефонов.
Структура операции изменения телефона отличается значением ключа method (phone-set).
Операция удаления потока (phone-del) требует указания среди свойств шлюза только идентификатора, остальное игнорируется. При удалении потока удаляются динамическое направление и все линии, с ним связанные.
Свойства объектов
Шлюз характеризуется
Обязательные параметры:
- "id":"01010101-0101-0101-0101-010101010101"
- "name":"DynamicGate"
- "regtype":2
- "address":"192.168.0.5:5060"
- "sipproxyaddress":"192.168.0.5:5060"
Необязательные параметры:
- "expire":300
- "freegate":false
- "aliases":["Domain1", "Domain2"]
- "def-caller-id":"3"
Дополнительные параметры SIP:
- "disabled-answer":"500"