The following term is defined for use in this Specification, including the appended claims:
Telecommunications network 201 is a telecommunications network that comprises one or more of the Internet, the Public Switched Telephone Network (PSTN), a local area network (LAN), and so forth. Network 201 comprises or is connected to one or more transmission-related nodes such as gateways, routers, or switches that are used to direct packets from one or more sources to the correct destinations of those packets. Network 201 is capable of handling SIP-based messages in well-known fashion that are transmitted among two or more SIP-capable processing systems.
Each of telecommunications endpoints 203-1 through 203-N, as well as calling endpoint 202, is a SIP-capable device such as an Internet-protocol telephone, a notebook computer, a personal digital assistant (PDA), a tablet computer, and so forth. Each endpoint is capable of originating outgoing calls and receiving incoming calls, in well-known fashion. In addition, each endpoint is capable of one or more communication modes that comprise but are not limited to voice, video, data, email, instant messaging, and chat. It will be clear to those skilled in the art how to make and use telecommunications endpoints 203-1 through 203-N, as well as endpoint 202.
Telecommunications endpoints 203-1 through 203-N all belong to the same user. Each endpoint 203-n, for n=1 through N, is identified by a unique contact address, as is known in the art. Moreover, the contact addresses for endpoints 2031 through 203-N are associated with a public address of the particular user. The public address, as is known in the art, is an identifier that is used to represent the user publicly. It is an address that might, for example, appear on the user's business card. When calling parties specify the user's public address, it is up to the SIP network to resolve the address down to one or more of several endpoint devices that the user might possess. Each of endpoints 203-1 through 203-N registers its contact address and its association with a particular public address, at which point the endpoint becomes a contact for a particular user.
For example, a user named Carol Q. Jones might have a public address of cjones@company.com and four endpoints that are identified by the following contact addresses:
i. sip:cjones@111.111.111.111:5061;transport=t/s;
ii. sip:cqj@111.111.111.222:5061;transport=tls;
iii. sip:19735551212@company.com; and
iv. sip: cjones@research.company.com.
In the example, each of Carol's four endpoints is considered to be a contact for the purpose of reaching her. When Carol is called by another party, such as the user of calling endpoint 202, the public address that is used to specify the destination is cjones@company.com. System 200 routes the incoming call to one or more of endpoints 203-1 through 203-N in the manner described below and with respect to
As intimated above, endpoints 203-1 through 203-N belong to a specific human user. As those who are skilled in the art will appreciate, however, endpoints 203-1 through 203-N might belong to a user that is itself a telecommunications device, such as an automated call distributor (ACD). In this case, incoming calls have as their destination address the address of the ACD system, where the individual contact addresses correspond to the various endpoints in the ACD system.
Proxy server 204 is a server that operates in accordance with the Session Initiation Protocol and that handles incoming calls (i.e., invitations to join a session) on behalf of each of the users in telecommunications system 200 to whom public addresses are assigned. The salient components of proxy server 204 are described below and with respect to
Although a proxy server executes the tasks of the illustrative embodiment, in some alternative embodiments another data-processing system can be used to execute those tasks, as those who are skilled in the art will appreciate. For example, another SIP-based server (e.g., SIP feature server, etc.) can be used. In any event, it will be clear to those skilled in the art, after reading this specification, how to make and use proxy server 204.
Receiver 301 is part of a network interface that receives signals from telecommunications endpoints (e.g., endpoint 202, etc.) via network 201 and forwards the information encoded in the signals to processor 302, in well-known fashion. It will be clear to those skilled in the art, after reading this specification, how to make and use receiver 301.
Processor 302 is a general-purpose processor that is capable of receiving information from receiver 301, executing instructions stored in memory 303, reading data from and writing data into memory 303, executing the tasks described below and with respect to
Memory 303 stores the instructions and data used by processor 302. Memory 303 might be any combination of dynamic random-access memory (RAM), flash memory, disk drive memory, and so forth. It will be clear to those skilled in the art, after reading this specification, how to make and use memory 303.
Transmitter 304 is part of a network interface that receives information from processor 302 and transmits signals that encode this information to telecommunications endpoints (e.g., endpoint 203-n, etc.) via network 201, in well-known fashion. It will be clear to those skilled in the art, after reading this specification, how to make and use transmitter 304.
In the illustrative scenario described, a first user, Bob Smith, wishes to transmit an instant message from that endpoint device at which he is currently active, namely telecommunications endpoint 202, to a second user, Carol Jones (from the earlier example). Carol has several endpoint devices that are capable of instant messaging, namely telecommunications endpoints 203-1 through 203-3.
Although endpoints 202 and 203-1 through 203-3 are featured in the example, the present invention can be applied to other calling endpoints and endpoints of a called party, as those who are skilled in the art will appreciate. Furthermore, illustrative embodiment features the transmission and displaying of instant messages in a Session Initiation Protocol-based (SIP-based) network. It will, however, be clear to those who are skilled in the art, after reading this specification, how to apply the present invention to the transmission and presentation of other types of messages, displayable or otherwise, in a network that is based on a different protocol than SIP.
To start the scenario, Bob sends an instant message, using endpoint 202, to Carol's public address (i.e., “cjones@company.com”). Network 201 routes the instant message to proxy server 204, the proxy server at which Carol's public address is registered.
At task 401, proxy server 204 receives, from endpoint 202, the instant message that is addressed to Carol's public address.
Server 204 then proceeds to process the received message. At task 402, server 204 recognizes that the received message is an instant message and, as such, requires special handling; as a result, server 204 retrieves presence data for Carol Jones (as represented by cjones@company.com). In some embodiments, server 204 retrieves the data from a presence server, as is known in the art. The presence data comprises one or more presence indications such as, but not limited to, the following:
i. the availability status of the user at each endpoint,
ii. the last endpoint that reported available presence, and
iii. the last endpoint that reported any activity.
In some embodiments, the retrieving of the presence data depends on the access protection of one or more telecommunications endpoints that are identified by contact addresses associated with the public address. For example, if the only endpoints that Carol has are devices with displays that have access protection (e.g., a notebook computer, etc.), then it is less important to be selective about the set of endpoints to send the message to than if Carol had devices with displays that lack access protection (e.g., a deskset in an office, etc.). As those who are skilled in the art will appreciate, in some embodiments the access protection of an endpoint can be derived from one or more other characteristics of the endpoint, such as the endpoint's device type (e.g., an Internet-protocol telephone, a notebook computer, a personal digital assistant [PDA], a tablet computer, a SIP-based deskset, etc.).
After server 204 retrieves the presence data, in some embodiments the server generates an intermediate first set of contact addresses that are based, at least in part, on the presence indications.
At task 403, server 204 filters the first set of contact addresses, based on the presence data and on one or more rules, resulting in a non-empty filtered set of one or more contact addresses. The rules specify how the instant message is to be delivered and can be any combination of user-defined rules, business rules (i.e., enterprise-defined rules), or other types of rules.
Examples of user-defined rules include:
Examples of business rules include:
At task 404, server 204 transmits the instant message to those contact addresses in the filtered set of contact addresses. In the example, it turns out that exactly one contact address is in the filtered set, that of endpoint 203-1; as a result, server 204 transmits the instant message to endpoint 203-1 only. As those who are skilled in the art will appreciate, however, server 204 is capable of sending the same instant message to multiple endpoints—in parallel, in sequence, or both.
Proxy server 204 is also capable of interacting with industry-standard features such as Offline Message Retrieval. The prior-art message delivery mechanisms (e.g., Yahoo Messenger, etc.) assume that a user has a single endpoint device that the user is either present on or not present on; these mechanisms store an instant message for a user when she is not online. In the offline message retrieval feature, when the user eventually goes online, she can retrieve the missed messages. In the technique of the illustrative embodiment, the user can have multiple endpoints all online at the same time. Proxy server 204 transmits the message only to the endpoints that meet the defined rules, in accordance with the illustrative embodiment; meanwhile, the other endpoints of the user (e.g., those at which the user was not present, etc.) can get a notification that a message was read at another endpoint and cached for later viewing. In other words, some embodiments of the present invention combine what is, in essence, a “not-present” message retrieval with offline message retrieval.
It is to be understood that the above-described embodiments are merely illustrative of the present invention and that many variations of the above-described embodiments can be devised by those skilled in the art without departing from the scope of the invention. For example, in this Specification, numerous specific details are provided in order to provide a thorough description and understanding of the illustrative embodiments of the present invention. Those skilled in the art will recognize, however, that the invention can be practiced without one or more of those details, or with other methods, materials, components, etc.
Furthermore, in some instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the illustrative embodiments. It is understood that the various embodiments shown in the Figures are illustrative, and are not necessarily drawn to scale. Reference throughout the specification to “one embodiment” or “an embodiment” or “some embodiments” means that a particular feature, structure, material, or characteristic described in connection with the embodiment(s) is included in at least one embodiment of the present invention, but not necessarily all embodiments. Consequently, the appearances of the phrase “in one embodiment,” “in an embodiment,” or “in some embodiments” in various places throughout the Specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, materials, or characteristics can be combined in any suitable manner in one or more embodiments. It is therefore intended that such variations be included within the scope of the following claims and their equivalents.