Optimizing a presence enabled managed service

Methods, systems, processes and devices are provided for optimizing throughput and quality of service of a presence enabled managed service. The method includes at least a first entity requesting from an aggregator of presence services presence information of a second entity. The method includes looking up a profile of the aggregator stored in a cache of a presence server hosted by the presence enabled managed service. The method includes determining from the profile an aggregator level of service the aggregator has subscribed to from the presence enabled managed service, wherein the aggregator level of service is one of high level service, medium level service, and low level service. The method includes storing presence information of the second entity on a presence document on the cache and returning the presence information to the first entity based upon the aggregator level of service.

FIELD OF THE INVENTION

The present invention generally describes methods, processes, systems and devices for optimizing quality of service, reducing latency, and improving throughput of presence related requests in an IP multimedia subsystem based telecommunications network.

BACKGROUND OF THE INVENTION

Presence enabled managed services are known in the art. Presence enabled managed services enable presence information of a presentity to be provided to a presence requester. The presence information denotes the presentity's ability and availability to communicate with the presence requestor. Presence information is represented as an extensible markup language document (XML) called a presence document that is a record of the presence associated with the presentity at a given point in time. This presence document is stored in a presence server, such as an IP Multimedia Subsystem (IMS) compliant Session Initiation Protocol (SIP) application server. IMS is an architectural framework for delivering internet protocol (IP) multimedia to mobile users. The (SIP) is a signalling protocol, widely used for setting up and tearing down multimedia communication sessions such as voice and video calls over the Internet.

However, there remains a number of deployment complexities with respect to the actual deployment of a presence server in a telecommunications network. First, most telecommunications carriers have very few IMS subscribers with IMS compliant handsets.

Second, presence information in a typical network will require the collection of presence information from an IMS core and a number of other legacy non-IMS network components. These non-IMS network components include location platforms, the Home Location Register (HLR) infrastructure, the legacy data network, which includes over the air interfaces such as GPRS, 1XRtt, EVDO, Wifi networks and others, and other legacy instant messaging platforms that are not SIP compliant, such as an external IM gateway.

Third, the obtaining of presence information is complicated by several factors. In the absence of a custom interface written for these legacy sources, a pull based model may be required to collect presence information from these sources. A pull based model may be very expensive in terms of network resource consumed and sometimes is of very high latency. For example, a location request (which could be one of the nodes of the presence document) could take over 10-12 seconds in most wireless networks, making it very difficult to incorporate this element of presence efficiently.

To leverage presence services to build higher level composite services, a set of immediate aggregators and independent software vendors (ISV's) outside the carrier domain will probably be a big consumer of basic presence services from the telecommunications service provider. As such, a more logical implementation interface for these external requests are paradigms such as web services rather than SIP based signaling. This is because exposing SIP outside the services provider domain has a number of issues associated with it.

Notifications to presence requesters who have subscribed to presence information may follow established web services based mechanisms such as Parlay X 2.0 and Parlay X 2.1 or protocols such as REST (Representational State Transfer).

SUMMARY OF THE INVENTION

Methods, systems, processes and devices are provided for optimizing throughput and quality of service of a presence enabled managed service. In an embodiment of the invention, the method comprises: 1) at least a first entity requesting from an aggregator of presence services presence information of a second entity; 2) looking up a profile of the aggregator stored in a cache of a presence server hosted by the presence enabled managed service; 3) determining from the profile an aggregator level of service the aggregator has subscribed to from the presence enabled managed service, wherein the aggregator level of service is one of high level service, medium level service, and low level service; and 4) storing the presence information of the second entity on a presence document on the cache and returning the presence information to the first entity based upon the aggregator level of service.

In another embodiment of the invention, there is provided a method of deploying an application enabling optimizing throughput and quality of service of a presence enabled managed service. The method comprises providing a computational device infrastructure configured to: 1) enable a first entity to request from an aggregator of presence services presence information of a second entity; 2) look up a profile of the aggregator stored in a cache of a presence server hosted by the presence enabled managed service; 3) determine from the profile an aggregator level of service the aggregator has subscribed to from the presence enabled managed service, wherein the aggregator level of service is one of high level service, medium level service, and low level service; and 4) store the presence information of the second entity on a presence document on the cache and return the presence information to the first entity based upon the aggregator level of service.

