Abstract:
Methods, devices, and systems are provided for employing an efficient call tracing algorithm. Messages may be filtered according to an initial filter criteria, then messages that meet the initial filter criteria are analyzed to develop a secondary filter criteria. The first and/or second filter criteria can then be applied to subsequently transmitted messages for a predetermined amount of time, most likely relating to the length of the call which met the first filter criteria.

Description:
FIELD OF THE INVENTION 
       [0001]    The invention relates generally to communications and more specifically to call tracing. 
       BACKGROUND 
       [0002]    Session Initiation Protocol (SIP) is an open signaling protocol for establishing many kinds of real-time communication sessions. Examples of the types of communication sessions that may be established using SIP include voice, video, and/or instant messaging. These communication sessions may be carried out on any type of communication device such as a personal computer, laptop computer, Personal Digital One key feature of SIP is its ability to use an end-user&#39;s Address of Record (AOR) as a single unifying public address for all communications. Thus, in a world of SIP-enhanced communications, a user&#39;s AOR becomes their single address that links the user to all of the communication devices associated with the user. Using this AOR, a caller can reach any one of the user&#39;s communication devices, also referred to as User Agents (UAs) without having to know each of the unique device addresses or phone numbers. 
         [0003]    Call tracing in traditional communication systems is relatively easy because a most messages transmitted during a communication are relevant to that communication (e.g., are content bearing messages). When SIP is used, however, many messages from a particular endpoint or IP address are not useful for that call. For example, SIP utilizes many messages that are not content bearing messages and are, therefore, not necessarily needed for call tracing purposes. Thus, there is no current solution for call tracing intelligently in a SIP environment. 
         [0004]    Traditional call tracing solutions apply a single filter for identifying calls of interest that are subject to a call tracing mechanism. The filter criterion usually includes an originator identifier and a target identifier. For example, a call tracing filter criteria may indicate call tracing should occur for any calls from IP address ‘A’ to IP address ‘B’ or vice versa. The problem with using these traditional mechanisms in a SIP environment is that these simple filtering criteria can trigger call tracing for relatively unimportant or unwanted SIP messages, thereby unnecessarily occupying call tracing resources and call recording resources. 
       SUMMARY 
       [0005]    It is thus one aspect of the present invention to provide an intelligent call tracing mechanism that is particularly well suited for use in a SIP environment. Embodiments of the present invention propose a multi-level filter criterion for communication session tracing. Initial filter criteria may be similar to prior art filter criteria in that it is caller and/or callee centric. For example, initial filter criteria may indicate that communication session tracing should occur for calls from address ‘A’ to address ‘B’ or domain ‘X’ to domain ‘Y’. When a first message is found that meets initial filter criteria, a module analyzes the first message for certain types of call parameters or characteristics such as call ID and tag information. The call ID and tag information is then used to develop secondary filter criteria. This secondary filter criteria is used to filter any subsequently transmitted messages that may or may not necessarily meet the initial filter criteria. 
         [0006]    One benefit provided by such a system configuration is that the initial criteria may not hold for the messages related to the call dialog that they establish. SIP “mutates” some of the message fields once the dialog is established. If the initial filter depends on those fields, the initial “triggering” filter would miss these messages. One aspect of the present invention is to capture the dialog created by the initial messages that the initial filter matched. To do so, embodiments of the present invention generate a secondary “dialog” or “call” filter dynamically/algorithmically to capture the in-dialog messages. The dialog or call filter will expire when the dialog expires, or when a filter-defined inactivity timeout occurs or when a terminal message count threshold is exceeded. 
         [0007]    The latter message count threshold may be specific to the individual instance of the secondary “dialog” filter or it may be specific to the triggering filter and its spawned dialog filters or it may be global to the tracing application. Limit thresholds from any combination of this hierarchy may be enforced. 
         [0008]    The initial filter criteria may remain active such that other dialogs can be traced either contemporaneously or sequentially. The initial filter criteria is not needed to support or maintain the context based secondary filter however there may remain a residual message limit counter shared among the secondary filters it spawned. 
         [0009]    Also, after the secondary filter criteria is created, this filter criteria may be applied before the initial filter criteria is applied. This allows dialog related dropped messages to be included in the call tracing criteria (secondary), thereby allowing dropped dialogs to be fully traced. This is useful because malicious calls often contain messages that are corrupted and discarded by the communications server. Both the trigger and call filter can be applied to dropped messages thereby enabling capture and analysis of the complete malicious call message sequence. Accordingly, it is another aspect of the present invention to allow dropped messages to be logged in relation to the trace filter that is associated with the secondary filter without relying on the message also meeting the initial filter criteria. 
         [0010]    It should be appreciated by those skilled in the art that embodiments of the present invention are not just limited to calls but can be utilized in any type of communications session. Adaptive, contextual tracing may extend to any purpose that involves a communications session. For example, session based text messaging or security camera streaming may involve the setup of a session/dialog by application user agents, which may be traced using this adaptive technology. 
         [0011]    In accordance with at least some embodiments of the present invention a method is provided that generally comprises: 
         [0012]    receiving a subsequent message; 
         [0013]    applying secondary filter criteria to the second message to determine if the second message is to be subjected to a predetermined process, wherein the secondary filter criteria is developed as a result of previously analyzing properties of a first message and determining that the first message is to be subjected to the predetermined process; 
         [0014]    determining that the second message meets the secondary filter criteria; and 
         [0015]    subjecting the second message to the predetermined process. 
         [0016]    As used herein the term “transaction” refers to an exchange of information between two endpoints through optional intermediary proxies. This is typically accomplished by exchanging a multiplicity of related messages some of which are not end-to-end. 
         [0017]    As used herein the term “dialog” or “session” is understood to refer to a communications context that is established by a transaction and optionally updated and/or terminated by one. A dialog may optionally terminate by timeout due to inactivity (a lack of transactions). 
         [0018]    As used herein the term “initial transaction” refers to a transaction that establishes a dialog. 
         [0019]    As used herein the term “update transaction” refers to a mid-dialog transaction associated with that dialog that neither establishes nor terminates the dialog. 
         [0020]    As used herein the term “freestanding transaction” refers to a transaction that is not associated with a dialog and neither establishes or terminates one. 
         [0021]    As used herein the term “terminating transaction” refers to a transaction that terminates the dialog. 
         [0022]    The terms “trigger filter” and/or “initial filter” may be used interchangeably to refer to a first application filter or set of filter rules. Such a filter contains attributes that are applied to the contents of some or all of the messages in an initial transaction or a freestanding transaction. If the match succeeds using the trigger filter or initial filter, the triggering message will be traced followed by all other messages in the associated transaction. If a dialog is established, all messages associated with update and terminating transactions will be traced by a dialog filter. 
         [0023]    The terms “dialog filter”, “call filter”, and/or “secondary filter” may also be used interchangeably to refer to any type of filter that is created by the trigger filter logic to filter all messages associated with a dialog. The dialog filter&#39;s match attributes are comprised of any combination of: 1) attributes that are taken from the matched message or messages, 2) attributes copied from the trigger filter that may or may not have been applied in by that filter in matching the initial message or messages in the initial transaction, 3) attributes computed from external sources such as time or day, etc., and 4) attributes computed from a combination of 1), 2), 3) and 4). Additionally, the dialog filter may match the remaining messages of the initial transaction if the trigger filter is unable to do so. 
         [0024]    The term “computer-readable medium” as used herein refers to any tangible storage and/or transmission medium that participates in providing instructions to a processor for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, NVRAM, or magnetic or optical disks. Volatile media includes dynamic memory, such as main memory. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, magneto-optical medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, solid state medium like a memory card, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read. A digital file attachment to e-mail or other self-contained information archive or set of archives is considered a distribution medium equivalent to a tangible storage medium. When the computer-readable media is configured as a database, it is to be understood that the database may be any type of database, such as relational, hierarchical, object-oriented, and/or the like. Accordingly, the invention is considered to include a tangible storage medium or distribution medium and prior art-recognized equivalents and successor media, in which the software implementations of the present invention are stored. 
         [0025]    The terms “determine,” “calculate” and “compute,” and variations thereof, as used herein, are used interchangeably and include any type of methodology, process, mathematical operation or technique. 
         [0026]    The term “module”, “agent”, or “tool” as used herein refers to any known or later developed hardware, software, firmware, artificial intelligence, fuzzy logic, or combination of hardware and software that is capable of performing the functionality associated with that element. Also, while the invention is described in terms of exemplary embodiments, it should be appreciated that individual aspects of the invention can be separately claimed. 
         [0027]    The preceding is a simplified summary of embodiments of the invention to provide an understanding of some aspects of the invention. This summary is neither an extensive nor exhaustive overview of the invention and its various embodiments. It is intended neither to identify key or critical elements of the invention nor to delineate the scope of the invention but to present selected concepts of the invention in a simplified form as an introduction to the more detailed description presented below. As will be appreciated, other embodiments of the invention are possible utilizing, alone or in combination, one or more of the features set forth above or described in detail below. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0028]      FIG. 1  is a block diagram depicting a communication system in accordance with at least some embodiments of the present invention; 
           [0029]      FIG. 2  is a block diagram depicting a data structure used in accordance with at least some embodiments of the present invention; and 
           [0030]      FIG. 3  is a flow diagram depicting a method of processing a message in accordance with at least some embodiments of the present invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0031]    The invention will be illustrated below in conjunction with an exemplary communication system. Although well suited for use with, e.g., a system using a server(s) and/or database(s), the invention is not limited to use with any particular type of communication system or configuration of system elements. Those skilled in the art will recognize that the disclosed techniques may be used in any communication application in which it is desirable to trace calls or invoke similar applications. 
         [0032]    The exemplary systems and methods of this invention will also be described in relation to analysis software, modules, and associated analysis hardware. However, to avoid unnecessarily obscuring the present invention, the following description omits well-known structures, components and devices that may be shown in block diagram form, are well known, or are otherwise summarized. 
         [0033]    For purposes of explanation, numerous details are set forth in order to provide a thorough understanding of the present invention. It should be appreciated, however, that the present invention may be practiced in a variety of ways beyond the specific details set forth herein. 
         [0034]    With reference initially to  FIG. 1 , an exemplary communication system  100  will be described in accordance with at least some embodiments of the present invention. More specifically, the communication system  100  includes a communication network  104  adapted to interconnect one or more communication devices  108  with an application server  112 . 
         [0035]    The trusted communication network  104  may be any type of known communication medium or collection of communication mediums and may use any type of protocols to transport messages between endpoints. The communication network  104  may also include wired and/or wireless communication technologies. The Internet is an example of a communication network  104  that constitutes and IP network consisting of many computers and other communication devices located all over the world, which are connected through many telephone systems and other means. Other examples of the communication network  108  include, without limitation, a standard Plain Old Telephone System (POTS), an Integrated Services Digital Network (ISDN), the Public Switched Telephone Network (PSTN), a Local Area Network (LAN), a Wide Area Network (WAN), a Session Initiation Protocol (SIP) network, any type of enterprise network, and any other type of packet-switched or circuit-switched network known in the art. 
         [0036]    The communication devices  108  may be any type of known communication or processing device such as a personal computer, laptop, Personal Digital Assistant (PDA), cellular phone, smart phone, telephone, analog phone, DCP phone, or combinations thereof. A single communication device  108  may be controlled by or be associated with a single user or may be adapted for use by many users (e.g., an enterprise communication device that allows any enterprise user to utilize the communication device upon presentation of a valid user name and password). 
         [0037]    Two or more of the communication devices  108  may be associated with the same user. In other words, two communication devices  108  may belong to a single user and may correspond to different types of communication devices. As one example, the user may have four communication devices  108  each of which correspond to a personal phone, a work phone, a personal computer, and an email retrieval device, respectively, of a single user. Alternatively, each of the communication devices  108  may be owned and operated by (e.g., associated with) a different user. 
         [0038]    In general, the communication devices  108  may be adapted to support video, audio, text, and/or data communications with other communication devices  108 . The type of medium used by one communication devices  108  to communicate with another communication device  108  may depend upon the communication applications available on one or both communication devices  108 . 
         [0039]    The application server  112  is adapted to provide applications and functions to the communication devices  108 , particularly during communication sessions with other communication devices  108 . In accordance with at least some embodiments of the present invention, one or more applications stored on the application server  112  may comprise a SIP application for providing features and functions to a SIP call or SIP communication session. Such features and functions may be provided by processing one or more messages which are a part of the communication session. One example of an application that may be stored on the application server  112  includes a call tracing application  116 , which, when executed by a processor, is adapted to execute call tracing functions on messages received by the application server  112 . 
         [0040]    In accordance with at least some embodiments of the present invention, the call tracing application  116  provides a particular function or set of functions associated with call tracing such as message identification, recording, and storage. The call tracing application  116  may comprise one or more modules  128  to help the application  116  perform such tasks. 
         [0041]    In accordance with at least some embodiments of the present invention, the call tracing application  116  may also comprise two different sets of filter criteria. The first set of filter criteria may correspond to trigger filter criteria  120  used to identify a first message in a communication session which may be subjected to the call tracing process. The second set of filter criteria may correspond to dialog or call filter criteria  124 . The secondary filter criteria  124  may be developed to more accurately and intelligently determine whether messages transmitted in a communication session, particularly one using both content-bearing and non-content bearing messages, should be subjected to the call tracing process. 
         [0042]    In accordance with at least some embodiments of the present invention, the dialog or call filter criteria  124  is developed as a result of previously analyzing properties of a first message and determining that the first message is to be subjected to the call tracing process. In other words, the call tracing application  116  may be adapted to receive messages during a communication session, determine that one or more of the messages from the communication session satisfies the trigger filter criteria  120 , and subject that message to the call tracing process by invoking the tracing module  128 . Furthermore, the message satisfying the trigger filter criteria  120  may be analyzed by the tracing module  128 , or some other module in the call tracing application  116 , to determine the dialog or call filter criteria  124 . As an example, the tracing module  128  analyzes the message meeting the trigger filter criteria  120  for certain types of call parameters or characteristics such as call ID and tag information. The call ID (which may simply be an identifier that includes the time the call started along with a combination of the caller and/or callee or which may be a hash function produced by one or more of call start time, caller, callee or which may be a randomly assigned call identifier) and tag information (which may be stored as a tag in one or more message headers) is then used to develop the dialog or call filter criteria  124 . 
         [0043]    It should be noted that in SIP a tag is associated with the caller and a different tag is associated with the callee. These tags should be thought of as an application identifier (there may be more than one application at the endpoint, hence more than on tag there). Tags are required in SIP but may not exist in other protocols. It is nothing more than a component in set of information gleaned from the initial messages that establish a session. This information is used to provide a protocol-specific filter to capture the session. In the case of SIP, there will be tags in all sessions including up to 2051090 tags that a party will like have no interest in tracing. Such tags are ignored. 
         [0044]    This dialog or call filter criteria  124  is used to filter any subsequently transmitted messages that may or may not necessarily meet the trigger filter criteria  120 . Therefore, if the initial trigger is disabled, some messages meeting the trigger filter criteria  120  will not be traced if they do not meet the dialog or call filter criteria[SAB: This is only true if the initial “trigger” filter is disabled.  124 . This helps limit call tracing to relevant messages and preserves communication session tracing resources (e.g., processors, memory, etc.) for use only when desired and relevant. If, however, the initial trigger filter criteria continues to be enabled, then a new dialog or call filter  124  will be spawned. As can be appreciated by one skilled in the art, the results of call tracing may be stored in the application server  112  itself or in a remote database, such as an enterprise database  132 . The enterprise database  132  may also comprise information related to users (not necessarily limited to enterprise users) and their communication history. 
         [0045]    Referring now to  FIG. 2 , an exemplary data structure  200  will be described in accordance with at least some embodiments of the present invention. The data structure  200  may comprise a number of fields for storing information relevant to executing a call tracing process. Accordingly, the data structure  200  may be stored on the application server  112  and/or in the enterprise database  132 . The data structure  200  may also comprise information related to results of executing the call tracing process or pointers to memory locations where recorded content is stored. More specifically, the data structure  200  may comprise a call properties field  204 , a trigger tracing filter criteria field  208 , a dialog or call tracing filter criteria  212 , a related communications field  216 , and a filter termination information field  220 . 
         [0046]    The call properties field  204  may contain information related to properties of a call or communication session. The call properties field  204  may be populated by analyzing a message that satisfied the initial filter criteria  120 . As an example, the call properties field  204  may comprise identification information for parties to a communication session as well as a tag identifier which can be compared to tags of subsequently transmitted messages to determine if such messages are to have the call tracing process applied thereto. 
         [0047]    The trigger tracing filter criteria field  208  may comprise the trigger filter criteria  120  which defines, for example, parties or communication devices (usually by communication device identifiers or port addresses) which are to have the call tracing process applied thereto. The information in the trigger tracing filter criteria field  208  is typically used to first determine whether a communication session is to have the call tracing process applied thereto. 
         [0048]    The dialog or call tracing filter criteria field  212 , on the other hand, has information that is used to subsequently determine whether messages in a communication session satisfying the trigger filter criteria  120  should have the call tracing process applied thereto. Accordingly, the dialog or call tracing criteria field  212  may comprise the dialog or call filter criteria  124  along with other relevant information used to determine whether a communication session (which may alternatively be referred to as a dialog) needs to have the trigger filter criteria  120  applied thereto. 
         [0049]    The other communication field  216  may comprise information identifying relationships between various communication sessions. For example, if a call is dropped and subsequently re-initiated between the same parties, the fact that the dropped call is related to the subsequent call may be maintained in the other communications field  216 . This is especially useful when the two calls are related to each other as is often the case with multi-party conferencing. 
         [0050]    The filter termination information field  220  may comprise data used to determine when the secondary filter criteria  124  is to be discarded and/or no longer used. More specifically, once a communication session is being traced by the tracing module  128 , it is generally advantageous to continue tracing the communication session for its entirety. In this case, the secondary filter criteria  124  may be discarded or ignored after the communication session has ended. Alternatively, it may be advantageous to maintain the secondary filter criteria  124  for a predetermined amount of time after a communication session has ended, particularly to address the dropped call situation. In this embodiment, the filter termination information field  220  may define that the secondary filter criteria  124  should be applied for a predetermined amount of time (e.g., 5 minutes, 10 minutes, a day, etc.) after the communication session being traced has ended. It should also be appreciated that the filter termination information field  220  may define that the secondary filter criteria  124  should be applied for a predetermined amount of time after the communication session starts. Basing the termination information on the beginning of the communication session may or may not be beneficial depending upon the intended application and use of the call tracing process, particularly because the communication session may not end before the secondary filter criteria  124  is dropped. Of course, if the communication session continues after the secondary filter criteria  124  has terminated, the secondary filter criteria  124  may be re-instituted or re-created by analyzing another message of the communication session under the initial filter criteria  120  to repopulate the call properties field  204 . 
         [0051]    Referring now to  FIG. 3 , an exemplary method of message processing will be described in accordance with at least some embodiments of the present invention. The method is initiated when a message is received at the application server  112  (step  304 ). The received message is then analyzed based on the existing dialog or call filter criteria  124  (step  308 ) to determine if the message is to be subjected to the call tracing process (step  312 ). More specifically, if the message is a part of a communication session or dialog that is being traced by the tracing module  128 , then the dialog or call filter criteria  124  may define that certain calls of that dialog should be processed by the tracing module  128 . As noted above, the dialog or call filter criteria  124  may be generated based on characteristics of previously received messages which are a part of the same dialog as the currently received message. 
         [0052]    If it is determined that properties of the call match the dialog or call filter criteria  124  and the message is to be subjected to call tracing, then the method continues by invoking the call tracing module  128  (step  316 ). If the message did not satisfy the dialog or call filter criteria  124 , then the method will continue by determining whether the message is a part of a previously analyzed dialog (step  318 ). In this step, the application  116  may analyze its message processing history to determine if the message belongs to any other dialog which has already been analyzed but was not subjected to the call tracing process. This determination is made in an attempt to limit the amount of processing resources used, particularly in an attempt to avoid re-determining that a dialog should not be traced. If this inquiry is answered affirmatively, then the method continues by allowing the message to be processed by the application server  112  without invoking the tracing module  128  (step  328 ). 
         [0053]    If, on the other hand, the received message is either a first message of a dialog (e.g., a SIP INVITE message or similar type of invitation to initiate a communication session) or if the message is the first content-bearing message of a dialog, then the message is analyzed based on the trigger filter criteria  120  (step  320 ) to determine if the message and its dialog is to be subjected to the call tracing process (step  324 ). If the answer to this inquiry is negative (i.e., the message does not satisfy the initial filter criteria  120 ), then the method continues to step  328 . 
         [0054]    If the received message satisfies the initial filter criteria  120 , then the method will continue by analyzing the message to define the dialog or call filter criteria  124  which can be used to filter subsequent messages of the same dialog (step  332 ). The information retrieved from the message and used to develop the dialog or call filter criteria  124  can include at least one of call ID and tag information contained in the body and/or headers of the message. Once the appropriate dialog or call filter criteria  124  has been developed, the method continues by storing the secondary filter criteria  124  in the data structure  200  (step  336 ). At the same time or shortly thereafter the tracing module  128  is invoked to execute the call tracing functions on the received message (step  316 ). 
         [0055]    It should be noted that this process can be repeated an infinite number of times. Thus, embodiments of the present invention are not limited to a first and second set or layer of filtering criteria. Rather, embodiments of the present invention contemplate tertiary levels of filters and beyond. Embodiments of the present invention contemplate the creation of at least a secondary set of filter criteria (for dialog matching) and a tertiary set of filter criteria (for call matching) based on having a single message match the trigger filter criteria. As noted above, additional numbers of filter criterion are within the scope of the present invention. As an example, in certain types of calls (e.g. conferences) that can be made up of several (even hundreds of) dialogs, embodiments of the present invention can be utilized to create new filter matching patterns or rules as each party was added to the conference. 
         [0056]    The messages for which the dialog filter is intended often have signatures that do not match the criteria of the trigger filter. This is especially true of protocols like SIP where contact information is exchanged and replaces that which was used to establish the dialog. In accordance with at least some embodiments of the present invention, once a match is made with a trigger filter, the trigger filter may or may not stay “armed” or active. If it does, then new, independent dialogs filters may be created to track messages associated with the new dialogs. 
         [0057]    New dialogs which are selected for tracing due to the fact that they have matched the trigger filter may have lifetimes that overlap other dialogs matched by the same trigger filter. 
         [0058]    In cases where trigger filter attributes selected by the operator do not apply to mutate-able fields of dialog messages, it is possible that a dialog message will match both the trigger filter and the dialog filter. In such cases, the dialog filter governs and no duplicative dialog filters will be created. 
         [0059]    In cases where a trigger filter is armed after a dialog has been established, and the dialog messages match the trigger filter, a dialog filter may be constructed and the remainder of the dialog will be traced. 
         [0060]    In accordance with at least some embodiments of the present invention, there are cases where a communications server may impose itself on a call to act as a silent party. This is sometimes referred to as a back-to-back agent. Often conference calls are actually comprised of several two party calls with the conference server acting as the common party to each. Whenever a “call” is so partitioned into multiple dialogs at the signaling level, it is desirable to trace and associate each of these associated calls (troubleshooting, lawful intercept, etc.). Embodiments of the present invention provide methods to support compound calls by several methods: 1) the trigger filter can be designed to recognize establishment of any of the individual low-level dialogs and spawn individual dialog filters for each, or 2) the trigger filter can be designed to recognize establishment of any of the individual low-level dialogs and on the first such match, spawn a dialog filter that is broad enough to match this and any of the subsequent multiple dialogs that may comprise the multi-party call, or 3) the first spawned dialog filter can recognize the extension of the call to include additional parties and can self-modify its match criteria to extend to each related dialog at the time they are created, or 4) the first spawned dialog filter can recognize the extension of the call to include additional parties and can itself spawn an additional dialog filter to match each related dialog as they are created. The latter two methods are particularly useful when the initial trigger filter cannot monitor call extension because it doesn&#39;t filter for the in-dialog messages. 
         [0061]    While the above-described flowchart has been discussed in relation to a particular sequence of events, it should be appreciated that changes to this sequence can occur without materially effecting the operation of the invention. Additionally, the exact sequence of events need not occur as set forth in the exemplary embodiments. The exemplary techniques illustrated herein are not limited to the specifically illustrated embodiments but can also be utilized with the other exemplary embodiments and each described feature is individually and separately claimable. 
         [0062]    The systems, methods and protocols of this invention can be implemented on a special purpose computer in addition to or in place of the described communication equipment, a programmed microprocessor or microcontroller and peripheral integrated circuit element(s), an ASIC or other integrated circuit, a digital signal processor, a hard-wired electronic or logic circuit such as discrete element circuit, a programmable logic device such as PLD, PLA, FPGA, PAL, a communications device, such as a server, personal computer, any comparable means, or the like. In general, any device capable of implementing a state machine that is in turn capable of implementing the methodology illustrated herein can be used to implement the various communication methods, protocols and techniques according to this invention. 
         [0063]    Furthermore, the disclosed methods may be readily implemented in software using object or object-oriented software development environments that provide portable source code that can be used on a variety of computer or workstation platforms. Alternatively, the disclosed system may be implemented partially or fully in hardware using standard logic circuits or VLSI design. Whether software or hardware is used to implement the systems in accordance with this invention is dependent on the speed and/or efficiency requirements of the system, the particular function, and the particular software or hardware systems or microprocessor or microcomputer systems being utilized. The analysis systems, methods and protocols illustrated herein can be readily implemented in hardware and/or software using any known or later developed systems or structures, devices and/or software by those of ordinary skill in the applicable art from the functional description provided herein and with a general basic knowledge of the communication and computer arts. 
         [0064]    Moreover, the disclosed methods may be readily implemented in software that can be stored on a storage medium, executed on a programmed general-purpose computer with the cooperation of a controller and memory, a special purpose computer, a microprocessor, or the like. In these instances, the systems and methods of this invention can be implemented as program embedded on personal computer such as an applet, JAVA® or CGI script, as a resource residing on a server or computer workstation, as a routine embedded in a dedicated communication system or system component, or the like. The system can also be implemented by physically incorporating the system and/or method into a software and/or hardware system, such as the hardware and software systems of a communications device or system. 
         [0065]    It is therefore apparent that there has been provided, in accordance with embodiments of the present invention, systems, apparatuses and methods for generating message filtering criteria based on analyzing messages which met another set of filtering criteria. While this invention has been described in conjunction with a number of embodiments, it is evident that many alternatives, modifications and variations would be or are apparent to those of ordinary skill in the applicable arts. Accordingly, it is intended to embrace all such alternatives, modifications, equivalents and variations that are within the spirit and scope of this invention.