Примеры использования SDK на языке Python

Примеры на этой странице используют Python, как самый простой язык программирования. В отличие от примеров, описанных в "Руководстве администратора", эти примеры нужно запускать как отдельную программу. Для запуска требуется установить Python.

Хотя SDK предназначен для использования в программах, все функции работают из браузера. Более того, в комментариях SDK подсказывает какие еще функции можно вызвать, вам остается только скопировать пример в строку адреса. Испытывайте все функции с помощью браузера!

Функции SDK требуют пароль к SDK или идентификатор сессии. В примерах заменяйте "123" на ваш пароль.

/login позволяет получить идентификатор сессии, зная пароль. Для большинства функций SDK не имеет значения, передан идентификатор сессии или сразу пароль. Только функции получения событий меняют свое поведение: при наличии пароля отдают все последние события, а при наличии идентификатора сессии только новые события.

/objects позволяет получить дерево объектов, найти объекты внутри сервера, например все каналы.

import urllib, re, ssl
s = urllib.urlopen("https://127.0.0.1:8080/objects/?password=12345", context=ssl._create_unverified_context()).read()
for x in s.replace("\n", "").split("{"):
    m = re.search('"name"\s*\:\s*"(.*?)".*Channel', x)
    if not m: continue
    print m.group(1)

Пример убирает из прочитанной строки все символы перевода строки "\n", разбивает результат на список строк по разделителю "{", в каждой строке из списка ищет "name" : "ИМЯ" ... Channel с помощью регулярного выражения. Если вхождение нашлось, печатает ИМЯ.

/objects/идентификатор.объекта позволяет просмотреть состояние объекта. Возможные состояния объекта можно посмотреть в редакторе правил, а также в описании класса.

/objects/идентификатор.объекта/метод?param1=val1&param2=val2 Позволяет вызвать метод объекта. Идентификатор объекта можно найти в дереве объектов. Имена методов, параметры можно найти в редакторе правил или в описании класса.

/classes/идентификатор.класса позволяет просмотреть возможные состояния объектов данного класса, а также доступные методы, включая типы и имена параметров.

/settings/папка/поле позволяет читать и писать настройки. Настройки в сервере разбиты по папкам, в которых есть поля одного из трех типов: integer, real, string. Имена папок, полей можно посмотреть, нажав F4 в интерфейсе администратора. Такой режим позволяет просматривать и редактировать настройки в обход диалогов. Этот режим позволяет поэкспериментировать, как ведет себя система при тех или иных изменениях в настройках.

Если имя поля в запросе не указано, SDK вернет список доступных полей и подпапок.

/events позволяет получать системные события. В ответе "timestamp" использует UNIX-время в микросекундах. Возможные типы событий можно посмотреть в редакторе правил. Поле "origin" содержит идентификатор объекта. Имя и другие свойства объекта можно получить из дерева объектов. В некоторых событиях содержаться дополнительные поля, например событие "Connected to %1 under %2" содержит два поля "server_address" и "under_username".

import urllib, re
s = urllib.urlopen("https://localhost:8080/login?password=123").read()
sid = re.search('"sid"\s*:\s*"(.*?)"', s).group(1)
print "my session: %s" % sid
while 1:
    s = urllib.urlopen("https://127.0.0.1:8085/events?sid=%s" % sid).read()
    print s

Пример получает и распечатывает события по мере того как они приходят.

/pos_events аналогично позволяет получать события POS. Формат события полностью аналогичен событию ActivePOS в скриптах.

/lpr_events аналогично позволяет получать события AutoTRASSIR. Формат события полностью аналогичен событию AutoTRASSIR в скриптах.