In another embodiment of the invention, there is provided a method of optimizing throughput and quality of service of a presence enabled managed service. The method comprises: 1) producing computer executable program code; 2) storing the code on a computer readable medium; 3) providing the program code to be deployed and executed on a computer system, the program code causing the computer system to: a) enable a first entity to request from an aggregator of presence services presence information of a second entity; b) look up a profile of the aggregator stored in a cache of a presence server hosted by the presence enabled managed service; c) determine from the profile an aggregator level of service the aggregator has subscribed to from the presence enabled managed service, wherein the aggregator level of service is one of high level service, medium level service, and low level service; and d) store the presence information of the second entity on a presence document on the cache and return the presence information to the first entity based upon the aggregator level of service.

In another embodiment of the invention, there is provided a programmable device. The device comprises: 1) a processing means; 2) a memory in communication with the processing means comprising an instruction logic parser logic component; 3) a network interface in communication with the processing means and the memory; wherein the processing means is configured to: a) parse a request from a first entity requesting from an aggregator of presence services presence information of a second entity; b) look up a profile of the aggregator stored in a cache of a presence server hosted by the presence enabled managed service; c) determine from the profile an aggregator level of service the aggregator has subscribed to from the presence enabled managed service, wherein the aggregator level of service is one of high level service, medium level service, and low level service; and d) store the presence information of the second entity on a presence document on the cache and return the presence information to the first entity based upon the aggregator level of service.

DETAILED DESCRIPTION OF THE INVENTION

For convenience the Detailed Description of the Invention has the following sections:

I. General Description; and

I. General Description

The present application discloses systems, methods, devices and program products for managing and optimizing presence related requests to at least one aggregator or subscriber of presence enabled managed services. In an embodiment of the invention, the provider of the presence enabled services (hereinafter “presence service”) is typically a telecommunication service hosting a telecommunication network for hosting telecommunications such as cellular telephone service or other voice and data communications. In an embodiment, the telecommunication service hosts a presence server for storing presence information about one or more presentities connected directly or indirectly to the telecommunication service. For example, the presence service may store presence information about presentities including whether a presentity is currently connected to the telecommunications service and available for communicating with the presence requestor.

In another embodiment of the invention, the presence information is stored on a presence server that is hosted by an entity that is external to the telecommunications service. Presence information about a presentity that is requested from a presence requester connected to the telecommunications network is retrieved from the presence server of the entity through the telecommunications network. The presentity may be connected directly to the telecommunications service or it may be connected to the presence service through another communications or computer network. Alternately, the presence requester may be indirectly connected to the telecommunications service through another communications network and be requesting presence information about a presentity connected directly to the telecommunications service.

The at least one aggregator may be a subscription based service (such as GOOGLE™, YAHOO™, MSN™ and AOL IM™) or other service wherein the presence requester and/or the presentity may subscribe and log in to the service through the telecommunications network or other computer network connected to the telecommunications network. (GOGGLE is a trademark of Google, Inc. in the United States or other countries; YAHOO is a trademark of Yahoo, Inc. in the United States or other countries; MSN is a trademark of the Microsoft Corporation in the United States or other countries; and AOL IM is a trademark of AOL, Inc. in the United States or other countries.) For example, a presence requestor may log onto a subscription based service on a computer network through a remote computer and request presence information about a presentity that is connected directly to the telecommunications service through a remote device such as a cellular telephone or other mobile wireless device having a unique identifier such as a mobile device number (MDN). Once the presence information is received, the presence requester may initiate communication with the presentity, if available, using a medium such as instant messaging service using the SIP protocol or other messaging/communication services (such as SMS text messaging, VOIP, data over IP and cellular telephones).

Alternately, a presence requester connected directly to the telecommunications service through a device such as a cellular telephone or other mobile device may request presence information about a presentity connected to a computer network connected to the telecommunications service through a remote computer. It should be understood that there may be multiple aggregators (alternately referred to as subscribers) that partner with and have a service level agreement (SLA) with the presence service for providing presence requesters with presence information for presentities connected thereto. Thus, a presence requester that subscribes to one aggregator connected to the presence service may request presence information of a presentity that is a subscriber of another aggregator also connected to the presence server.

