Zenitel.ConnectPro.SDK
1.2.7
dotnet add package Zenitel.ConnectPro.SDK --version 1.2.7
NuGet\Install-Package Zenitel.ConnectPro.SDK -Version 1.2.7
<PackageReference Include="Zenitel.ConnectPro.SDK" Version="1.2.7" />
<PackageVersion Include="Zenitel.ConnectPro.SDK" Version="1.2.7" />
<PackageReference Include="Zenitel.ConnectPro.SDK" />
paket add Zenitel.ConnectPro.SDK --version 1.2.7
#r "nuget: Zenitel.ConnectPro.SDK, 1.2.7"
#:package Zenitel.ConnectPro.SDK@1.2.7
#addin nuget:?package=Zenitel.ConnectPro.SDK&version=1.2.7
#tool nuget:?package=Zenitel.ConnectPro.SDK&version=1.2.7
Zenitel Connect Pro SDK
Table of Contents
1. Description
The Zenitel Connect Pro SDK is a comprehensive toolset for integrating Zenitel's communication systems, including intercoms, public address systems, and critical communication solutions, into .NET-based applications. It supports both legacy systems and modern frameworks, offering flexibility, extensibility, and powerful integration capabilities.
2. Core Components
The Zenitel Connect Pro SDK is a comprehensive library built for .NET Framework 4.8 and netstandard 2.1, ensuring compatibility with legacy and modern systems. It is designed as an SDK-style library to support robust integration with third-party applications.
SharedComponents
The SharedComponents library is the foundation of the SDK, offering a rich set of tools, utilities, functionalities, and models that are used across all projects. This shared codebase simplifies development by providing reusable components and a consistent structure, making integration and maintenance efficient.
Key Features:
Debug Utilities:
- Provide centralized logging and monitoring capabilities to ensure application behavior is tracked effectively. Utilities like
Debug.LogandSystemMonitorassist in error tracking, system health monitoring, and performance logging.
- Provide centralized logging and monitoring capabilities to ensure application behavior is tracked effectively. Utilities like
Collections:
- Offer a robust framework for managing system entities, including devices, calls, groups, and directory numbers, ensuring seamless data organization and retrieval.
Events:
- Enable a powerful event-driven programming model that handles notifications, state changes, and UI updates. This simplifies interactions between various SDK components.
Enums:
- Define constants and system states, ensuring consistency and reducing hard-coded values across the SDK.
Interfaces:
- Provide abstractions such as
ICamerato ensure modularity and extensibility within the system.
- Provide abstractions such as
Models:
- Represent the core entities of the system, including configurations, devices, calls, and audio events. These models offer a structured approach to data handling, allowing developers to interact with system objects efficiently. Each model is designed to reflect real-world entities with properties and behaviors essential for SDK operations.
Tools:
- Include various utilities that enhance system reliability and developer productivity:
AssemblyChecker: Verifies compatibility between assemblies.Cryptography: Provides secure data handling with encryption tools.ErrorLogger: Offers centralized exception logging with detailed error metadata.IconManager: Handles application icons for consistent UI presentation.ObjectConverter: Simplifies serialization and data conversion.ProcessManager: Manages system-level processes and optimizes resource usage.
- Include various utilities that enhance system reliability and developer productivity:
WampClient
The WampClient is a critical communication layer built using the WampSharp library. It is fully integrated into the SDK to enable real-time messaging and communication between system components.
Key Features:
Forked and Optimized for Zenitel Connect Pro SDK:
- Custom modifications to suit the SDK's requirements.
- Provides enhanced stability and performance for WAMP-based communication.
Target Frameworks:
- Designed for both .NET Framework 4.8 and netstandard 2.1, ensuring seamless integration with diverse applications.
SharedComponents Integration:
- Works seamlessly with the shared library to handle:
- Device communication.
- Call events and synchronization.
- Audio analytics and event processing.
- Broadcasting and access control.
- Works seamlessly with the shared library to handle:
Integration Modules
The Integration Modules are backend libraries. These modules implement the shared code and WampClient to provide the following features:
Access Control:
- Securely manage access to restricted areas, including unlocking doors and validating permissions.
Audio Analytics:
- Integrates with third-party audio detection systems to process audio events like gunshots or glass breaking.
Device Management:
- Handles device registration, state updates, and interactions.
Call Management:
- Manages active and queued calls, including prioritization and operator interactions.
Broadcasting:
- Enables broadcasting of audio messages and announcements to groups or devices.
Key Notes
SDK Architecture: The entire project is structured as an SDK-style library, making it flexible and extensible for third-party integrations.
Target Frameworks: All components of the SDK, including SharedComponents, WampClient, and Integration Modules, are developed for:
- .NET Framework 4.8: For compatibility with enterprise and legacy systems.
- netstandard 2.1: For cross-platform support and modern .NET applications.
Comprehensive Shared Code: The shared library (
SharedComponents) includes:- Core utilities (e.g., debugging, logging, cryptography).
- Interfaces for modular development.
- Tools for process management, data conversion, and more.
Here is the updated "Getting Started" section with the recommended improvements:
3. Getting Started
System Requirements
Before setting up the Zenitel Connect Pro SDK, ensure that your development environment meets the following requirements:
- Operating System: Windows 10/11 (64-bit)
- .NET Framework: 4.8 or higher
- .NET Standard: 2.1 compatibility for cross-platform support
- Development Tools: Visual Studio 2019 or later (recommended)
🛠 Note: The SDK includes all required dependencies, including WampSharp, so no additional package installations are necessary.
Installation Instructions
You can install the Zenitel Connect Pro SDK using one of the following methods:
1. Install via NuGet (Recommended)
Run the following command in the NuGet Package Manager Console:
Install-Package Zenitel.ConnectPro.SDK
2. Manual Installation
- Clone the repository or download the package.
- Locate the compiled Zenitel.ConnectPro.SDK.dll files in the
binfolder. - Reference the Zenitel.ConnectPro.SDK.dll in your project.
Build Instructions
To build the SDK from source:
- Clone the repository:
git clone https://github.com/Zenitel/ConnectProSDK.git cd ConnectProSDK - Open the solution file (
Zenitel.ConnectPro.sln) in Visual Studio. - Ensure the target framework is set to .NET Framework 4.8 or .NET Standard 2.1.
- Build the solution (
Ctrl + Shift + B).
Basic Configuration
Once installed, initialize and configure the Zenitel Connect Pro SDK as follows:
// Recommended: Use Core as a Singleton
public static class CoreInstance
{
private static readonly Lazy<ConnectPro.Core> _coreInstance = new(() =>
{
var core = new ConnectPro.Core();
core.Configuration.ServerAddr = "169.254.1.5";
core.Configuration.Port = "8087";
core.Configuration.UserName = "admin";
core.Configuration.Password = "password";
core.Start();
core.ConnectionHandler?.OpenConnection();
return core;
});
public static ConnectPro.Core Instance => _coreInstance.Value;
}
// Access the Core instance
var core = CoreInstance.Instance;
🔹 Ensure the credentials are correct before calling core.Start().
🔹 Replace default values (169.254.1.5, 8087, admin, password) with actual server credentials.
⚠️ Important Note on Core Usage
- It is strongly recommended to use the Core as a singleton to maintain a consistent state throughout the application.
- One core instance should be used per Zenitel Connect Pro connection.
- Avoid creating multiple instances, as this can lead to unexpected behavior and connection issues.
3. Usage Instructions
Before diving into the SDK usage, it's essential to understand the Core object, which serves as the central static entry point for accessing all major functionalities.
1. The Core Object – The Static Entry Point
The SDK is designed around a static Core object (CoreHandler.Core), which acts as a singleton-style entry point for accessing all major components, including handlers, collections, events, and configurations. This eliminates the need for manually instantiating multiple service objects.
Core Components of CoreHandler.Core:
CoreHandler.Core.Configuration: Holds global SDK settings.CoreHandler.Core.ConnectionHandler: Manages WAMP connections.CoreHandler.Core.Events: Handles all SDK-wide events.CoreHandler.Core.CallHandler: Manages active and queued calls.CoreHandler.Core.DeviceHandler: Handles device registration and retrieval.CoreHandler.Core.AccessControlHandler: Manages access control operations.CoreHandler.Core.BroadcastingHandler: Controls audio messaging and group broadcasts.CoreHandler.Core.Collection: Provides access to dynamically updated data structures.CoreHandler.Core.Log: Centralized logging and debugging.
Since CoreHandler.Core is a static reference, all SDK interactions rely on it, ensuring global availability throughout the application.
Example Usage of CoreHandler.Core
// Accessing the active call list
var activeCalls = CoreHandler.Core.Collection.ActiveCalls;
// Posting a new call
CoreHandler.Core.CallHandler.PostCall("1001", "1002", "setup", true);
// Opening a door through Access Control
CoreHandler.Core.AccessControlHandler.OpenDoor(selectedDevice);
// Checking Connection Status
bool isConnected = CoreHandler.Core.ConnectionHandler.IsConnected;
This static architecture ensures centralized control, reducing the need for multiple object instances and providing optimized performance.
2. Operator Directory Number Must Be Set Before Performing Any Actions
After the connection is established and devices are retrieved, the operator's directory number must be set before any action (such as placing calls, sending group messages, or using access control).
Failure to set this value will prevent call initiation and other critical operations.
Setting the Operator's Directory Number
CoreHandler.Core.Configuration.OperatorDirNo = "1001";
✅ Set it only after the connection is established and devices are available.
🚨 Do not attempt to place calls or send messages before setting this value.
3. Dynamic Data Handling (Collections Are Auto-Updated)
The SDK follows an event-driven architecture, meaning all collections are updated automatically when changes occur in Zenitel Connect Pro.
Device Collection (Auto-Populated)
- When a connection is established, all registered devices are automatically retrieved and added to the collection.
- No work is required from the developer to fetch or refresh devices.
- If a device is added, removed, renamed, or moved, the collection updates automatically.
// Retrieve devices (already auto-populated)
var devices = CoreHandler.Core.Collection.RegisteredDevices;
Applies to All Collections
The same auto-update principle applies to:
- Active Calls
- Queued Calls
- Groups
- Audio Messages
- Directory Numbers
Whenever changes occur inside Zenitel Connect Pro, the SDK syncs the updates automatically.
4. Exception Handling with OnExceptionThrown (Central Logging)
The SDK provides a centralized exception handling mechanism using OnExceptionThrown.
- Developers do not need to manually handle exceptions inside handlers or event listeners.
- Any unexpected errors automatically trigger
OnExceptionThrown, allowing for custom log handling.
Example: Implementing a Custom Exception Logger
CoreHandler.Core.Events.OnExceptionThrown += (sender, ex) =>
{
Debug.Log($"Error: {ex.Message}");
MessageBox.Show("An error occurred: " + ex.Message);
};
This approach ensures centralized exception logging without modifying individual components.
5. Core Functionalities & How to Use Them
The SDK provides modular components that allow developers to interact with devices, calls, audio analytics, access control, and event-driven programming.
A. Device Management
Retrieve Registered Devices
// Devices are automatically populated when connected to Zenitel Connect Pro.
var devices = CoreHandler.Core.Collection.RegisteredDevices;
Call a Selected Device
Task.Run(async () =>
await CoreHandler.Core.CallHandler.PostCall(
CoreHandler.Core.Configuration.OperatorDirNo,
selectedDevice.dirno,
"setup"
)
);
Perform a Tone Test on a Device
CoreHandler.Core.DeviceHandler.InitiateToneTest(selectedDevice.dirno, "3");
B. Call Handling
Initiate a Call
CoreHandler.Core.CallHandler.PostCall("1001", "1002", "setup", true);
Listen for Active Call Changes
CoreHandler.Core.Events.OnActiveCallListValueChange += HandleActiveCallListChange;
End an Active Call
CoreHandler.Core.CallHandler.DeleteCall(device.dirno);
Answer a Queued Call
Task.Run(async () => await CoreHandler.Core.CallHandler.AnswerQueuedCall(queuedCall));
C. Audio Analytics
Process Audio Events
CoreHandler.Core.Events.AudioAnalytics.AudioEventDetected += HandleAudioEventDetection;
public void HandleAudioEventDetection(object sender, AudioEventDetected audioEvent)
{
Console.WriteLine($"Audio event detected: {audioEvent.EventType} at {audioEvent.Time}");
}
D. Broadcasting Messages
Retrieve Groups and Audio Messages
Task.Run(async () =>
{
await CoreHandler.Core.BroadcastingHandler.RetrieveGroups();
await CoreHandler.Core.BroadcastingHandler.RetrieveAudioMessages();
});
Play an Audio Message
CoreHandler.Core.BroadcastingHandler.PlayAudioMessage(audioMessage, targetGroup);
Stop an Audio Message
CoreHandler.Core.BroadcastingHandler.StopAudioMessage(audioMessage);
E. Access Control Management
Open a Door for a Device
CoreHandler.Core.AccessControlHandler.OpenDoor(selectedDevice);
F. GPIO (General Purpose Input/Output) Management
The SDK provides full support for monitoring and controlling GPIO (General Purpose Input/Output) lines on Zenitel devices. This includes both GPI (inputs, e.g., door sensors, buttons) and GPO (outputs, e.g., relays, LEDs).
GPIO state is managed per-device through the Device.Gpio property, which exposes a DeviceGpio runtime model. This model:
- Automatically subscribes to real-time GPI/GPO change events via WAMP.
- Loads an initial snapshot of all GPIO points when the device is retrieved.
- Provides methods to activate or deactivate GPO outputs.
Architecture Overview
| Component | Description |
|---|---|
DeviceGpio |
Per-device runtime model exposing Inputs, Outputs, and a Changed event. |
GpioPoint |
Represents a single GPIO line with Id, Direction, State, UpdatedUtc, and RawState. |
GpioDirection |
Enum: Gpi (input) or Gpo (output). |
GpioState |
Enum: Unknown, Inactive (low), or Active (high). |
IGpioTransport |
Transport abstraction implemented by WampGpioTransport. |
WampGpioTransport |
WAMP-based implementation that subscribes to com.zenitel.device.gpi and com.zenitel.device.gpo topics. |
Accessing GPIO State for a Device
GPIO data is automatically populated when devices are retrieved. Access it through the Device.Gpio property:
var device = CoreHandler.Core.Collection.RegisteredDevices
.FirstOrDefault(d => d.dirno == "1001");
if (device?.Gpio != null)
{
// Read all GPI (input) points
foreach (var input in device.Gpio.Inputs)
{
Console.WriteLine($"GPI {input.Id}: {input.State}");
}
// Read all GPO (output) points
foreach (var output in device.Gpio.Outputs)
{
Console.WriteLine($"GPO {output.Id}: {output.State}");
}
}
Listening for GPIO Changes
The SDK provides two levels of GPIO change notifications:
1. Per-Device: DeviceGpio.Changed Event
Subscribe to GPIO changes on a specific device:
device.Gpio.Changed += (sender, args) =>
{
Console.WriteLine($"Device {args.Dirno} - GPIO {args.Point.Id} " +
$"({args.Point.Direction}): {args.Point.State}");
};
2. Global: CoreHandler.Core.Events.OnGpioEvent
Subscribe to GPIO changes across all devices:
CoreHandler.Core.Events.OnGpioEvent += (sender, gpioEventArgs) =>
{
Console.WriteLine($"GPIO event on device {gpioEventArgs.Dirno}: " +
$"{gpioEventArgs.Element.id} = {gpioEventArgs.Element.state}");
};
Controlling GPO Outputs (Activate/Deactivate)
You can activate or deactivate GPO outputs (e.g., door relays) on a device:
// Activate a relay (e.g., "relay1") indefinitely
await device.Gpio.ActivateAsync("relay1", timeSeconds: null, CancellationToken.None);
// Activate a relay for 5 seconds (auto-deactivates after timeout)
await device.Gpio.ActivateAsync("relay1", timeSeconds: 5, CancellationToken.None);
// Deactivate a relay manually
await device.Gpio.DeactivateAsync("relay1", CancellationToken.None);
Refreshing GPIO State
To force a refresh of the GPIO snapshot for a device:
await device.Gpio.RefreshAsync(CancellationToken.None);
Awaiting Initial GPIO Load
When devices are first retrieved, GPIO snapshots are loaded asynchronously. To ensure the initial load is complete before reading state:
await device.Gpio.WhenInitializedAsync();
GPIO Models Reference
GpioPoint
| Property | Type | Description |
|---|---|---|
Id |
string |
Identity of the GPIO line (e.g., "relay1", "gpi4", "gpo1"). |
Direction |
GpioDirection |
Whether this is a Gpi (input) or Gpo (output). |
State |
GpioState |
Current state: Unknown, Inactive (low), or Active (high). |
UpdatedUtc |
DateTimeOffset |
UTC timestamp of the last state update. |
RawState |
string |
The raw state string from the WAMP payload. |
GpioChangedEventArgs
| Property | Type | Description |
|---|---|---|
Dirno |
string |
Directory number of the device that triggered the change. |
Point |
GpioPoint |
The GPIO point that changed. |
DeviceGpio
| Property / Method | Type | Description |
|---|---|---|
Dirno |
string |
Directory number of the owning device. |
Inputs |
IReadOnlyCollection<GpioPoint> |
All known GPI (input) points. |
Outputs |
IReadOnlyCollection<GpioPoint> |
All known GPO (output) points. |
Changed |
event EventHandler<GpioChangedEventArgs> |
Fires when any GPIO point changes state. |
ActivateAsync(gpoId, timeSeconds?, ct) |
Task |
Activates a GPO output. Optional time in seconds. |
DeactivateAsync(gpoId, ct) |
Task |
Deactivates a GPO output. |
RefreshAsync(ct) |
Task |
Reloads the full GPIO snapshot from the server. |
WhenInitializedAsync() |
Task |
Awaitable task that completes when the initial snapshot is loaded. |
Dispose() |
void |
Unsubscribes from GPIO events for this device. |
G. Event Handling in the SDK
The SDK provides a robust event-driven architecture, allowing UI and logic components to react dynamically.
Listening to Device List Changes
CoreHandler.Core.Events.OnDeviceListChange += HandleDeviceListChange;
Listening to Operator Directory Number Changes
CoreHandler.Core.Events.OnOperatorDirNoChange += HandleOperatorDirnoChange;
Listening to Connection Changes
CoreHandler.Core.Events.OnConnectionChanged += HandleConnectionChange_Client;
6. Summary
The Zenitel Connect Pro SDK provides a modular, event-driven, and centralized framework for managing:
- Devices (Automatically Populated)
- Calls (Active & Queued)
- Audio analytics
- Broadcasting
- Access control
- GPIO (General Purpose I/O) – monitor inputs, control outputs, and receive real-time state changes
- Real-time event handling
- Seamless UI integration
Important Notes:
✅ Collections are auto-populated; no manual fetching is required.
✅ Set OperatorDirNo after connection & device retrieval, before placing calls or sending messages.
✅ Use OnExceptionThrown for centralized error handling.
✅ GPIO state is auto-loaded per device; use Device.Gpio to read inputs/outputs and subscribe to changes.
Event Handlers
The SDK provides robust event handling to track changes and updates in real time. Below are the key event handlers available:
| Event Name | Description |
|---|---|
OnActiveVideoFeedChange |
Fires when a change in the active camera feed is detected. |
OnOperatorDirNoChange |
Occurs when the operator directory number is updated. |
OnDeviceListChange |
Fires when the list of devices is updated. |
OnDeviceStateChange |
Notifies changes in the state of a specific device. |
OnActiveCallListValueChange |
Fires when the value of the active call list is updated. |
OnCallQueueListValueChange |
Occurs when the queued call list undergoes modifications. |
OnDeviceRetrievalStart |
Signals the start of the device retrieval process. |
OnDeviceRetrievalEnd |
Signals the end of the device retrieval process. |
OnLogEntryRequested |
Fires when a new log entry request is initiated but not yet saved. |
OnLogEntryAdded |
Triggered when a log entry is successfully added. |
OnDebugChanged |
Fires when debugging information is modified or added. |
OnExceptionThrown |
Used to handle exceptions and create error log entries. |
OnQueuesAndCallsSync |
Signals the CallHandler to retrieve all active and queued calls. |
OnConnectionChanged |
Triggers on changes in connection status with Zenitel Connect. |
OnConfigurationChanged |
Fires when configuration data changes. |
CallHandlerPopupRequested |
Used to open or close a popup window. |
OnManualVideoFeedChange |
Fires when a manual switch of the camera feed is requested. |
OnGroupsListChange |
Occurs when the list of groups changes. |
OnGroupsMsgUpdate |
Fires when a group broadcast update is received. |
OnDoorOpen |
Fires when a door open event is detected. |
OnAudioMessagesChange |
Fires when an audio message update occurs. |
OnGpioEvent |
Fires when a GPIO (GPI/GPO) state change is received for any device. |
Audio Analytics Events
The SDK also provides specialized event handlers for audio analytics:
| Event Name | Description |
|---|---|
DataReceived |
Fires when the Audio Event Detector receives data. |
Heartbeat |
Occurs when the Audio Event Detector sends a heartbeat signal every minute. |
AudioEventDetected |
Fires when an audio event is detected (e.g., gunshot, aggression, glass break). |
These event handlers allow developers to seamlessly integrate real-time monitoring, logging, and interaction functionalities within the system.
Collections
The SDK provides structured collections to manage various elements within Zenitel Connect. These collections help in organizing devices, active and queued calls, groups, and directory numbers efficiently.
| Collection Name | Description |
|---|---|
RegisteredDevices |
Holds all Zenitel devices registered with Zenitel Connect. |
ActiveCalls |
Contains the list of currently active calls. |
CallQueue |
Stores calls that are currently queued, waiting to be answered or processed. |
Groups |
Holds the groups defined within Zenitel Connect Pro for communication. |
AudioMessages |
Contains uploaded system notifications, alerts, or pre-recorded messages. |
DirectoryNumbers |
Stores directory numbers used for managing communication endpoints. |
Each collection is lazily initialized to optimize memory usage, ensuring that objects are only created when accessed. These collections facilitate quick retrieval and management of devices, calls, and messages, allowing seamless integration within the Zenitel Connect ecosystem.
Models
Here are the tables for each model with their properties and methods, ensuring nothing is skipped:
AudioEventDetected
| Property Name | Type | Description |
|---|---|---|
| FromDirno | string | Directory number of the device that detected the event. |
| FromName | string | Name of the device that detected the event. |
| EventType | string | Type of detected audio event (e.g., gunshot, glass break). |
| Probability | string | Probability of the event as a string. |
| Time | DateTime | UTC time when the audio event was detected. |
Methods: None
DataReceived
| Property Name | Type | Description |
|---|---|---|
| FromDirno | string | Directory number of the device that sent the data. |
| FromName | string | Name of the device that sent the data. |
| Status | string | Status of the received audio data. |
| UTC_Time | DateTime | Timestamp of the data reception. |
Methods: None
Heartbeat
| Property Name | Type | Description |
|---|---|---|
| FromDirno | string | Directory number of the device that sent the heartbeat. |
| FromName | string | Name of the device that sent the heartbeat. |
| UTC_Time | DateTime | Timestamp of the heartbeat signal. |
Methods: None
AudioMessage
| Property Name | Type | Description |
|---|---|---|
| Id | string | Unique identifier for the audio message. |
| Dirno | string | Directory number associated with the message. |
| FileName | string | Name of the audio file. |
| FilePath | string | Path to the stored file. |
| FileSize | long | Size of the file in bytes. |
| Duration | int | Duration of the audio message in seconds. |
| IsPlaying | bool | Indicates if the message is currently playing. |
Methods:
| Method Name | Description |
|---|---|
OnPropertyChanged(string propertyName) |
Invokes a property changed event when a property value is updated. |
SetValuesFromSDK(WampAudioMessageElement sdkAudioMessageElement) |
Updates the instance with values from the SDK message element. |
NewDeviceFromSdkElement(WampAudioMessageElement sdkAudioMessageElement) |
Creates a new instance of AudioMessage from the SDK element. |
CallElement
| Property Name | Type | Description |
|---|---|---|
| CallId | string | Unique identifier for the call. |
| CallType | string | Type of call (e.g., normal, queued). |
| CallState | string | Current state of the call. |
| FromDirno | string | Directory number of the caller. |
| ToDirno | string | Directory number of the recipient. |
| Priority | int | Priority level of the call. |
Methods:
| Method Name | Description |
|---|---|
NewCallElementFromSdkCallElement(WampCallElement wampCallElement) |
Creates a new instance of CallElement from the WAMP call element. |
CallLegElement
| Property Name | Type | Description |
|---|---|---|
| CallId | string | Unique call identifier. |
| Dirno | string | Directory number of the associated call leg. |
| Name | string | Name of the associated call leg. |
| Priority | int | Priority level of the call leg. |
Methods: None
CallLog
| Property Name | Type | Description |
|---|---|---|
| CallId | string | Unique identifier for the call. |
| StartTime | DateTime | Timestamp when the call started. |
| EndTime | DateTime | Timestamp when the call ended. |
| Participants | List<string> | List of participants in the call. |
Methods: None
Camera
| Property Name | Type | Description |
|---|---|---|
| Id | string | Unique identifier for the camera. |
| FQID | string | Fully Qualified Identifier for the camera. |
| Name | string | Name of the camera. |
Methods: None
Configuration
| Property Name | Type | Description |
|---|---|---|
| ErrorLogFilePath | string | File path for error logging. |
Methods:
| Method Name | Description |
|---|---|
GetLogPath() |
Retrieves the path for the error log file. |
GetDefaultConfiguration() |
Creates and returns a default configuration. |
Device
| Property Name | Type | Description |
|---|---|---|
| DeviceId | string | Unique identifier for the device. |
| NodeNumber | int | Node number assigned to the device. |
| DeviceState | string | Current state of the device. |
Methods: None
DeviceCamera
| Property Name | Type | Description |
|---|---|---|
| DeviceId | string | ID of the device. |
| CameraId | string | ID of the associated camera. |
Methods: None
DeviceSettings
| Property Name | Type | Description |
|---|---|---|
| Volume | int | Volume level of the device. |
| Brightness | int | Brightness level. |
Methods: None
DirectoryNumber
| Property Name | Type | Description |
|---|---|---|
| Dirno | string | Directory number. |
| Name | string | Name associated with the directory number. |
Methods: None
ExceptionLog
| Property Name | Type | Description |
|---|---|---|
| ExceptionMessage | string | Message describing the exception. |
| Timestamp | DateTime | When the exception occurred. |
Methods: None
Group
| Property Name | Type | Description |
|---|---|---|
| GroupId | string | Unique identifier for the group. |
| Name | string | Name of the group. |
Methods: None
Operator
| Property Name | Type | Description |
|---|---|---|
| OperatorId | string | Unique identifier for the operator. |
| Name | string | Name of the operator. |
Methods: None
PrerecordedMessage
| Property Name | Type | Description |
|---|---|---|
| MessageId | string | Unique identifier for the message. |
| FileName | string | Name of the audio file. |
| Duration | int | Duration of the message. |
Methods: None
Here’s the enhanced Handlers description with method return types included:
AccessControlHandler
Description: Manages access control features, such as unlocking doors and interacting with access-related devices.
Key Features:
- Handles the IP address of the parent device.
- Uses the WAMP client for communication.
Properties:
| Property | Type | Description |
|-----------------------|------------|-------------------------------------------------|
| ParentIpAddress | string | IP address of the parent device. |
Methods:
| Method | Return Type | Description |
|-------------------------|-----------------|-------------------------------------------------------------------|
| #ctor | void | Initializes the handler with references to events, WAMP client, and parent IP. |
| OpenDoor(Device ele)| bool | Opens a door associated with the specified device. |
AudioEventHandler
Description: Processes audio events detected by the system, such as data receiving, audio event detection, and detector alive signals.
Key Features:
- Interacts with the WAMP client to handle real-time audio analytics events.
Properties:
| Property | Type | Description |
|-----------------------|------------|-------------------------------------------------|
| ParentIpAddress | string | IP address of the parent device. |
Methods:
| Method | Return Type | Description |
|---------------------------------------|-----------------|-----------------------------------------------------------------------|
| #ctor | void | Initializes the handler with references to events, WAMP client, and parent IP. |
| HandleAudioEventDetection | void | Handles audio event detection and triggers the related event. |
| HandleAudioDataReceivingEvent | void | Handles audio data reception and triggers the data received event. |
| HandleAudioDetectorAliveEvent | void | Processes detector alive signals and triggers the heartbeat event. |
BroadcastingHandler
Description: Manages group and audio message broadcasting. Handles retrieving, playing, stopping, and managing audio messages.
Key Features:
- Manages group and audio message retrieval using WAMP.
- Plays or stops audio messages for defined groups.
Properties:
| Property | Type | Description |
|--------------------------------------|------------|--------------------------------------------------------------------|
| IsExecutingGroupRetrieval | bool | Indicates if group retrieval is in progress. |
| IsExecutingAudioMessagesRetrieval | bool | Indicates if audio message retrieval is in progress. |
| ParentIpAddress | string | IP address of the parent device. |
Methods:
| Method | Return Type | Description |
|-----------------------------------------|-----------------|-----------------------------------------------------------------------|
| #ctor | void | Initializes the handler with references to collections, events, WAMP client, and parent IP. |
| HandleConnectionChange | void | Updates group and audio message lists when a connection change occurs. |
| RetrieveGroups | bool | Fetches groups from the server and updates the collection. |
| RetrieveAudioMessages | bool | Fetches audio messages from the server and updates the collection. |
| PlayAudioMessage(AudioMessage, ...) | bool | Plays the specified audio message for a group. |
| StopAudioMessage(AudioMessage msg) | bool | Stops the playback of the specified audio message. |
CallHandler
Description: Processes call-related operations, such as managing active calls, queued calls, and synchronization with the system.
Key Features:
- Handles call initiation, updates, and synchronization of active and queued calls.
- Manages operator and device interactions during calls.
Properties:
| Property | Type | Description |
|---------------------|------------|-------------------------------------------------|
| ParentIpAddress | string | IP address of the parent device. |
| Operator | Device | The operator device. |
| ActiveDevice | Device | The currently active device. |
Methods:
| Method | Return Type | Description |
|-------------------------------------------|-----------------|----------------------------------------------------------------------|
| #ctor | void | Initializes the handler with references to collections, events, WAMP client, and parent IP. |
| HandleCallStatusChangedEvent | void | Updates active calls or queues based on call status changes. |
| HandleCallQueueChange | void | Updates the queued calls collection on queue changes. |
| PostCall | bool | Initiates a new call with specified parameters. |
| AddToActiveCalls(Device) | bool | Adds a device to the active calls list. |
| RemoveFromActiveCall(Device) | bool | Removes a device from the active calls list. |
| AnswerQueuedCall(CallLegElement) | bool | Answers a queued call. |
| GetAllCalsAndQueues | List<CallElement>| Retrieves and synchronizes all active and queued calls. |
ConnectionHandler
Description: Manages the WAMP server connection, including reconnection attempts and configuration updates.
Key Features:
- Monitors and updates the system connection state.
Properties:
| Property | Type | Description |
|---------------------|------------|-------------------------------------------------|
| IsConnected | bool | Indicates whether the system is connected. |
| IsReconnecting | bool | Indicates if the system is attempting to reconnect. |
| ParentIpAddress | string | IP address of the parent device. |
Methods:
| Method | Return Type | Description |
|-----------------------------------|-----------------|----------------------------------------------------------------------|
| #ctor | void | Initializes the handler with references to events, WAMP client, and configuration. |
| HandleConnectionChangeEvent | void | Processes connection status changes. |
| HandleConfigurationChangeEvent | void | Updates WAMP client settings based on configuration changes. |
| OpenConnection | bool | Opens a new WAMP server connection. |
| Reconnect | bool | Attempts to reconnect to the server. |
DatabaseHandler
Description: Synchronizes internal collections with the database.
Key Features:
- Provides synchronization between runtime data and persistent storage.
Methods:
| Method | Return Type | Description |
|-----------------------------------|-----------------|----------------------------------------------------------------------|
| #ctor | void | Initializes the handler with collections, events, and the WAMP client. |
DeviceHandler
Description: Manages device registration, retrieval, and state updates.
Key Features:
- Interacts with the WAMP client to manage device-related operations.
- Tracks device states and handles retrieval tasks.
Properties:
| Property | Type | Description |
|---------------------------------|------------|----------------------------------------------------|
| DeviceRetrievalTimer | Timer | Timer for periodically retrieving registered devices. |
| IsExecutingDeviceRetrieval | bool | Indicates if device retrieval is in progress. |
| ParentIpAddress | string | IP address of the parent device. |
Methods:
| Method | Return Type | Description |
|-----------------------------------------|-----------------|----------------------------------------------------------------------|
| #ctor | void | Initializes the handler with references to collections, events, and WAMP client. |
| HandleDeviceRegistration | void | Registers a device received from the WAMP client. |
| RetrieveRegisteredDevices | List<Device> | Fetches registered devices and updates internal collections. |
| HandleDeviceGPIOStatusEvent | void | Routes incoming GPI/GPO change events to the matching device model. |
| SimulateKeyPress(string, string, ...)| bool | Simulates a key press on a device. |
| InitiateToneTest(string, string) | bool | Starts a tone test on the specified device. |
5. Authors and Acknowledgment
- Toni Gregov: Project Lead
- WampClient Fork: Erik Mortensen
6. License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| .NET Framework | net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.8
- Microsoft.AspNetCore.Connections.Abstractions (>= 3.1.32)
- Microsoft.Bcl.AsyncInterfaces (>= 1.1.1)
- Microsoft.CSharp (>= 4.7.0)
- Microsoft.Extensions.Logging (>= 3.1.32)
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
- Newtonsoft.Json (>= 13.0.3)
- SuperSocket.ClientEngine.Core (>= 0.10.0)
- System.Buffers (>= 4.6.0)
- System.Collections.Immutable (>= 1.7.1)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.IO.Pipelines (>= 4.7.5)
- System.Memory (>= 4.6.0)
- System.Net.Security (>= 4.3.2)
- System.Net.WebSockets (>= 4.3.0)
- System.Numerics.Vectors (>= 4.6.0)
- System.Reactive (>= 6.0.1)
- System.Reflection.DispatchProxy (>= 4.8.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.0)
- System.Text.RegularExpressions (>= 4.3.1)
- System.Threading.Tasks.Dataflow (>= 4.11.1)
- WebSocket4Net (>= 0.15.2)
-
.NETStandard 2.1
- Microsoft.AspNetCore.Connections.Abstractions (>= 3.1.32)
- Microsoft.Bcl.AsyncInterfaces (>= 1.1.1)
- Microsoft.CSharp (>= 4.7.0)
- Microsoft.Extensions.Logging (>= 3.1.32)
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
- Newtonsoft.Json (>= 13.0.3)
- SuperSocket.ClientEngine.Core (>= 0.10.0)
- System.Buffers (>= 4.6.0)
- System.Collections.Immutable (>= 1.7.1)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.IO.Pipelines (>= 4.7.5)
- System.Memory (>= 4.6.0)
- System.Net.Security (>= 4.3.2)
- System.Net.WebSockets (>= 4.3.0)
- System.Numerics.Vectors (>= 4.6.0)
- System.Reactive (>= 6.0.1)
- System.Reflection.DispatchProxy (>= 4.8.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.0)
- System.Text.RegularExpressions (>= 4.3.1)
- System.Threading.Tasks.Dataflow (>= 4.11.1)
- WebSocket4Net (>= 0.15.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.