Интерфейс IAuraTreeScriptingApi

Справка по скриптовому интерфейсу `IAuraTreeScriptingApi`.

Навигация для AI-first сценариев: см. AI Scripting Runtime, AI Auras Overview и AI Aura Entities. Там описаны навигация по дереву, сущности, регистрация и инфраструктура runtime.

IAuraTreeScriptingApi

IAuraTreeScriptingApi дает доступ к Aura Tree из скриптов. С его помощью можно работать с аурами, папками и деревьями поведения: либо безопасно искать их, либо получать напрямую и обрабатывать ошибки через исключения.

Интерфейс также предоставляет коллекции всех доступных аур, папок и behavior trees, а еще позволяет получать конкретные триггеры и действия из ауры по пути.

public interface IAuraTreeScriptingApi : IScriptingApi

Как работает поиск по пути

API поддерживает два варианта поиска:

  • Find...ByPath(...) — возвращает null, если объект не найден
  • Get...ByPath(...) — выбрасывает исключение, если объект не найден

Во всех случаях path может быть как абсолютным, так и относительным.

Свойства

Aura

Ссылка на ауру, в которой находится текущий скрипт, или null, если такой ауры нет.

IAuraAccessor Aura { get; }

Folder

Ссылка на папку, в которой находится текущий скрипт.

IFolderAccessor Folder { get; }

Folders

Содержит все папки в Aura Tree.

IObservableList<IFolderAccessor> Folders { get; }

Auras

Содержит все ауры в Aura Tree.

IObservableList<IAuraAccessor> Auras { get; }

BehaviorTrees

Содержит все деревья поведения в Aura Tree.

IObservableList<IBehaviorTreeAccessor> BehaviorTrees { get; }

Методы для аур

FindAuraByPath(string path)

Ищет ауру по пути. Возвращает null, если ничего не найдено.

IAuraAccessor FindAuraByPath(string path);

Пример:

csharp
var aura = AuraTree.FindAuraByPath("MyFolder/Aura1");
if (aura != null)
{
    Log.Info("Aura found!");
}
else
{
    Log.Info("Aura not found.");
}

GetAuraByPath(string path)

Получает ауру по пути. Если ничего не найдено, выбрасывает исключение.

IAuraAccessor GetAuraByPath(string path);

Пример:

csharp
try
{
    var aura = AuraTree.GetAuraByPath("MyFolder/Aura1");
    Log.Info("Aura found!");
}
catch (NotFoundException)
{
    Log.Info("Aura not found.");
}

Методы для папок

FindFolderByPath(string path)

Ищет папку по пути. Возвращает null, если ничего не найдено.

IFolderAccessor FindFolderByPath(string path);

Пример:

csharp
var folder = AuraTree.FindFolderByPath("MyProject/Folders/Folder1");
if (folder != null)
{
    Log.Info("Folder found!");
}
else
{
    Log.Info("Folder not found.");
}

GetFolderByPath(string path)

Получает папку по пути. Если ничего не найдено, выбрасывает исключение.

IFolderAccessor GetFolderByPath(string path);

Пример:

csharp
try
{
    var folder = AuraTree.GetFolderByPath("MyProject/Folders/Folder1");
    Log.Info("Folder found!");
}
catch (NotFoundException)
{
    Log.Info("Folder not found.");
}

Методы для behavior trees

FindBehaviorTreeByPath(string path)

Ищет дерево поведения по пути. Возвращает null, если ничего не найдено.

IBehaviorTreeAccessor FindBehaviorTreeByPath(string path);

Пример:

csharp
var behaviorTree = AuraTree.FindBehaviorTreeByPath("MyProject/BehaviorTrees/Tree1");
if (behaviorTree != null)
{
    Log.Info("Behavior tree found!");
}
else
{
    Log.Info("Behavior tree not found.");
}

GetBehaviorTreeByPath(string path)

Получает дерево поведения по пути. Если ничего не найдено, выбрасывает исключение.

IBehaviorTreeAccessor GetBehaviorTreeByPath(string path);

Пример:

csharp
try
{
    var behaviorTree = AuraTree.GetBehaviorTreeByPath("MyProject/BehaviorTrees/Tree1");
    Log.Info("Behavior tree found!");
}
catch (NotFoundException)
{
    Log.Info("Behavior tree not found.");
}

Доступ к триггерам и действиям

Эти методы позволяют получить триггер или действие нужного типа из ауры по пути.

GetTriggerByPath(string path)

Получает триггер указанного типа.

Выбрасывает ArgumentException, если:

  • триггер указанного типа не найден по заданному пути
  • в ауре вообще нет триггеров
public TTrigger GetTriggerByPath<TTrigger>(string path) where TTrigger : IAuraTrigger;

Параметр типа:

  • TTrigger — тип триггера, который нужно получить

Пример:

csharp
try
{
    var trigger = AuraTree.GetTriggerByPath<IImageSearchTrigger>("MyAuraPath");
    Log.Info($"Trigger found: {trigger.Name}");
}
catch (ArgumentException ex)
{
    Log.Info(ex.Message);
}

GetActionByPath(string path)

Получает действие указанного типа.

Выбрасывает ArgumentException, если:

  • действие указанного типа не найдено по заданному пути
  • в ауре вообще нет действий
public TAction GetActionByPath<TAction>(string path) where TAction : IAuraAction;

Параметр типа:

  • TAction — тип действия, которое нужно получить

Пример:

csharp
try
{
    var action = AuraTree.GetActionByPath<ISendSequenceAction>("MyAuraPath");
    Log.Info($"Action found: {action.Name}");
}
catch (ArgumentException ex)
{
    Log.Info(ex.Message);
}