The presence information that may be provided to a presence requester about a presentity includes the presentities availability to communicate with the presence requestor, e.g., including, but not limited to, whether the presentity is on-line, will accept all communications or only communications of a particular type (voice, text, data, protocol) or from specified presence requestors, the channel for communicating with, the presentity is busy and wishes to not be disturbed, is currently on a cellular phone voice or data session, is in a particular location or out of a particular location, the last time the presentity was logged on, what activities the presentity may be doing, or other information the presentity may wish the presence requestor to have.

The presence information of the presentity is stored on a presence document on the presence server. The presence document may be an XML document or a representational state transfer “REST” based resource document which allows for the document to be stored and transmitted via a standardized interface (e.g., HTTP) and exchange representations of these resources. The use of the REST based resource presence document provides improved response time and reduced server load due to its support for the caching of representations of the presence document which is discussed in more detail below. In addition, the use of the REST based resource for the presence document allows the presence request to be also of the REST based resource protocol providing for improved response time and reduced server load.

In another embodiment of the invention, the aggregator may include in the SLA an agreement to provide other information to the presentities or presence requestors when they log onto the telecommunications service or computer network connected to the telecommunications service. For example, when a particular presentity or presence requestor connects to the telecommunications service or computer network, the aggregator may provide information such as the weather, traffic information or other information relevant to the location of the presentity or presence requester.

In an embodiment of the invention, the systems, methods, devices and program products uses a specialized caching algorithm for managing presence data so that it is more efficiently provided to presence requestors while reducing latency and increasing overall platform throughput via a caching mechanism. Particularly, the present application discloses systems, methods, devices and program products that allow subscribers to request presence information on an as needed basis, and also optimize the way it is reused for their own needs. With the use of lazy caching or predictive caching, the subscriber is able to determine if subcomponents of the presence information is likely to be called by the presence requestor. The subscriber has the ability to inform the system what items of presence information that may need to be placed in cache that are subcomponents of the presence request. The presence service uses an algorithm for combining quality of service (QOS) specified in the SLA between the subscriber and the presence service. The SLA also provides for the subscriber signing up for a level of throughput Q′ and a trigger level μ that proactively starts asynchronous presence requests under special conditions. The presence service hosts a computer system known as a presence server that uses an optimization agent to determine which items should be cached based off of a subscriber's priority and probability that a subset of a presence document will be required by the presence requester. This aids in determining what subsets of a document should or should not be cached for use by the user.

The optimization mechanism may also use (REST) based abstraction for presence documents that goes back on the intial request to retrieve a base presence document, but is effectively able to evaluate if subsets of the base document are sufficient for future subsequent presence requests made by the presence requester.

Referring now toFIG. 1, shown is block diagram of an embodiment of an architecture of systems, methods, devices and program products for optimizing quality of service, reducing latency, and improving throughput of presence related requests in an IP multimedia subsystem based telecommunications network. At least one presence requester105is connected to an access network115through a communications link112which may be a telecommunications service or other communications network. Communications link112may be a wireless communications connection or other communications connection. The presence requester105may connect to the access network115with a mobile device such as a wireless mobile device or other communications device. For example, the mobile device may be a cellular telephone or wireless personal computing device or a remote computer. The mobile device may include a mobile device number (MDN) or other unique identifier.

The access network115is connected via communications link116to one or more aggregators121,122,123,124,125of presence based managed services on a subscription basis as defined in the SLA, and collectively shown inFIG. 1in the Aggregator and Reseller Tier120. Thus, the presence requester105is connected to one or more of the aggregators121,122,123,124,125through the access network115. Alternately, the presence requester105may be connected to one or more aggregators121,122,123,124,125through another communications network.

At least one presentity110is connected to the access network115through a communications link112which may be a telecommunications service or other communications network. Communications link112may be a wireless communications connection or other communications connection. The presentity110may connect to the access network115with the mobile device such as the wireless mobile device or other communications device. For example, the mobile device may be a cellular telephone or wireless personal computing device or a remote computer. Thus, the presence requestor105is connected to one or more of the aggregators121,122,123,124,125through the access network115. Alternately, the presentity110may be connected to one or more aggregators121,122,123,124,125through another communications network.

