The Signal Module supports several Event Packages. When it receives a SUBSCRIBE Request targeting a local Account, it may process the Request itself, without forwarding it to the Account registered entities. Note: as a workaround for many buggy clients, the Module accepts SUBSCRIBE Requests sent to local Domains (instead of local Accounts). For these requests, the address in the To field is used to replace the domain-type address in the Request URI.
The Signal module maintains "tuple" states for each Account, for each Event Package it supports. The module allows one or several entities to update the "tuples", and it aggregates them into one Account "state information" for the Package. When the aggregated "state information" changes, the module sends NOTIFY requests with the updated state to all subscribed entities.
The Signal module allows external entities to modify "tuples" using PUBLISH requests.
The Signal module allows external entities to modify "tuples" for certain Packages using non-standard SERVICE requests.
The Signal module provides "watcher" packages for all Event Packages. These packages provide the information about current subscribers to the "base" Event packages. "Watcher of watcher" packages are implemented, too.
Unless explicitly specified otherwise, subscription to a Account Event package is available only to the Account owner, to other Accounts with the CanImpersonate Access Right for the Account Domain, and to other Accounts that have the Delegate Account Access Right for this Account. The same restrictions are applied to subscriptions to all "watcher" packages.
The Signal Module implements a Presence Server. The Module supports the PIDF, CPIM-PIDF and XPIDF Presence Information formats.
The Signal Module provides special processing for the REGISTER requests. If an external entity (a SIP device) indicates support for the SUBSCRIBE method, the module establishes a presence subscription dialog with that entity. The module then processes all NOTIFY requests sent by that entity to maintain its Presence "tuple" or "segment".
A Presence segment value is a string from a fixed set, listed here starting from the lowest priority value to the highest priority one:
The event aggregated value is a segment value with the highest priority, or offline if no segment exists.
When a NOTIFY request is composed, the aggregated value is converted into a presence document in one of the supported formats.
Subscription to the Event package is available to anyone, subject to the standard subscription approval process.
The Signal Module implements the MWI (Message Waiting Indication) Service. The Module supports the simple-message-summary Information format.
The Server itself maintains the "INBOX" tuple/segment for this Event package. The segment value is set to an array: