Retrieving EventTypeGroup but not getting any EventTypes from any of the EventTypeGroup

Hi there, please assist.

Looking at my code below, I am able to retrieve all the EventTypeGroups of my server but I am reading 0 for eventTypes when I debug.

The plan is to create a drop down of the eventTypeGroup and when I select one of the items from that dropdown I should then retrieve all the eventTypes of that Group.

ManagementServer managementServer = new ManagementServer(EnvironmentManager.Instance.MasterSite);

AlarmDefinitionFolder alarmFolder = managementServer.AlarmDefinitionFolder;

ServerTask task = alarmFolder.AddAlarmDefinition();

if (task.State == StateEnum.Success)

{

List<VideoOS.ConfigurationApi.ClientService.ValueTypeInfo> EventTypeGroups = task.GetValueTypeInfoList(“EventTypeGroup”);

foreach (var eventTypeGroup in EventTypeGroups)

{

Debug.WriteLine($"EventTypeGroup: {[eventTypeGroup.Name](https://eventTypeGroup.Name "https://eventTypeGroup.Name")}");

// Set the property to filter EventType by this group

task.SetProperty("EventTypeGroup", eventTypeGroup.Value);

task.ValidateItem();

// Get the EventType list for the current EventTypeGroup

List<VideoOS.ConfigurationApi.ClientService.ValueTypeInfo> eventTypes = task.GetValueTypeInfoList("EventType");

Debug.WriteLine($"EventTypes for {[eventTypeGroup.Name](https://eventTypeGroup.Name "https://eventTypeGroup.Name")}:");

foreach (var eventType in eventTypes)

{

  Debug.WriteLine($" - {[eventType.Name](https://eventType.Name "https://eventType.Name")}");

}

}

}

EventTypeGroups does not only include EventTypeGroupFolder.EventTypeGroups but also UserDefinedEventFolder.UserDefinedEvents, AnalyticsEventFolder.AnalyticsEvents and GenericEventFolder.GenericEvents

I think this is the cause for what you are observing. This snippet of code might illustrate what I mean:

private void GetEvents()
{
    ManagementServer mgt = new ManagementServer(EnvironmentManager.Instance.MasterSite.ServerId);
    var eventTypeGroups = mgt.EventTypeGroupFolder.EventTypeGroups;
    foreach (var ev in eventTypeGroups)
    {
        label1.Text += ev.DisplayName + Environment.NewLine;
        if (ev.EventTypeFolder != null && ev.EventTypeFolder.EventTypes != null)
        {
            label1.Text += $"    {ev.EventTypeFolder.EventTypes.Count} events \n";
        }
        else
        {
            label1.Text += "    !  No event types \n";
            if (ev.UserDefinedEventFolder != null && ev.UserDefinedEventFolder.UserDefinedEvents != null)
            {
                label1.Text += $"    {ev.UserDefinedEventFolder.UserDefinedEvents.Count} user-defined events \n";
            }
            else
            {
                label1.Text += "    !  No user defined events \n";
            }
            if (ev.AnalyticsEventFolder != null && ev.AnalyticsEventFolder.AnalyticsEvents != null)
            {
                label1.Text += $"    {ev.AnalyticsEventFolder.AnalyticsEvents.Count} analytics events \n";
            }
            else
            {
                label1.Text += "    !  No analytics events \n";
            }
            if (ev.GenericEventFolder != null && ev.GenericEventFolder.GenericEvents != null)
            {
                label1.Text += $"    {ev.GenericEventFolder.GenericEvents.Count} generic events \n";
            }
            else
            {
                label1.Text += "    !  No generic events \n";
            }
        } 
    }
}

Hi Bo

Thank you very much for the response. However, this solution you provided gives the same EventTypeGroups and EventTypes as Milestone provides on the api /API/rest/v1/eventTypeGroups(groups) and /API/rest/v1/eventTypes.

For our plugin we need to detect various events and some are in the ‘Systems Events’ event group, but this group is not in the API or the solution that you provided.

In Systems Events, I need to listen to the events ‘Not Responding’ and ‘Responding’ .

Is there perhaps another method that I can use to read these events?