The access network115may be a telecommunications service which provides the presence enabled managed services to the one or more of the aggregators121,122,123,124,125. If the access network115provides the presence enabled managed services to the one or more of the aggregators121,122,123,124,125, then the access network115will host a presence server using the SIP signalling protocol, such as the Presence SIP Application Server130shown inFIG. 1. Alternately, the presence service could be another entity outside of the telecommunication service domain that hosts a presence server such as the Presence SIP Application Server130. In this case, aggregators121,122,123,124,125are connected to the presence server130via communications link126. The presence server130collects and stores presence information for presentities110that subscribe to one of the aggregators121,122,123,124,125. Thus, a presence requestor105that subscribes to one of the aggregators121,122,123,124,125may request presence information stored on the presence server130of a presentity110that subscribes to one of the aggregators121,122,123,124,125.

The presence server130includes an optimization agent135that uses a specialized caching algorithm for managing presence data so that it more efficiently provided to presence requesters105while reducing latency and increasing overall platform throughput via a caching mechanism. The optimization agent135determines what items should be cached on the presence server130based on the aggregator's121,122,123,124,125priority and probability that a subset of a presence document136will be required by the subscriber. This determines what subsets of a presence document136should or should not be cached for use by the aggregators121,122,123,124,125according to the SLA between the presence service and the particular aggregator.

The optimization agent135uses three dimensions for optimization. The dimensions are aggregator priority T′, throughput Q′ that the aggregator has signed up for, and a proactive caching mechanism or trigger μ. The threshold priority T′ value for each aggregator is tiered in categories. For example, the aggregator may be a high value subscriber where T′ is a time x in seconds that is the maximum amount of time that presence information for presentities may remain in cache131on the presence server130. The aggregator may be a medium value subscriber where T′ is a time y in seconds that is the maximum amount of time that presence information for presentities may remain in the cache131. The aggregator may be a low value subscriber where a time T′ is a time z in seconds that is the maximum amount of time that presence information for presentities may remain in the cache131.

The throughput Q′ is the threshold throughput value in transactions per second (TPS) that the aggregator has signed up for. The throughput Q′ value is the maximum number of presence requests that an aggregator can present to the presence service in one second. For example, for a high value subscriber the throughput may be Q′x=100 TPS. The throughput Q′ for a medium value subscriber may be Q′y=50 TPS. The throughput Q′ for a low value subscriber may be Q′z=25 TPS.

The third dimension is a threshold trigger μ value that proactively starts making asynchronous presence requests under special conditions. The special condition may be an amount of time that has elapsed since the last presence request a presence requestor105made of a presentity's presence information. For example, for a high value subscriber the trigger μ may be μx=0.1x, where x is a predetermined time value, e.g., one second. Thus, for a high value subscriber, the presence server130may automatically update the presence information in cache131every tenth of a second for presentities110currently connected to the presence service. This means that the presence service makes a high effort to provide updated presence information to the presence requester105rather than relying on presence information that was collected at an earlier time, thereby highly improving quality of service and reducing latency.

The trigger μ value for a medium value subscriber may be μy=0.2y where y is a predetermined time value, e.g., one second. Thus, for a medium value subscriber, the presence server130may automatically update the presence information in cache131every two-tenths of a second for presentities110currently connected to the presence service. This means that the presence service makes a moderate effort to provide updated presence information to the presence requester105rather than relying on presence information that was collected at an earlier time, thereby moderately improving quality of service and reducing latency.

The trigger μ value for a low value subscriber may be μz=0.3z where y is a predetermined time value, e.g., one second. Thus, for a low value subscriber, the presence server130automatically updates the presence information in cache131every three-tenths of a second for presentities110currently connected to the presence service. This means that the presence service makes only a slight effort to provide updated presence information to the presence requester110rather than relying on presence information that was collected at an earlier time, thereby only slightly improving quality of service and reducing latency.

The use of the trigger μ is particularly useful for optimizing quality of service and reducing latency when using the REST based resource for a presence document136since once a presence document136received as a result of the initial presence request is stored on the presence server130, only the portions of the presence document136that have changed need to be updated. For example, if the initial presence document136contained presence information such as the location, method of communicating, and the presentity's availability for communicating, and only the presentity's location changed between presence requests, the presence document136need only be updated with the presentity's current location. Thus, each time the trigger μ updates the presence document136in cache131according to the subscriber's usage level, only the presence information that has changed since the last request need be updated in cache131.

