/// Abstract base class for user events.
/// You can send arbitrary user events via the UserEvent application provided with asterisk.
/// A user event by default has the attributes channel and uniqueId but you can add custom
/// attributes by specifying an event body.
/// To add your own user events you must subclass this class and name it corresponding to your event.
/// If you plan to send an event by UserEvent(VIPCall)
you will create a new class
/// called VIPCallEvent that extends UserEvent. The name of this class is important: Just use the
/// name of the event you will send (VIPCall in this example) and append "Event".
/// To pass additional data create appropriate attributes with getter and setter methods in your new class.
/// Example:
///
/// public class VIPCallEvent : UserEvent
/// {
/// private string firstName;
/// // Constructor
/// public VIPCallEvent()
/// {
/// }
/// // Property
/// public string FirstName
/// {
/// get { return this.firstName; }
/// set { this.firstName = value; }
/// }
/// }
///
/// To send this event use UserEvent(VIPCall|firstName: Jon)
in your dialplan.
/// The UserEvent is implemented in apps/app_userevent.c
.
/// Note that you must register your UserEvent with the ManagerConnection you are using in order to be recognized.
///
///