In another embodiment of the invention, the presence server130may be connected via a communication link137to an aggregation proxy server140which is connected to one or more sources that may collect presence information about one or more presentities110connected to legacy sources such as a legacy WWAN145, location platform146, the home location infrastructure (HLR)147and other instant messaging legacy platforms that are not SIP compliant, such as an external IM gateway148. The aggregation proxy server140therefore would require software from independent service vendors (ISV'S) for pulling the presence information from these sources when requested.

Referring now particularly toFIG. 2and toFIG. 1, shown is a flow diagram illustrating an embodiment of a method or process using the optimization agent135to determine what content of the presence document136should be cached based off the aggregator's priority and probability that a subset of a presence document136will be required by the subscriber. The method begins in201wherein a presence requestor105who is a subscriber of one of the aggregators121,122,123,124,125requests presence information of a presentity110who is a subscriber of one of the aggregators121,122,123,124,125or the legacy platforms145,146,147,148. The presence request is submitted to the presence server130hosted by the access network115or other computer network. In202, the optimizing agent135performs a lookup of the profile associated with the aggregator121,122,123,124,125the presentity has subscribed to and determines the level of service the aggregator has subscribed to including priority, throughput Q′ and proactive trigger μ. In203, the presence request is analyzed. The method continues in step204where the optimization agent135determines if presence information for the associated mobile device number (MDN) of the presentity is in cache131. If it is not, in207a query is sent to the presentity110, and the resulting presence information is added to the presence document136in the cache131along with a timestamp. In211, the presence information is then returned to the presence requester105.

In205, it is determined if the presence information for the MDN is in the cache131, but it has been in the cache131for longer than the subscriber priority T′, a query is sent to the presentity110, followed by an update of the presence information (including timestamp) in the cache131. In211, the updated presence information is then returned to the presence requester105.

In206, it is determined if the presence information for the MDN is in the cache131and the Q′ value is equal to or exceeds the threshold for the subscriber level, and the time for which the presence information has been in the cache131is equal to or less than the trigger μ, then return presence information in the cache131, but proactively send a presence request to the presentity110and update the cache131with the updated presence information and timestamp. If the presence information for the MDN is in the cache131, and the rate of query for the MDN is less than Q′ for the category of the subscriber and the time value of the trigger μ the presence information has been there is less than the time value of the trigger μ associated with the category, then in208the presence information in the cache131is returned to the presence requester105.

In209, the presence information returned in208is evaluated to determine if it is a REST based resource presence document and what parts of the presence document is germane to the presence request. If it is not a REST based resource document, in211the presence information is returned to the presence requester105. If the presence document is a REST resource presence document, in210it is determined if only a subset of the presence document136is required to send the current presence information. If only a subset of the presence document is necessary, in211the subset of the presence document136is returned to the presence requester105. In210, if the whole presence document is required, the whole presence document136is returned to the presence requester105in211.

The presence requester105may send additional attributes in the presence request that assist the optimization agent135in determining what subsets of the presence document136may be required. This allows the optimization agent135to be overridden by the presence requester105if the presence requester105has permission to override the optimization agent's algorithm. This gives full control to the presence requester105to free cache131subsets of the presence document136that the optimization agent135may not have cached. This override prevents the burning of data that may be used in the near future. In addition, in step207the optimization agent135may periodically prune presence documents136that remain in cache longer than the maximum allowable time which is the time T′ of the highest subscriber category.

Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java®, Smalltalk®, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. (JAVA is a trademark of Oracle in the United States or other countries; SMALLTALK is a trademark of Instantiations, Inc. in the United States or other countries.) The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. Thus, embodiments of the present invention comprise methods, apparatus (e.g. systems, devices, etc.) and computer program products. For example, it will be understood that each block of the flowchart illustrations and/or block diagrams of the figures, includingFIGS. 1 and 2as described above, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

Referring now toFIG. 3, an exemplary computerized implementation includes a computer system304deployed within a computer infrastructure308such as a computer or a programmable device such as a personal digital assistant (PDA) or cellular phone. This is intended to demonstrate, among other things, that the present invention could be implemented within a network environment340(e.g., the Internet, a wide area network (WAN), a local area network (LAN), a virtual private network (VPN), etc.) in communication with one or more additional computers336, or on a stand-alone computer infrastructure308. In the case of the former, communication throughout the network340can occur via any combination of various types of communication links. For example, the communication links can comprise addressable connections that may utilize any combination of wired and/or wireless transmission methods. Where communications occur via the Internet, connectivity could be provided by conventional TCP/IP sockets-based protocol, and an Internet service provider could be used to establish connectivity to the Internet.

As shown, the computer system304includes a central processing unit (CPU)312, a memory316, a bus320, and input/output (I/O) interfaces324. Further, the computer system304is shown in communication with external I/O devices/resources328and storage system332. In general, the processing unit312executes computer program code, such as the code to implement various components of the process and system for optimizing quality of service, reducing latency, and improving throughput of presence related requests in an IP multimedia subsystem based telecommunications network inFIGS. 1-2and described above, for example including optimization agent135, cache131, and presence document136components discussed above, which are stored in memory316and/or storage system332. It is to be appreciated that two or more, including all, of these components may be implemented as a single component.

While executing computer program code, the processing unit312can read and/or write data to/from the memory316, the storage system332, and/or the I/O interfaces324. The memory316may include registers such as registers352,354and356where such data is written and/or read. The bus320provides a communication link between each of the components in computer system304. The external devices328can comprise any devices (e.g., keyboard, pointing device, display, etc.) that enable a user to interact with computer system304and/or any devices (e.g., network card, modem, etc.) that enable computer system304to communicate with one or more other computing devices.

The computer infrastructure308is only illustrative of various types of computer infrastructures for implementing the invention. For example, in one embodiment, computer infrastructure308comprises two or more computing devices (e.g., a server cluster) that communicate over a network to perform the various process steps of the invention. Moreover, computer system304is only representative of various possible computer systems that can include numerous combinations of hardware.

To this extent, in other embodiments, the computer system304can comprise any specific purpose-computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general-purpose hardware/software, or the like. In each case, the program code and hardware can be created using standard programming and engineering techniques, respectively. Moreover, the processing unit312may comprise a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server. Similarly, the memory316and/or the storage system332can comprise any combination of various types of data storage and/or transmission media that reside at one or more physical locations.

Further, I/O interfaces324can comprise any system for exchanging information with one or more of the external device328. Still further, it is understood that one or more additional components (e.g., system software, math co-processing unit, etc.) not shown inFIG. 3can be included in computer system304. However, if computer system304comprises a handheld device or the like, it is understood that one or more of the external devices328(e.g., a display) and/or the storage system332could be contained within computer system304, not externally as shown.

The storage system332can be any type of system (e.g., a database) capable of providing storage for information under the present invention. To this extent, the storage system332could include one or more storage devices, such as a magnetic disk drive or an optical disk drive. In another embodiment, the storage system332includes data distributed across, for example, a local area network (LAN), wide area network (WAN) or a storage area network (SAN) (not shown). In addition, although not shown, additional components, such as cache memory, communication systems, system software, etc., may be incorporated into computer system304.

Still yet, computer infrastructure308is intended to demonstrate that some or all of the components of implementation could be deployed, managed, serviced, etc. by a service provider who offers to implement, deploy, and/or perform the functions of the present invention for others, for example by licensing methods and browser or application server technology according to the present invention to an internet service providers (ISP) or cellular telephone provider. In one embodiment, the invention may comprise a business method that performs the process steps of the invention on a subscription, advertising, and/or fee basis. Thus, a service provider can create, maintain, support, etc., a computer infrastructure, such as the computer infrastructure308that performs the process steps of the invention for one or more customers, and in return the service provider can receive payment from the customer(s) under a subscription and/or fee agreement and/or the service provider can receive payment from the sale of advertising content to one or more third parties.

The invention also provides for computer-implemented methods according to the present application. In this case, a computer infrastructure, such as computer infrastructure308, can be provided and one or more systems for performing the process steps of the invention can be obtained (e.g., created, purchased, used, modified, etc.) and deployed to the computer infrastructure. To this extent, the deployment of a system can comprise one or more of: (1) installing program code on a computing device, such as computer system304, from a computer-readable medium; (2) adding one or more computing devices to the computer infrastructure; and (3) incorporating and/or modifying one or more existing systems of the computer infrastructure to enable the computer infrastructure to perform the process steps of the invention.