WO2000041534A2 - Routing messages to achieve unified communications - Google Patents

Routing messages to achieve unified communications Download PDF

Info

Publication number
WO2000041534A2
WO2000041534A2 PCT/US2000/000689 US0000689W WO0041534A2 WO 2000041534 A2 WO2000041534 A2 WO 2000041534A2 US 0000689 W US0000689 W US 0000689W WO 0041534 A2 WO0041534 A2 WO 0041534A2
Authority
WO
WIPO (PCT)
Prior art keywords
server
message
computer
client
operable
Prior art date
Application number
PCT/US2000/000689
Other languages
French (fr)
Other versions
WO2000041534A3 (en
Inventor
Niraj A. Shah
Ethan B. Hugg
Kevin L. Chestnut
Original Assignee
Infospace, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infospace, Inc. filed Critical Infospace, Inc.
Priority to JP2000593156A priority Critical patent/JP2002535743A/en
Priority to AU33454/00A priority patent/AU3345400A/en
Priority to BR0007443-8A priority patent/BR0007443A/en
Priority to EP00911575A priority patent/EP1145487A3/en
Publication of WO2000041534A2 publication Critical patent/WO2000041534A2/en
Publication of WO2000041534A3 publication Critical patent/WO2000041534A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/06Message adaptation to terminal or network requirements
    • H04L51/066Format adaptation, e.g. format conversion or compression

Definitions

  • the invention relates generally to communication networks that include computer hardware and software, and more particularly to a computer, client software run by the computer, and a method implemented by the client software for routing messages according to the message recipient's preferences.
  • a person may have more than one personal message device such as a wireless pager (e.g. a Skytel pager) or an e-mail client (e.g. Microsoft Outlook) that provides access to the person's e-mail account.
  • a wireless pager e.g. a Skytel pager
  • an e-mail client e.g. Microsoft Outlook
  • these devices communicate to other message devices via a computer network such as a local intranet or the Internet.
  • FIG. 1 is a block diagram of a conventional computer network 10, which allows communication between message devices.
  • the network 10 includes a sender's computer 12s, which has an input device 13s (e.g. a keyboard or a mouse) coupled thereto and which includes a processor 14s coupled to a storage device 16s.
  • the network 10 also includes a recipient's computer 12r, which has an input device 13r and which includes a processor 14r and a storage device 16r.
  • the storage devices 16s and 16r may include a hard drive, volatile electronic memory, or both.
  • the computers 12s and 12r are connected to a communication path 18 by networking circuitry that is omitted for clarity.
  • the path 18 may represent the communication lines that tie into and form the Internet.
  • the processor 14s can run messaging devices such as a desktop pager 20s, a web browser 22s (e.g. Netscape Navigator), and an e-mail client 24s, which allows the sender to send and receive e-mail messages via an e-mail server 26s. Although the processor 14s executes the software that runs these devices, it is common to state that the computer 12s runs these devices.
  • the sender may also have a wireless pager 28s and a voice-mail server 30s, which are also connected to the path 18.
  • the voice-mail server 30s may allow the sender to send and receive voice messages via the computer 12s or via a telephone system (not shown).
  • the recipient's computer 12r can run a desktop pager 20r, a web browser 22r, and an e-mail client 24r, which allows the recipient to view e-mail received on an e-mail server 26r.
  • the recipient may have a wireless pager 28r and a voice-mail server 3 Or.
  • the computers and message devices are labeled as sending or receiving devices for description purposes, it is understood that these labels are arbitrary such that the sending computer and message devices can be used to receive messages and the receiving computer and message devices can be used to send messages.
  • the system 10 may also include a file server 32, which is connected to the path 18 and which can assist with the transfer of messages between the sender's messaging devices and the recipient's messaging devices.
  • the server 32 may be a server of an internet service provider (ISP), which facilitates the transfer of messages between ISP account holders and between an account holder and a non-account holder.
  • ISP internet service provider
  • the server 32 may be a paging company's server that transfers messages between the wireless pagers 28s and 28r.
  • the network 10 typically allows two topologies for transferring messages from one device to another: the point-to-point (PTP) topology, and the star topology.
  • PTP point-to-point
  • a message is routed directly between the sending and receiving devices.
  • the desktop pager 20s sends a message directly to the desktop pager 20r via the computer 12s, the path 18. and the computer 12r.
  • the server 32 may open this direct path between the pagers 20s and 20r.
  • the message is routed through an intermediate node or device such as the server 32.
  • the pager 28s sends a message intended for the pager 28r to the server 32, which may be the paging company's server.
  • the server 32 then processes the message and sends it to the pager 28r. This may occur for security or other reasons. Therefore, because the PTP topology eliminates the overhead of having the server receive and send the message, it is often faster and ties up fewer network resources than the star topology.
  • the server 32 may be programmed to route all messages with a star topology to prevent messaging failure. This may create an unnecessary bottleneck at the server 32, thus significantly increasing access times and aggravation for users of the server 32.
  • the server software will have to be modified to allow this.
  • the server 32 can be used in both network environments, then the server manufacturer will have to develop and offer two respective software packages, one for PTP and another for star.
  • the customer will have to install new software if the network environment changes, or if he wishes to install the server 32 in another network 10 having a different environment.
  • a recipient is often unable to retrieve messages from some of his message devices for extended periods of time, and if a message device is unavailable to receive a message, the message may be lost.
  • the sender sends an e-mail message from his e-mail client 24s to the recipient's e-mail server 26r. If the recipient is out of town and has no access to the server 26r other than through the e-mail client 24r, then he must wait until he returns before he learns of and can read the sender's e-mail message. Alternatively, if the sender sends a desktop page from his pager 20s and the recipient's desktop pager 20r is not running, then the message has nowhere to go and may be lost.
  • a message transfer may be unsuccessful if the sending device is of a different type than the receiving device. For example, if the recipient's e-mail client 24r is Microsoft Outlook, it may be unable to read an e-mail message from e-mail clients other than those sold by Microsoft.
  • the server 32 may use polling to allow a sender to determine if an intended recipient's message device is available to receive a message. For example, if the sender wants to send a desktop page, he may first want to determine if the intended recipient's computer is logged onto the server 32, and thus if the recipient is "online" and able to receive the page. To make this determination, the sender requests, via his computer 12s, the server 32 to poll all of the computers that are logged onto the server 32 and to notify the sender if one of these computers is the recipient's computer 12r.
  • a computer communicates with a server.
  • the computer includes a storage device for storing client software that includes access information for first and second messaging devices.
  • the computer also includes a processor that runs the client, provides the access information to the server, generates a message routing preference that causes the server to route a message sent to the first receiving device to the second receiving device, and provides the message routing preference to the server.
  • Such a computer can instruct a server to route a message intended for one of a recipient's message devices to another of the recipient's message devices. For example, suppose the recipient is going on a trip and will not have access to his e-mail account while away. Through his computer, he can instruct the server to route all e-mail messages received while he is away to his wireless pager so that he can view these messages before returning from his trip.
  • Figure 1 is a block diagram of a communications network according to the prior art.
  • FIG. 2 is a block diagram of one embodiment of a communications network according to the invention.
  • FIG. 3 is a block diagram of another embodiment of a communications network according to the invention.
  • Figure 4 is a flow chart of one embodiment of a procedure that the routing servers of Figures 2 and 3 implement to automatically set the network routing topology for transmission of a message.
  • Figure 5 is a computer screen generated by an embodiment of the message routing clients of Figures 2 and 3 for showing a message sender the available message devices of an intended message recipient.
  • Figure 6 is a web home page generated by an embodiment of the message routing server of Figures 2 and 3 for showing the available message devices of an account holder.
  • Figure 7 is a web page generated by an embodiment of the routing servers of Figures 2 and 3 for prompting a sender who is not logged onto the server for a message and other related information.
  • Figure 8 is a web page generated by an embodiment of the routing servers of Figures 2 and 3 for prompting a sender who is logged onto the server for a message and other related information.
  • Figure 9 is a flow chart of a message routing procedure that an embodiment of the routing servers and clients of Figures 2 and 3 implement.
  • Figure 10 is a computer screen generated by an embodiment of the routing clients of Figures 2 and 3 for prompting a recipient for his off-line routing preferences.
  • Figure 11 is a computer screen generated by an embodiment ofthe routing clients of Figures 2 and 3 for prompting a recipient for his on-line-but-unavailable routing preferences.
  • Figure 12 is a flow chart of a procedure implemented by an embodiment of the routing clients of Figures 2 and 3 for finding all of the message devices installed on the computers that respectively run the routing clients.
  • Figure 13 is a device-listing screen generated by the embodiment of the routing clients that implement the procedure of Figure 12.
  • Figure 14 is flow chart of a call-back procedure implemented by an embodiment ofthe servers and clients of Figures 2 and 3.
  • Figure 15 is a call-back-notification screen generated by the embodiment of the routing clients that implement the client portion ofthe call-back procedure of Figure 14.
  • Figure 16 is a flow chart of a procedure implemented by an embodiment of the routing clients of Figures 2 and 3 for learning a recipient's messaging patterns and generating a routing preference based on these patterns.
  • Figure 17 is a redial screen generated by the embodiment of the routing clients that implement the procedure of Figure 16.
  • Figure 18 is a flow chart of a procedure implemented by one embodiment of the servers or clients of Figures 2 and 3 for setting client priority at log in if multiple clients ofthe same user are logged onto the server.
  • Figure 19 is a flow chart of a procedure implemented by one embodiment of the servers or clients of Figures 2 and 3 for setting client priority based on user activity if multiple clients ofthe same user are logged on to the server.
  • FIG. 2 is a block diagram of an embodiment of a communication network 40 according to the invention, where elements that are common to Figure 1 have the same reference numerals.
  • the network 40 includes a routing server 42, which includes a conventional processor 44 and a conventional storage device 46.
  • the device 46 includes a volatile memory such as dynamic random access memory (DRAM), a non-volatile memory such as a hard disk, or a combination of both volatile and nonvolatile memory.
  • the processor 14r of the computer 12r runs a routing client 48r, which, as discussed below, works with the server 42 to route the recipient's messages according to the recipient's message routing preferences.
  • the processor 14s of the sender's computer 12s may also run a routing client 48s, which in one embodiment is the same as the routing client 48r.
  • the server 42 runs My Agent server software from Active Voice Corporation, and the clients 48 s and 48r are My Agent software clients from Active Voice.
  • the server 42 routes the recipient's incoming messages to the recipient's message device specified by the recipient's routing preferences.
  • the routing preferences may specify that the server 42 route all messages directed to the desktop pager 20r to the e-mail server 26r.
  • the recipient gives the sender access to one or more of the recipient's message devices via the server 42.
  • this access is through the sender's routing client 48s, the recipient's web page set up on the server 42, or the recipient's address with respect to the server 42.
  • the server 42 automatically determines the best network topology for routing a message from the sending device to the receiving device specified by the recipient's routing rules based on criteria including the sender's identity, the identity of the recipient's message device to which the sender has directed the message, the priority of the message (e.g., urgent, normal, or low), the receiver's availability, and the size of the message.
  • the server 42 routes the message using a PTP topology unless this topology is unavailable with respect to the message.
  • the server 42 reformats the message before sending it to the receiving device.
  • the server 42 allows one type of message device, such as the web browser 22s, to send a message to another type of message device, such as a desktop pager 20r.
  • the server 42 eliminates the problems with conventional polling by maintaining a list of the users that are currently logged onto the server 42. This allows a user to request a "callback" from the server 42 when another user logs onto the server 42.
  • the client 48r monitors the recipient's patterns with respect to his received messages, and based on these patterns, automatically suggests, develops, or maintains the routing preferences that best fit the recipient's lifestyle.
  • the server 42 allows a user to have multiple computers 12r simultaneously logged onto the server 42, where each computer 12r is running a respective routing client 48r. For example, it is common for a user to have a work computer and a home computer. Thus, the server 42 allows both of these computers to be simultaneously logged on and running respective routing clients 48r. To prevent conflicts if the clients 48r have different routing preferences, the clients 48r determine which of them is the primary client whose routing rules the server 42 will follow.
  • FIG 3 is a block diagram of a communications network 60 according to another embodiment of the invention, where like elements have like reference numerals with respect to Figures 1 and 2.
  • the computers 12sl and 12rl are part of local area networks 62s and 62r, respectively.
  • Each of the networks 62s and 62r is protected by a respective conventional firewall, represented by the dashed lines 63 s and 63r, respectively, and includes a respective server 64s and 64r.
  • the communication path 18 represents the Internet
  • the computer 12s and the server 64s communicate with each other over an intranet
  • the computer 12r and the server 64r communicate with each other over another intranet.
  • each of the networks 62s and 62r is similar to the network 40 of Figure 2, where the servers 64s and 64r each correspond to the server 42 of Figure 2.
  • the server 64s routes messages between the message devices of the network 62s in a manner similar to that described for the server 42 of Figure 2.
  • the server 64r routes messages between the message devices ofthe network 63r in a similar manner.
  • the server 42 allows a sending device in the network 62s to send a message to a receiving device in the network 62r and routes the message according to the recipient's routing rules.
  • the firewalls 63s and 63r prevent the server 42 from implementing a PTP topology for such a message. But because the server 42 can automatically select the proper topology, the same server 42 that is used in the network 40 of Figure 2 can also be used in the network 60. That is, neither the server hardware nor server software need be modified, so manufacturing and installation expenses are reduced compared to prior-art communication servers.
  • Figure 4 is a flow chart that details one embodiment of the general topology selection and message routing procedure used by the networks 40 and 60 of Figures 2 and 3, respectively. For clarity, reference will be made to the elements of Figure 2 unless otherwise specified.
  • the sending device for example the desktop pager 20s, initiates the sending of a message to a receiving device by sending a conventional message-initiation header to and requesting the IP address and dynamic encryption key of the receiving device (or of the computer, such as the computer 12s, running the device) from the routing server 42 via the path 18.
  • the pager 20s typically sends this information to the path 18 via the server 64s.
  • the message-initiation header typically includes information such as the identities of the sender and recipient and the length and priority of the message.
  • the server 42 determines the identities of the sending and intended receiving devices from the format of the message header. For example, a header from the desktop pager 20s often has a different number of bytes or is otherwise different than a header from the web browser 22s.
  • the server 42 examines the message-initiation header and, based on the header, the network environment, and the recipient's routing rules, determines the appropriate receiving device and whether or not PTP communication between the sending and receiving devices is possible.
  • the sender desires to send a message from his desktop pager 20s to the recipient's desktop pager 20r. Furthermore, suppose that the recipient's routing rules indicate that the desktop pager 20r is to receive this message. If the server 42 determines that there are no firewalls or other network environment conditions that prevent a PTP topology, it implements a PTP topology.
  • the server 42 determines that a star topology is appropriate so that the server 42 can receive and reformat the message from the e-mail client 24s and then send the reformatted message to the desktop pager 20r.
  • desktop pagers such as the desktop pager 20r often limit the size of a received message to 100-200 bytes. Therefore, if the message from the e-mail client 24s is longer than this, the server 42 will decide on a star topology so that it can receive and truncate the message before sending it to the desktop pager 20r.
  • the server 42 may implement the star topology. For example, suppose the sender wishes to send an e-mail message having a one-megabyte attachment to ten recipients, and that all of the recipients' routing rules indicate that the server 42 is to route such an e-mail message to their respective e-mail servers 26r. In one embodiment, because of the file length and the relatively large number of recipients, the server 42 determines that multicasting is more efficient than setting up direct PTP paths between the sender's e-mail server 26s and the respective e-mail servers 26r.
  • the server 42 implements a star topology by instructing the e-mail server 26s to send the message to the server 42 only once, and then sending the received message to each of the e-mail servers 26r of the respective recipients.
  • the server 42 may forward the message to a conventional multicasting server (not shown), which sends the message to each ofthe e-mail servers 26r.
  • the server 42 may allow the sending device, such as the desktop pager 20s, to first try to send a message with a PTP topology, and if this attempt fails, the server 42 instructs the sending device to retry with a star topology.
  • the server 42 may implement variations ofthe star topology in the network 60 if one or both of the firewalls 63s and 63r prevent the server 42 from opening a PTP path between a message device of the network 62s and a message dev ice of the network 62r.
  • the server 42 after determining that it cannot implement a PTP topology, the server 42 first tries to implement a version of the star topology in which the server 42 bypasses the servers 64s and 64r and communicates directly with the sending and receiving devices. This is significantly faster and causes less traffic on the networks 62s and 62r than if the message were routed through the servers 64s and 64r.
  • the server 42 receives the message from the pager 20s and sends it to the pager 20r in a manner similar to that described above with respect to a star topology in the network 40 of Figure 2. If the server 42 cannot implement this version of the star topology, then, as a last resort, the server 42 routes the message through one or both of the servers 64s and 64r.
  • the server 42 sends the IP address and the dynamic encryption key of the receiving device specified by the routing preferences (or of the computer 12r if it is running the receiving device) to the sending device.
  • the sending device sends the message directly to the receiving device - thus bypassing the server 42, and with respect to the network 60 of Figure 3, bypassing the servers 64s and 64r - and, after it sends the message, conventionally closes the direct PTP communication path over which the sending device sent the message.
  • the server 42 if the server 42 cannot implement a PTP topology, the server 42 implements a star topology. Specifically, the server 42 opens a communication path between itself and the sending device and notifies the receiving device specified by the recipient's routing rules of the incoming data stream that forms the message. For example, as discussed above, if the e-mail client 24s is the sending device and the desktop pager 20r is the receiving device, then the server 42 opens a path between the e-mail client 24s and itself via the e-mail server 26s, and notifies the desktop pager 20r that a message is forthcoming.
  • step 81 the sending device transfers the message to the server 42.
  • the server 42 reformats the message if necessary and then sends the message to the specified receiving device. For example, if the e-mail client 24s is the sending device and uses a first message format and desktop pager 20r is the receiving device and uses a second message format, the server 42 converts the message from the e-mail client 24s into the second format, and then transfers the reformatted message to the desktop pager 20r.
  • step 85 when the sending device finishes sending the message, it notifies the routing server 42, which conventionally closes the communication path between itself and the sending device,
  • step 87 the server 42 conventionally closes the communication path between itself and the receiving device.
  • the servers 42 of the networks 40 and 60 of Figures 2 and 3, respectively can facilitate more efficient communication between message-sending and message- receiving devices by automatically selecting the best network communication topology. Also, the servers 42 allow a recipient to redirect a message from one receiving device to another receiving device, and allow a message device of one type to communicate with a message device of another type.
  • Figures 5-8 disclose embodiments of techniques that allow a sender to send a message to the recipient such that the server 42 can route the message according to the recipient's routing preferences.
  • Figures 5-8 are discussed in conjunction with the network 40 of Figure 2, it being understood that the discussion is also applicable to the network 60 of Figure 3 unless otherwise noted.
  • Figure 5 is a computer screen 90 that allows a sender who is a registered user of the routing server 42 to send messages to a recipient who is also a registered user of the server 42.
  • the sender uses the routing client 48s to create one or more groups of recipients, and adds the recipient to one of these groups. For example, a sender may have a group for work colleagues and another group for personal friends.
  • the client 48r for each designated recipient prompts the respective recipient for messaging information, receives the information from the recipient, and makes this information available to the sender via the server 42. Based on this information, the routing client 48s generates the screen 90 on the sender's computer 12s.
  • the screen 90 includes a list field 92, which includes a list of messaging devices that the recipient has made available to receive messages from the sender.
  • the routing client 48 s is run in a Microsoft Windows® environment so that the sender can select the desired messaging device by pointing and clicking with a mouse. For example, if the sender points and clicks on the "Page" icon, then the routing client 48s will prompt the sender to enter a message to the desktop pager 20s, which will send the message to the recipient's desktop pager 20r (or other message device specified by the recipient's routing rules) with the help of the server 42 as discussed above in conjunction with Figure 4.
  • some messaging devices such as the desktop pager 20s and a chat device (activated by clicking on the "Chat" icon) actually run as part of the routing client 48s.
  • the routing client 48s operates in a similar manner for other message devices as well.
  • the field 92 allows the sender to send messages to the recipient's e-mail server 26r, fax, or telephone.
  • the routing client 48s respectively activates the sender's e-mail client 24s or modem (not shown) so that the sender can proceed to send the message to the respective receiving devices.
  • icons are shown for certain messaging devices, the field 92 may include icons for other messaging devices such as but not limited to a wireless pager (e.g. Skytel®) or a personal digital assistant (PDA).
  • PDA personal digital assistant
  • the screen 90 includes an image field 98, which can include the recipient's photo or a live picture, a greeting field 100, which can include the recipient's greeting, and a log-in status field 102, which indicates whether the recipient - or more accurately the computer 12r running the client 48r - is logged onto the server 42.
  • the screen 90 may also include other fields such as a schedule field that includes the recipient's current calendar.
  • Figures 6 and 7 are web pages that allow a sender who is not registered user of the routing server 42 to send messages via the web browser 22s to a recipient who is a registered user ofthe server 42.
  • Figure 6 is a recipient's home page 104 on the server 42.
  • the sender accesses the home page 104 by using his web browser 22s to access the URL for the home page 104.
  • the page 104 includes a device field 106, a greeting field 108, a log-in status field 110, and an image field 114, and may include other fields such as a schedule field.
  • the device field 106 may include icons for other messaging devices such as but not limited to a wireless pager (e.g. Skytel®) or a personal digital assistant (PDA).
  • a wireless pager e.g. Skytel®
  • PDA personal digital assistant
  • the sender uses the web browser 22s to send a message to a receiving device selected from the field 106, and as discussed above in conjunction with Figure 4. the server 42 reformats the message if necessary and routes the message to the receiving device specified by the recipient's routing preference.
  • the page 104 also includes an option field 116.
  • the "My Groups” option allows the sender to view the groups to which the recipient belongs.
  • the "My Profile” option allows the sender to view the recipient's profile, which includes additional information about the recipient.
  • the "Search My Agent” option allows the sender to access the web pages of other registered users of the server 42 without knowing their URLs. This option is also available from the general home page (not shown) of the server 42. A user, however, may instruct the server 42 to prohibit others from accessing his web page through the "Search My Agent” option for security or privacy reasons.
  • Figure 7 is a page 120, when the server 42 sends the web browser 22s if the sender clicks on the "My E-mail" icon on the page 104 of Figure 6.
  • the screen 120 prompts the sender for information and allows the sender to send an e-mail message to the recipient via the web browser 22s.
  • the server 42 routes this e-mail message to the recipient's e-mail server 26s or to another ofthe recipient's message devices according to the recipient's routing preferences.
  • Figure 8 is a screen 122, which allows a registered user of the server 42 to send a message from the user's own web site to a registered or unregistered recipient.
  • the screen 122 prompts the sender for the necessary information, such as the recipient's user name or e-e-mail address.
  • the screen 122 also includes a "Group Options" field, which allows the user to form and join user groups, to invite other registered users to join a group, and to unjoin groups.
  • Figure 9 is a flow chart showing how the server 42 and the receiving client 48r route messages according to an embodiment of the invention.
  • the flow chart of Figure 9 is similar to the flow chart of Figure 4, except that it focuses on message routing instead of on the determination ofthe network topology.
  • the server 42 receives the message-initiation leader from the sending device.
  • the server 42 determines whether or not the recipient's computer 12r, which runs the client 48r, is logged onto the server. If not, the server 42 routes the message according to the recipient's off-line routing preferences. For example, in one embodiment, if the recipient's device to which the sender directed the message is unavailable, then referring to step 134, the server 42 notifies the sender that the intended receiving device is unavailable.
  • the server 42 may give the sender the option of sending the message to the receiving device specified by the off-line routing preferences or of canceling the message.
  • the server 42 routes the message to the receiving device specified by the recipient's off-line routing preferences. For example, suppose that the sender wants to send a message from the desktop pager 20s to the desktop pager 20r but the computer 12r is not logged onto the server 42 via the client 48r. Furthermore, suppose that the recipient's routing preferences instruct the server 42 to route desktop pages to the e-mail server 26r if the computer 12r is off line. Thus, the server 42 informs the sender that any page he sends will be routed to the recipient's e-mail server 26r and asks the sender if he still wants to send the page or if he wants to cancel and wait until later. If the sender decides to go ahead and send the page, the server 42 will route the page to the e-mail server 26r. In another embodiment, however, the server 42 routes the message to the preferred off-line device without informing the sender.
  • the server 42 routes the message to the receiving device specified by the recipient's online routing preferences.
  • the on-line routing preferences may instruct the server 42 to route a page from the desktop pager 20s to the desktop pager 20r.
  • the receiving client 48r determines if the specified receiving device has a rerouting condition, such as a user-activity rerouting condition, associated with it. If there is no condition, then referring to step 142, the server 42 and the client 48r take no further action with respect to the message. If there is a rerouting condition, however, then referring to step 144, the client determines if the condition is met. If the condition is met, then referring to step 146, the client causes the server to reroute the message to the device specified by the routing preferences.
  • a rerouting condition such as a user-activity rerouting condition
  • the routing preferences may specify that if a recipient does not "pick up" a message to the desktop pager 20r within a certain amount of time, then the client 48r is to cause the server 42 to reroute the message to another receiving device such as the e-mail server 26r. Thus, if the recipient does not pick up the page within the allotted time, then the client 48r causes the server 42 to reroute the page to the e-mail server 26r.
  • the client 48r monitors the receiving device to determine if the condition is met. This embodiment is useful when the receiving device, for example the desktop pager 20r, is part of the client 48r. In another embodiment, the receiving device notifies the client when the condition has been met.
  • Figure 10 is a screen 147, which is generated by the routing client 48r and which prompts a recipient to enter his off-line routing preferences. Specifically, a prompt 148 prompts the recipient to select the preferred device or devices for receiving a message intended for the desktop pager 20r if the computer 12r is not logged onto the server 42 when the message is sent. In the embodiment shown, the recipient enters the preferred device or devices, here the e-mail server 26r, in a field 149. Thus, if the recipient is out of town and is not running his computer 12r, then the server 42 will forward all desktop pages to his e-mail server 26r. If the recipient has remote access to his e-mail server 26r, then he can access these desktop pages before he returns from his trip.
  • a prompt 148 prompts the recipient to select the preferred device or devices for receiving a message intended for the desktop pager 20r if the computer 12r is not logged onto the server 42 when the message is sent.
  • the recipient enters the preferred device or devices, here the
  • Figure 11 is a screen 150, which is generated by the routing client 48r and which prompts the recipient to enter a rerouting condition. Specifically, a prompt 151 prompts the recipient to check a box 152 if he would like the server 42 to reroute desktop pages if the recipient does not pick up the message within a time period specified in a box 1 54. The device to which the page will be rerouted is specified in a box 156.
  • the server 42 or the client 48r can determine if the recipient has picked up the desktop page from the desktop pager 20r in a number of ways. In one embodiment, the client 48r or the server 42 monitors the input device 13r to determine if it has provided any data to the computer 12r within the time period specified in the box 154.
  • the idea is that if the input device 13r provides data during the specified time period, then the recipient was sitting at the computer 12r during this period and thus has read the desktop page. Conversely, if the input device 13r has not provided data, then the recipient was not sitting at the computer 12r during the specified period and thus has not read the desktop page.
  • the input device 13r may be any conventional input device such as a keyboard or mouse. Alternatively, the device 13r may be a device such as a video camera or a microphone that the server 42 or client 48r monitors for movement or sound, respectively.
  • Figure 12 is a flow chart of an automatic-message-device-recognition procedure implemented by one embodiment ofthe routing client 48r.
  • the recipient boots the routing client 48.
  • the recipient may do this by a special command after the computer 12r has booted up, or the client 48r may boot automatically during the boot sequence ofthe computer 12r.
  • the booted client 48r searches the storage area 16r of the computer 12r for message devices that are installed on the computer 12r such as the desktop pager 20r, the web browser 22s, and the e-mail viewer 24s.
  • the routing client 48r determines which of these installed message devices the recipient wants to make available to senders.
  • these available message devices are included in the device fields 92 and 106 as discussed above in conjunction with Figures 5 and 6, respectively. More specifically, on its first boot, the client 48r includes all such devices in the fields 92 and 106. The recipient, however, can remove one or more of these devices from the fields 92 and 106. On subsequent boots, the client 48r will omit from the fields 92 and 106 any message devices previously removed therefrom, unless the recipient subsequently adds these devices back to the fields 92 and 106.
  • the booted client 48 sends to the server 42 the identities, addresses, and other information for the message devices that are listed in the fields 92 and 106, and also sends the server 42 the recipient's routing preferences as discussed above.
  • FIG. 13 is a display screen 170, which one embodiment of the client 48r generates according to the flow chart of Figure 12 to allow a recipient to remove and add message devices that are available to senders.
  • the available devices are listed in a field 172, and can be deleted or added by clicking on the "Delete Device” and "Add Device” icons, respectively.
  • the client 48r lists for the recipient's selection all message devices installed on the computer 12r but not currently available to senders, i.e., not listed in the fields 92 or 106.
  • Figure 14 is a flow chart of a callback procedure executed by the server 42 and the routing client 48s according to an embodiment ofthe invention.
  • the server 42 maintains a list of the users that are currently logged onto the server 42 via their respective clients 48, and also maintains a list of undelivered callback requests.
  • the server 42 provides to a sender the log-on status of the recipients in the sender's groups, such as provided in the field 102 of the screen 90 in Figure 5. More specifically, referring to step 182, the sender logs onto the server 42 via the computer 12s and the client 48s. Next, referring to step 184, the server 42 determines the log-on status of each user in the sender's groups by checking the logged-on list. In one embodiment, the server 42 stores the membership data for the sender's groups so that the client 48s need not send this data to the server every time the sender logs onto the server.
  • the server 42 sends the log-on status of each of these users to the sending client 48s.
  • the sending client 48s can also request the log-on status of a user even after the sending client 48s has logged onto the server 42.
  • the sender requests a callback. That is, the sender requests the server 42 to deliver a callback request to the client 48r of a recipient.
  • the callback request notifies the recipient that the sender wishes to contact him/her. For example, in one embodiment, referring to the field 92 in the screen 90 of Figure 5, the sender can request a callback by clicking on the "Set A Callback" icon.
  • the server 42 checks the logged-on list and determines whether the recipient is logged onto the server.
  • step 194 if the recipient is logged on, then the server delivers the callback request to the recipient's client 48r.
  • step 196 if the recipient is not logged on, then the server adds the callback request to the callback list.
  • the server 42 checks the callback list to determine if the recipient has any outstanding callback requests. If, as in this example, the recipient does have an outstanding callback request, then the server 42 delivers the callback request to the recipient's client 48r.
  • the callback procedure eliminates the problems associated with conventional polling as discussed above in conjunction with Figure 1.
  • the client 48r generates a screen 200 in response to the callback request delivered by the server 42.
  • the screen 200 identifies the sender and allows the recipient, via the client 48r, to either allow or cancel the callback. That is. the recipient has the option of allowing the server 42 to notify the sender that the recipient is now available or of preventing the server 42 from doing so. Thus, the recipient can cancel the callback request if he/she does not want to be bothered by the sender.
  • Figure 16 is a flow chart of a message-routing learning procedure implemented by one embodiment of the routing client 48r. Implementing this procedure allows the client 48r to automatically suggest, generate, or maintain the recipient's routing preferences.
  • the client 48r periodically or continually monitors the recipient's actions with respect to his received messages.
  • the client 48r automatically suggests changes to, sets, or updates the routing preferences based on patterns that the client 48r has detected with respect to the received messages and the recipient's related actions.
  • the client 48r sends these new routing preferences to the server 42 (with the recipient's permission if the client 48r has only suggested new routing preferences).
  • the client 48r implements a statistical correlation matrix, such as a conventional Baysian network, to correlate message characteristics (e.g., sender's identity, time of day message received) with the recipient's actions (e.g., forward or ignore message) for a group of messages such as the last one thousand received messages.
  • a statistical correlation matrix such as a conventional Baysian network
  • the client 48r determines that out of fifty phone calls to the recipient's work phone on weekends and after 5:00 p.m. on weekdays, the recipient has answered two, and the rest have been routed to the recipient's voice-mail server 30r.
  • the client 48r can determine whether a call is answered or sent to voice mail by communicating with the voice-mail server 3 Or using conventional techniques.
  • the client 48r may suggest that the recipient adopt a routing preference that causes the server 42 to route all work phone calls received on weekends and after 5:00 p.m. and on weekdays directly to the voice-mail server 30r, and thus reduce the chances that the caller will be aggravated by the phone ringing a number of times before he is transferred to voice-mail.
  • the client 48r determines that out of twenty five e-mail messages from a particular sender when the e-mail client 24r also displays unread e-mail messages from other senders, the recipient has opened this particular sender's messages first four times.
  • the client 48r can determine the order in which unread e-mail messages are opened by communicating with the e-mail client 24r or e-mail server 26r using conventional techniques.
  • the client 48r may suggest that the recipient adopt a routing preference that causes the server 42 to route all e-mails from this particular sender with high priority or in another manner such that they are always at the top of the unread e-mail list when the e-mail client 24r displays unread e-mail messages.
  • Figure 17 is a screen 206 and a redial list 208 generated by one embodiment of the routing client 48s according to a procedure similar to that discussed above in conjunction with Figure 16. Unlike the Figure 16 procedure, however, this procedure learns a sender's message-sending patterns. More specifically, the client 48s keeps track of the most popular message-sending actions that the sender has taken. In this embodiment, the client 48s retains ten actions, and updates the list 208 to include the last action taken. But when the client 48s updates the list 208 with the most recent action, it removes the least popular action on the list 208 and not necessarily the least recent action taken.
  • the list 208 is not merely a list of the last ten actions taken, but is a combination of the last actions taken and the actions that the sender takes most frequently.
  • the list 208 may include the last five actions taken, and five of the most frequently taken actions.
  • Figures 18 and 19 are flow charts showing embodiments of respective procedures that allow a user to have multiple routing clients 48 simultaneously logged onto the server 42.
  • the recipient owns the computers 12s (work) and 12r (home) and runs the routing clients 48s and 48r simultaneously.
  • the labels of sending and receiving for the clients 48s and 48r are arbitrary as these clients can perform both message-sending and message-receiving functions. Therefore, this is an accurate example.
  • the flow chart of Figure 18 is an embodiment of a procedure to designate a newly logged-on client 48 as the primary client and the other client or clients that are already logged on as passive clients.
  • the significance of the primary client 48 is that the server 42 follows the routing preferences of the primary client.
  • the client 48s is the newly logged-on client, and the client 48r is already logged on to the server 42 at the time the client 48s logs on. It is understood, however, that in some embodiments there may be more than one client 48 already logged onto the server 42.
  • the "new" client 48s logs onto the server 42 via the computer 12s and determines whether or not the client 48r is logged onto the server 42.
  • the new client 48s may make this determination in a variety of ways.
  • the server 42 automatically provides the new client 48s with the login status of the client 48r in a manner similar to that discussed above in conjunction with Figure 14.
  • the new client 48s requests the log-in status of the client 48r from the server 42 also in a manner similar to that discussed above in conjunction with Figure 14.
  • step 222 if the client 48r is not logged onto the server 42, then, referring to step 224, the new client 48s transfers its message-routing preferences to the server 42, and referring to step 226, the server 42 proceeds to route messages according to these routing preferences as discussed above in conjunction with Figure 4.
  • the client 48s instructs the client 48r to become passive.
  • the client 48s may provide these instructions to the client 48r in a number of ways.
  • the new client 48s requests the server 42 to set up a PTP communication path between it and the client 48r as discussed above in conjunction with Figure 4.
  • the new client 48r requests a communication path to the client 48r through the server 42 (star topology) also as discussed above in conjunction with Figure 4, or the server 42 instructs the client 48r to become passive.
  • the new client 48s transfers its routing preferences to the server 42, which routes messages according to these preferences.
  • the flow chart of Figure 19 shows an embodiment of a procedure to select a new primary client among multiple clients that are all already logged onto the server 42.
  • multiple clients 48 are logged onto the server 42, and one of these clients is the primary client and the others are passive clients.
  • the client 48r becomes the primary client and the client 48s becomes the passive client.
  • the passive client 48s detects a condition, such as user activity, that indicates it should now be the primary client. For example, this situation occurs if the user goes back to work without logging off the client 48r and starts using the computer 12s.
  • a condition such as user activity
  • the client 48s detects the user activity by monitoring the input device 13s as discussed above in conjunction with Figure 9.
  • the passive client 48s instructs the primary client 48r to become passive.
  • the passive client 48s communicates with the client 48r as discussed above in conjunction with Figure 18.
  • the passive client 48s transfers its message routing preferences and other information to the server 42 and becomes the new primary client.
  • the server 42 then routes subsequent incoming messages according to the routing preferences provided by the new primary client 48s.

Abstract

A computer runs client software that learns the identities of a user's communication devices, develops preferences for routing incoming messages sent to these devices, and provides these identities and routing preferences to a routing server. The user may provide the device identities and routing preferences to the client via an input device such as a keyboard. Or, the client may acquire the device identities by searching for the communication devices that are installed on the computer, and may develop the routing preferences based on the user's message-handling patterns. Thus, the client can develop and provide to the server a routing preference that causes the server to route a message sent to a first communication device to a second communication device.

Description

IMPROVED CLIENT AND METHOD FOR ROUTING MESSAGES TO ACHIEVE UNIFIED COMMUNICATIONS
Field ofthe Invention
The invention relates generally to communication networks that include computer hardware and software, and more particularly to a computer, client software run by the computer, and a method implemented by the client software for routing messages according to the message recipient's preferences.
Background ofthe Invention
Today, a person may have more than one personal message device such as a wireless pager (e.g. a Skytel pager) or an e-mail client (e.g. Microsoft Outlook) that provides access to the person's e-mail account. Often, these devices communicate to other message devices via a computer network such as a local intranet or the Internet.
Figure 1 is a block diagram of a conventional computer network 10, which allows communication between message devices. The network 10 includes a sender's computer 12s, which has an input device 13s (e.g. a keyboard or a mouse) coupled thereto and which includes a processor 14s coupled to a storage device 16s. The network 10 also includes a recipient's computer 12r, which has an input device 13r and which includes a processor 14r and a storage device 16r. For example, the storage devices 16s and 16r may include a hard drive, volatile electronic memory, or both. The computers 12s and 12r are connected to a communication path 18 by networking circuitry that is omitted for clarity. For example, the path 18 may represent the communication lines that tie into and form the Internet. The processor 14s can run messaging devices such as a desktop pager 20s, a web browser 22s (e.g. Netscape Navigator), and an e-mail client 24s, which allows the sender to send and receive e-mail messages via an e-mail server 26s. Although the processor 14s executes the software that runs these devices, it is common to state that the computer 12s runs these devices. The sender may also have a wireless pager 28s and a voice-mail server 30s, which are also connected to the path 18. The voice-mail server 30s may allow the sender to send and receive voice messages via the computer 12s or via a telephone system (not shown). Similarly, the recipient's computer 12r can run a desktop pager 20r, a web browser 22r, and an e-mail client 24r, which allows the recipient to view e-mail received on an e-mail server 26r. Also, the recipient may have a wireless pager 28r and a voice-mail server 3 Or. Although the computers and message devices are labeled as sending or receiving devices for description purposes, it is understood that these labels are arbitrary such that the sending computer and message devices can be used to receive messages and the receiving computer and message devices can be used to send messages.
The system 10 may also include a file server 32, which is connected to the path 18 and which can assist with the transfer of messages between the sender's messaging devices and the recipient's messaging devices. For example, the server 32 may be a server of an internet service provider (ISP), which facilitates the transfer of messages between ISP account holders and between an account holder and a non-account holder. Or, the server 32 may be a paging company's server that transfers messages between the wireless pagers 28s and 28r.
In operation, the network 10 typically allows two topologies for transferring messages from one device to another: the point-to-point (PTP) topology, and the star topology. With the PTP topology, a message is routed directly between the sending and receiving devices. For example, using a PTP topology, the desktop pager 20s sends a message directly to the desktop pager 20r via the computer 12s, the path 18. and the computer 12r. In some applications, such as where it is an ISP server, the server 32 may open this direct path between the pagers 20s and 20r. Conversely, with a star topology, the message is routed through an intermediate node or device such as the server 32. For example, using a star topology, the pager 28s sends a message intended for the pager 28r to the server 32, which may be the paging company's server. The server 32 then processes the message and sends it to the pager 28r. This may occur for security or other reasons. Therefore, because the PTP topology eliminates the overhead of having the server receive and send the message, it is often faster and ties up fewer network resources than the star topology.
Unfortunately, if the environment of the network 10 does not allow all messages to be sent with a PTP topology, then the server 32 may be programmed to route all messages with a star topology to prevent messaging failure. This may create an unnecessary bottleneck at the server 32, thus significantly increasing access times and aggravation for users of the server 32. Alternatively, if the same type of server 32 is to be installed in a network 10 having an environment that does allow all messages to be sent with a PTP topology, then the server software will have to be modified to allow this. Thus, if the server 32 can be used in both network environments, then the server manufacturer will have to develop and offer two respective software packages, one for PTP and another for star. Furthermore, the customer will have to install new software if the network environment changes, or if he wishes to install the server 32 in another network 10 having a different environment.
Furthermore, a recipient is often unable to retrieve messages from some of his message devices for extended periods of time, and if a message device is unavailable to receive a message, the message may be lost. For example, suppose the sender sends an e-mail message from his e-mail client 24s to the recipient's e-mail server 26r. If the recipient is out of town and has no access to the server 26r other than through the e-mail client 24r, then he must wait until he returns before he learns of and can read the sender's e-mail message. Alternatively, if the sender sends a desktop page from his pager 20s and the recipient's desktop pager 20r is not running, then the message has nowhere to go and may be lost.
Additionally, a message transfer may be unsuccessful if the sending device is of a different type than the receiving device. For example, if the recipient's e-mail client 24r is Microsoft Outlook, it may be unable to read an e-mail message from e-mail clients other than those sold by Microsoft.
Moreover, in applications where the server 32 is common to the sending and receiving devices, such as when it is an ISP server, the server 32 may use polling to allow a sender to determine if an intended recipient's message device is available to receive a message. For example, if the sender wants to send a desktop page, he may first want to determine if the intended recipient's computer is logged onto the server 32, and thus if the recipient is "online" and able to receive the page. To make this determination, the sender requests, via his computer 12s, the server 32 to poll all of the computers that are logged onto the server 32 and to notify the sender if one of these computers is the recipient's computer 12r. Unfortunately, because the server 32 must communicate with each logged on computer, such polling requires a significant amount of processing time, and thus can significantly increase user access times, particularly during hours of peak use. For example, it is common during peak hours for the number of logged-on computers to exceed one million! Furthermore, if the computer 12r is not logged onto the server 32 at the time that it performs the polling, then the only way for the sender to determine if the computer 12r subsequently logs on is to subsequently request the server 32 to repeat the polling. Thus, this significantly burdens the sender, because he may have to request several polls before he either gives up or the computer 12r logs onto the server 32. Summarv ofthe Invention
In one aspect of the invention, a computer communicates with a server. The computer includes a storage device for storing client software that includes access information for first and second messaging devices. The computer also includes a processor that runs the client, provides the access information to the server, generates a message routing preference that causes the server to route a message sent to the first receiving device to the second receiving device, and provides the message routing preference to the server.
Such a computer can instruct a server to route a message intended for one of a recipient's message devices to another of the recipient's message devices. For example, suppose the recipient is going on a trip and will not have access to his e-mail account while away. Through his computer, he can instruct the server to route all e-mail messages received while he is away to his wireless pager so that he can view these messages before returning from his trip.
Brief Description ofthe Drawings
Figure 1 is a block diagram of a communications network according to the prior art.
Figure 2 is a block diagram of one embodiment of a communications network according to the invention.
Figure 3 is a block diagram of another embodiment of a communications network according to the invention.
Figure 4 is a flow chart of one embodiment of a procedure that the routing servers of Figures 2 and 3 implement to automatically set the network routing topology for transmission of a message.
Figure 5 is a computer screen generated by an embodiment of the message routing clients of Figures 2 and 3 for showing a message sender the available message devices of an intended message recipient.
Figure 6 is a web home page generated by an embodiment of the message routing server of Figures 2 and 3 for showing the available message devices of an account holder.
Figure 7 is a web page generated by an embodiment of the routing servers of Figures 2 and 3 for prompting a sender who is not logged onto the server for a message and other related information.
Figure 8 is a web page generated by an embodiment of the routing servers of Figures 2 and 3 for prompting a sender who is logged onto the server for a message and other related information.
Figure 9 is a flow chart of a message routing procedure that an embodiment of the routing servers and clients of Figures 2 and 3 implement. Figure 10 is a computer screen generated by an embodiment of the routing clients of Figures 2 and 3 for prompting a recipient for his off-line routing preferences.
Figure 11 is a computer screen generated by an embodiment ofthe routing clients of Figures 2 and 3 for prompting a recipient for his on-line-but-unavailable routing preferences.
Figure 12 is a flow chart of a procedure implemented by an embodiment of the routing clients of Figures 2 and 3 for finding all of the message devices installed on the computers that respectively run the routing clients.
Figure 13 is a device-listing screen generated by the embodiment of the routing clients that implement the procedure of Figure 12.
Figure 14 is flow chart of a call-back procedure implemented by an embodiment ofthe servers and clients of Figures 2 and 3.
Figure 15 is a call-back-notification screen generated by the embodiment of the routing clients that implement the client portion ofthe call-back procedure of Figure 14.
Figure 16 is a flow chart of a procedure implemented by an embodiment of the routing clients of Figures 2 and 3 for learning a recipient's messaging patterns and generating a routing preference based on these patterns.
Figure 17 is a redial screen generated by the embodiment of the routing clients that implement the procedure of Figure 16.
Figure 18 is a flow chart of a procedure implemented by one embodiment of the servers or clients of Figures 2 and 3 for setting client priority at log in if multiple clients ofthe same user are logged onto the server.
Figure 19 is a flow chart of a procedure implemented by one embodiment of the servers or clients of Figures 2 and 3 for setting client priority based on user activity if multiple clients ofthe same user are logged on to the server.
Detailed Description ofthe Preferred Embodiment
Figure 2 is a block diagram of an embodiment of a communication network 40 according to the invention, where elements that are common to Figure 1 have the same reference numerals. The network 40 includes a routing server 42, which includes a conventional processor 44 and a conventional storage device 46. In one embodiment, the device 46 includes a volatile memory such as dynamic random access memory (DRAM), a non-volatile memory such as a hard disk, or a combination of both volatile and nonvolatile memory. The processor 14r of the computer 12r runs a routing client 48r, which, as discussed below, works with the server 42 to route the recipient's messages according to the recipient's message routing preferences. The processor 14s of the sender's computer 12s may also run a routing client 48s, which in one embodiment is the same as the routing client 48r. In one embodiment, the server 42 runs My Agent server software from Active Voice Corporation, and the clients 48 s and 48r are My Agent software clients from Active Voice.
Still referring to Figure 2, and as discussed in more detail below in conjunction with Figures 4-19, the general operation of the network 40 is discussed according to one embodiment ofthe invention.
In operation, the server 42 routes the recipient's incoming messages to the recipient's message device specified by the recipient's routing preferences. For example. the routing preferences may specify that the server 42 route all messages directed to the desktop pager 20r to the e-mail server 26r.
To allow the server 42 to perform such rerouting, the recipient gives the sender access to one or more of the recipient's message devices via the server 42. In one embodiment, this access is through the sender's routing client 48s, the recipient's web page set up on the server 42, or the recipient's address with respect to the server 42.
The server 42 automatically determines the best network topology for routing a message from the sending device to the receiving device specified by the recipient's routing rules based on criteria including the sender's identity, the identity of the recipient's message device to which the sender has directed the message, the priority of the message (e.g., urgent, normal, or low), the receiver's availability, and the size of the message. In one embodiment, the server 42 routes the message using a PTP topology unless this topology is unavailable with respect to the message.
In one embodiment, if the format, such as the protocol, size, or encryption, of the sent message is incompatible with the receiving device specified by the recipient's routing preferences, then the server 42 reformats the message before sending it to the receiving device. Thus, the server 42 allows one type of message device, such as the web browser 22s, to send a message to another type of message device, such as a desktop pager 20r.
In another embodiment, the server 42 eliminates the problems with conventional polling by maintaining a list of the users that are currently logged onto the server 42. This allows a user to request a "callback" from the server 42 when another user logs onto the server 42.
In yet another embodiment, the client 48r monitors the recipient's patterns with respect to his received messages, and based on these patterns, automatically suggests, develops, or maintains the routing preferences that best fit the recipient's lifestyle.
In still another embodiment, the server 42 allows a user to have multiple computers 12r simultaneously logged onto the server 42, where each computer 12r is running a respective routing client 48r. For example, it is common for a user to have a work computer and a home computer. Thus, the server 42 allows both of these computers to be simultaneously logged on and running respective routing clients 48r. To prevent conflicts if the clients 48r have different routing preferences, the clients 48r determine which of them is the primary client whose routing rules the server 42 will follow.
Figure 3 is a block diagram of a communications network 60 according to another embodiment of the invention, where like elements have like reference numerals with respect to Figures 1 and 2. In the network 60, the computers 12sl and 12rl are part of local area networks 62s and 62r, respectively. Each of the networks 62s and 62r is protected by a respective conventional firewall, represented by the dashed lines 63 s and 63r, respectively, and includes a respective server 64s and 64r. In one embodiment, the communication path 18 represents the Internet, the computer 12s and the server 64s communicate with each other over an intranet, and the computer 12r and the server 64r communicate with each other over another intranet. Furthermore, each of the networks 62s and 62r is similar to the network 40 of Figure 2, where the servers 64s and 64r each correspond to the server 42 of Figure 2. Thus, in this embodiment, the server 64s routes messages between the message devices of the network 62s in a manner similar to that described for the server 42 of Figure 2. Likewise, the server 64r routes messages between the message devices ofthe network 63r in a similar manner.
Still referring to Figure 3, despite the firewalls 63s and 63r, the server 42 allows a sending device in the network 62s to send a message to a receiving device in the network 62r and routes the message according to the recipient's routing rules. Typically, the firewalls 63s and 63r prevent the server 42 from implementing a PTP topology for such a message. But because the server 42 can automatically select the proper topology, the same server 42 that is used in the network 40 of Figure 2 can also be used in the network 60. That is, neither the server hardware nor server software need be modified, so manufacturing and installation expenses are reduced compared to prior-art communication servers.
Figure 4 is a flow chart that details one embodiment of the general topology selection and message routing procedure used by the networks 40 and 60 of Figures 2 and 3, respectively. For clarity, reference will be made to the elements of Figure 2 unless otherwise specified.
Referring to step 70, the sending device, for example the desktop pager 20s, initiates the sending of a message to a receiving device by sending a conventional message-initiation header to and requesting the IP address and dynamic encryption key of the receiving device (or of the computer, such as the computer 12s, running the device) from the routing server 42 via the path 18. With respect to the network 60 of Figure 3, however, the pager 20s typically sends this information to the path 18 via the server 64s. The message-initiation header typically includes information such as the identities of the sender and recipient and the length and priority of the message. Furthermore, in one embodiment, the server 42 determines the identities of the sending and intended receiving devices from the format of the message header. For example, a header from the desktop pager 20s often has a different number of bytes or is otherwise different than a header from the web browser 22s.
Next, referring to steps 72 and 73, the server 42 examines the message-initiation header and, based on the header, the network environment, and the recipient's routing rules, determines the appropriate receiving device and whether or not PTP communication between the sending and receiving devices is possible.
For example, suppose the sender desires to send a message from his desktop pager 20s to the recipient's desktop pager 20r. Furthermore, suppose that the recipient's routing rules indicate that the desktop pager 20r is to receive this message. If the server 42 determines that there are no firewalls or other network environment conditions that prevent a PTP topology, it implements a PTP topology.
Alternatively, suppose the sender desires to send a message from his e-mail client 24s to the recipient's e-mail account on the e-mail server 26r, and that the recipient's routing rules instruct the server 42 to route all messages directed to the e-mail server 26r to the desktop pager 20r. If the format of the message from the e-mail client 24s in incompatible with the desktop pager 20r, then the server 42 determines that a star topology is appropriate so that the server 42 can receive and reformat the message from the e-mail client 24s and then send the reformatted message to the desktop pager 20r. For example, desktop pagers such as the desktop pager 20r often limit the size of a received message to 100-200 bytes. Therefore, if the message from the e-mail client 24s is longer than this, the server 42 will decide on a star topology so that it can receive and truncate the message before sending it to the desktop pager 20r.
Or, if the message is so large or has so many recipients that a PTP topology would be unable to efficiently handle the message, the server 42 may implement the star topology. For example, suppose the sender wishes to send an e-mail message having a one-megabyte attachment to ten recipients, and that all of the recipients' routing rules indicate that the server 42 is to route such an e-mail message to their respective e-mail servers 26r. In one embodiment, because of the file length and the relatively large number of recipients, the server 42 determines that multicasting is more efficient than setting up direct PTP paths between the sender's e-mail server 26s and the respective e-mail servers 26r. Therefore, the server 42 implements a star topology by instructing the e-mail server 26s to send the message to the server 42 only once, and then sending the received message to each of the e-mail servers 26r of the respective recipients. Alternatively, the server 42 may forward the message to a conventional multicasting server (not shown), which sends the message to each ofthe e-mail servers 26r. Moreover, the server 42 may allow the sending device, such as the desktop pager 20s, to first try to send a message with a PTP topology, and if this attempt fails, the server 42 instructs the sending device to retry with a star topology.
Referring to Figure 3, the server 42 may implement variations ofthe star topology in the network 60 if one or both of the firewalls 63s and 63r prevent the server 42 from opening a PTP path between a message device of the network 62s and a message dev ice of the network 62r. In one embodiment, after determining that it cannot implement a PTP topology, the server 42 first tries to implement a version of the star topology in which the server 42 bypasses the servers 64s and 64r and communicates directly with the sending and receiving devices. This is significantly faster and causes less traffic on the networks 62s and 62r than if the message were routed through the servers 64s and 64r. For example, if the desktop pagers 20s and 20r are the sending and receiving devices respectively, then the server 42 receives the message from the pager 20s and sends it to the pager 20r in a manner similar to that described above with respect to a star topology in the network 40 of Figure 2. If the server 42 cannot implement this version of the star topology, then, as a last resort, the server 42 routes the message through one or both of the servers 64s and 64r.
Next, referring to step 75, if a PTP topology is possible, then the server 42 sends the IP address and the dynamic encryption key of the receiving device specified by the routing preferences (or of the computer 12r if it is running the receiving device) to the sending device.
Then, referring to step 77, the sending device sends the message directly to the receiving device - thus bypassing the server 42, and with respect to the network 60 of Figure 3, bypassing the servers 64s and 64r - and, after it sends the message, conventionally closes the direct PTP communication path over which the sending device sent the message.
Alternatively, referring to step 79, if the server 42 cannot implement a PTP topology, the server 42 implements a star topology. Specifically, the server 42 opens a communication path between itself and the sending device and notifies the receiving device specified by the recipient's routing rules of the incoming data stream that forms the message. For example, as discussed above, if the e-mail client 24s is the sending device and the desktop pager 20r is the receiving device, then the server 42 opens a path between the e-mail client 24s and itself via the e-mail server 26s, and notifies the desktop pager 20r that a message is forthcoming.
Next, referring to step 81, the sending device transfers the message to the server 42.
Then, referring to step 83, the server 42 reformats the message if necessary and then sends the message to the specified receiving device. For example, if the e-mail client 24s is the sending device and uses a first message format and desktop pager 20r is the receiving device and uses a second message format, the server 42 converts the message from the e-mail client 24s into the second format, and then transfers the reformatted message to the desktop pager 20r.
Next, referring to step 85, when the sending device finishes sending the message, it notifies the routing server 42, which conventionally closes the communication path between itself and the sending device,
Then, referring to step 87, the server 42 conventionally closes the communication path between itself and the receiving device.
Thus, the servers 42 of the networks 40 and 60 of Figures 2 and 3, respectively, can facilitate more efficient communication between message-sending and message- receiving devices by automatically selecting the best network communication topology. Also, the servers 42 allow a recipient to redirect a message from one receiving device to another receiving device, and allow a message device of one type to communicate with a message device of another type.
Figures 5-8 disclose embodiments of techniques that allow a sender to send a message to the recipient such that the server 42 can route the message according to the recipient's routing preferences. Figures 5-8 are discussed in conjunction with the network 40 of Figure 2, it being understood that the discussion is also applicable to the network 60 of Figure 3 unless otherwise noted.
Figure 5 is a computer screen 90 that allows a sender who is a registered user of the routing server 42 to send messages to a recipient who is also a registered user of the server 42. Using the routing client 48s, the sender creates one or more groups of recipients, and adds the recipient to one of these groups. For example, a sender may have a group for work colleagues and another group for personal friends. The client 48r for each designated recipient prompts the respective recipient for messaging information, receives the information from the recipient, and makes this information available to the sender via the server 42. Based on this information, the routing client 48s generates the screen 90 on the sender's computer 12s.
The screen 90 includes a list field 92, which includes a list of messaging devices that the recipient has made available to receive messages from the sender. In one embodiment, the routing client 48 s is run in a Microsoft Windows® environment so that the sender can select the desired messaging device by pointing and clicking with a mouse. For example, if the sender points and clicks on the "Page" icon, then the routing client 48s will prompt the sender to enter a message to the desktop pager 20s, which will send the message to the recipient's desktop pager 20r (or other message device specified by the recipient's routing rules) with the help of the server 42 as discussed above in conjunction with Figure 4. In one embodiment, some messaging devices such as the desktop pager 20s and a chat device (activated by clicking on the "Chat" icon) actually run as part of the routing client 48s. But the routing client 48s operates in a similar manner for other message devices as well. For example, the field 92 allows the sender to send messages to the recipient's e-mail server 26r, fax, or telephone. In response to the sender's selection of these devices, the routing client 48s respectively activates the sender's e-mail client 24s or modem (not shown) so that the sender can proceed to send the message to the respective receiving devices. Furthermore, although icons are shown for certain messaging devices, the field 92 may include icons for other messaging devices such as but not limited to a wireless pager (e.g. Skytel®) or a personal digital assistant (PDA).
Other features of the screen 90 include an image field 98, which can include the recipient's photo or a live picture, a greeting field 100, which can include the recipient's greeting, and a log-in status field 102, which indicates whether the recipient - or more accurately the computer 12r running the client 48r - is logged onto the server 42. The screen 90 may also include other fields such as a schedule field that includes the recipient's current calendar.
Figures 6 and 7 are web pages that allow a sender who is not registered user of the routing server 42 to send messages via the web browser 22s to a recipient who is a registered user ofthe server 42.
Figure 6 is a recipient's home page 104 on the server 42. The sender accesses the home page 104 by using his web browser 22s to access the URL for the home page 104. Like the screen 90 of Figure 5, the page 104 includes a device field 106, a greeting field 108, a log-in status field 110, and an image field 114, and may include other fields such as a schedule field. Like the screen 90, although icons for certain messaging devices are shown, the device field 106 may include icons for other messaging devices such as but not limited to a wireless pager (e.g. Skytel®) or a personal digital assistant (PDA).
The sender uses the web browser 22s to send a message to a receiving device selected from the field 106, and as discussed above in conjunction with Figure 4. the server 42 reformats the message if necessary and routes the message to the receiving device specified by the recipient's routing preference. In one embodiment, the page 104 also includes an option field 116. The "My Groups" option allows the sender to view the groups to which the recipient belongs. The "My Profile" option allows the sender to view the recipient's profile, which includes additional information about the recipient. The "Search My Agent" option allows the sender to access the web pages of other registered users of the server 42 without knowing their URLs. This option is also available from the general home page (not shown) of the server 42. A user, however, may instruct the server 42 to prohibit others from accessing his web page through the "Search My Agent" option for security or privacy reasons.
Figure 7 is a page 120, when the server 42 sends the web browser 22s if the sender clicks on the "My E-mail" icon on the page 104 of Figure 6. The screen 120 prompts the sender for information and allows the sender to send an e-mail message to the recipient via the web browser 22s. As discussed above in conjunction with Figure 4. the server 42 routes this e-mail message to the recipient's e-mail server 26s or to another ofthe recipient's message devices according to the recipient's routing preferences.
Figure 8 is a screen 122, which allows a registered user of the server 42 to send a message from the user's own web site to a registered or unregistered recipient. The screen 122 prompts the sender for the necessary information, such as the recipient's user name or e-e-mail address. The screen 122 also includes a "Group Options" field, which allows the user to form and join user groups, to invite other registered users to join a group, and to unjoin groups.
Referring to Figures 9 through 11 , embodiments of the techniques for setting a recipient's routing preferences and routing messages according to these routing preferences are discussed.
Figure 9 is a flow chart showing how the server 42 and the receiving client 48r route messages according to an embodiment of the invention. The flow chart of Figure 9 is similar to the flow chart of Figure 4, except that it focuses on message routing instead of on the determination ofthe network topology.
Referring to step 130, the server 42 receives the message-initiation leader from the sending device. Next, referring to step 132, the server 42 determines whether or not the recipient's computer 12r, which runs the client 48r, is logged onto the server. If not, the server 42 routes the message according to the recipient's off-line routing preferences. For example, in one embodiment, if the recipient's device to which the sender directed the message is unavailable, then referring to step 134, the server 42 notifies the sender that the intended receiving device is unavailable. The server 42 may give the sender the option of sending the message to the receiving device specified by the off-line routing preferences or of canceling the message. Next, referring to step 136, if the sender elects to send the message, then the server 42 routes the message to the receiving device specified by the recipient's off-line routing preferences. For example, suppose that the sender wants to send a message from the desktop pager 20s to the desktop pager 20r but the computer 12r is not logged onto the server 42 via the client 48r. Furthermore, suppose that the recipient's routing preferences instruct the server 42 to route desktop pages to the e-mail server 26r if the computer 12r is off line. Thus, the server 42 informs the sender that any page he sends will be routed to the recipient's e-mail server 26r and asks the sender if he still wants to send the page or if he wants to cancel and wait until later. If the sender decides to go ahead and send the page, the server 42 will route the page to the e-mail server 26r. In another embodiment, however, the server 42 routes the message to the preferred off-line device without informing the sender.
Referring to step 138, if the computer 12r is logged onto the server 42, then the server 42 routes the message to the receiving device specified by the recipient's online routing preferences. For example, the on-line routing preferences may instruct the server 42 to route a page from the desktop pager 20s to the desktop pager 20r.
Next, referring to step 140, after the server 42 routes the message, the receiving client 48r determines if the specified receiving device has a rerouting condition, such as a user-activity rerouting condition, associated with it. If there is no condition, then referring to step 142, the server 42 and the client 48r take no further action with respect to the message. If there is a rerouting condition, however, then referring to step 144, the client determines if the condition is met. If the condition is met, then referring to step 146, the client causes the server to reroute the message to the device specified by the routing preferences. For example, as discussed below in conjunction with Figure 11, the routing preferences may specify that if a recipient does not "pick up" a message to the desktop pager 20r within a certain amount of time, then the client 48r is to cause the server 42 to reroute the message to another receiving device such as the e-mail server 26r. Thus, if the recipient does not pick up the page within the allotted time, then the client 48r causes the server 42 to reroute the page to the e-mail server 26r. Referring again to steps 144 and 146, in one embodiment, the client 48r monitors the receiving device to determine if the condition is met. This embodiment is useful when the receiving device, for example the desktop pager 20r, is part of the client 48r. In another embodiment, the receiving device notifies the client when the condition has been met.
Figure 10 is a screen 147, which is generated by the routing client 48r and which prompts a recipient to enter his off-line routing preferences. Specifically, a prompt 148 prompts the recipient to select the preferred device or devices for receiving a message intended for the desktop pager 20r if the computer 12r is not logged onto the server 42 when the message is sent. In the embodiment shown, the recipient enters the preferred device or devices, here the e-mail server 26r, in a field 149. Thus, if the recipient is out of town and is not running his computer 12r, then the server 42 will forward all desktop pages to his e-mail server 26r. If the recipient has remote access to his e-mail server 26r, then he can access these desktop pages before he returns from his trip.
Figure 11 is a screen 150, which is generated by the routing client 48r and which prompts the recipient to enter a rerouting condition. Specifically, a prompt 151 prompts the recipient to check a box 152 if he would like the server 42 to reroute desktop pages if the recipient does not pick up the message within a time period specified in a box 1 54. The device to which the page will be rerouted is specified in a box 156. The server 42 or the client 48r can determine if the recipient has picked up the desktop page from the desktop pager 20r in a number of ways. In one embodiment, the client 48r or the server 42 monitors the input device 13r to determine if it has provided any data to the computer 12r within the time period specified in the box 154. The idea is that if the input device 13r provides data during the specified time period, then the recipient was sitting at the computer 12r during this period and thus has read the desktop page. Conversely, if the input device 13r has not provided data, then the recipient was not sitting at the computer 12r during the specified period and thus has not read the desktop page. The input device 13r may be any conventional input device such as a keyboard or mouse. Alternatively, the device 13r may be a device such as a video camera or a microphone that the server 42 or client 48r monitors for movement or sound, respectively.
Figure 12 is a flow chart of an automatic-message-device-recognition procedure implemented by one embodiment ofthe routing client 48r.
First, referring to the step 160, the recipient boots the routing client 48. The recipient may do this by a special command after the computer 12r has booted up, or the client 48r may boot automatically during the boot sequence ofthe computer 12r.
Next, referring to step 162, the booted client 48r searches the storage area 16r of the computer 12r for message devices that are installed on the computer 12r such as the desktop pager 20r, the web browser 22s, and the e-mail viewer 24s.
Then, referring to step 164, the routing client 48r determines which of these installed message devices the recipient wants to make available to senders. In one embodiment, these available message devices are included in the device fields 92 and 106 as discussed above in conjunction with Figures 5 and 6, respectively. More specifically, on its first boot, the client 48r includes all such devices in the fields 92 and 106. The recipient, however, can remove one or more of these devices from the fields 92 and 106. On subsequent boots, the client 48r will omit from the fields 92 and 106 any message devices previously removed therefrom, unless the recipient subsequently adds these devices back to the fields 92 and 106.
Next, referring to the step 166, the booted client 48 sends to the server 42 the identities, addresses, and other information for the message devices that are listed in the fields 92 and 106, and also sends the server 42 the recipient's routing preferences as discussed above.
Therefore, the recipient does not have to perform a tedious installation of the message devices into the client 48r or the server 42. Furthermore, the client 48r may even identify and list message devices that the recipient didn't even know were installed on the computer 12r! Figure 13 is a display screen 170, which one embodiment of the client 48r generates according to the flow chart of Figure 12 to allow a recipient to remove and add message devices that are available to senders. The available devices are listed in a field 172, and can be deleted or added by clicking on the "Delete Device" and "Add Device" icons, respectively. When the "Add Device" icon is selected, the client 48r lists for the recipient's selection all message devices installed on the computer 12r but not currently available to senders, i.e., not listed in the fields 92 or 106.
Figure 14 is a flow chart of a callback procedure executed by the server 42 and the routing client 48s according to an embodiment ofthe invention.
Referring to step 180, the server 42 maintains a list of the users that are currently logged onto the server 42 via their respective clients 48, and also maintains a list of undelivered callback requests.
Next, referring to steps 182, 184 and 186, in one embodiment, the server 42 provides to a sender the log-on status of the recipients in the sender's groups, such as provided in the field 102 of the screen 90 in Figure 5. More specifically, referring to step 182, the sender logs onto the server 42 via the computer 12s and the client 48s. Next, referring to step 184, the server 42 determines the log-on status of each user in the sender's groups by checking the logged-on list. In one embodiment, the server 42 stores the membership data for the sender's groups so that the client 48s need not send this data to the server every time the sender logs onto the server. Then, referring to step 186, the server 42 sends the log-on status of each of these users to the sending client 48s. In one embodiment, the sending client 48s can also request the log-on status of a user even after the sending client 48s has logged onto the server 42.
Next, referring to step 188, the sender requests a callback. That is, the sender requests the server 42 to deliver a callback request to the client 48r of a recipient. The callback request notifies the recipient that the sender wishes to contact him/her. For example, in one embodiment, referring to the field 92 in the screen 90 of Figure 5, the sender can request a callback by clicking on the "Set A Callback" icon.
Then, referring to steps 190 and 192, the server 42 checks the logged-on list and determines whether the recipient is logged onto the server.
Next, referring to step 194, if the recipient is logged on, then the server delivers the callback request to the recipient's client 48r.
But, referring to step 196, if the recipient is not logged on, then the server adds the callback request to the callback list. Referring to step 198, when the recipient logs on, the server 42 checks the callback list to determine if the recipient has any outstanding callback requests. If, as in this example, the recipient does have an outstanding callback request, then the server 42 delivers the callback request to the recipient's client 48r. Thus, the callback procedure eliminates the problems associated with conventional polling as discussed above in conjunction with Figure 1.
Referring to Figure 15, in one embodiment ofthe callback procedure described in the flow chart of Figure 14, the client 48r generates a screen 200 in response to the callback request delivered by the server 42. The screen 200 identifies the sender and allows the recipient, via the client 48r, to either allow or cancel the callback. That is. the recipient has the option of allowing the server 42 to notify the sender that the recipient is now available or of preventing the server 42 from doing so. Thus, the recipient can cancel the callback request if he/she does not want to be bothered by the sender.
Figure 16 is a flow chart of a message-routing learning procedure implemented by one embodiment of the routing client 48r. Implementing this procedure allows the client 48r to automatically suggest, generate, or maintain the recipient's routing preferences.
Referring to step 201, the client 48r periodically or continually monitors the recipient's actions with respect to his received messages. Next, referring to step 202, the client 48r automatically suggests changes to, sets, or updates the routing preferences based on patterns that the client 48r has detected with respect to the received messages and the recipient's related actions. Then, referring to step 204, the client 48r sends these new routing preferences to the server 42 (with the recipient's permission if the client 48r has only suggested new routing preferences).
Still referring to steps 201, 202, and 204, in one embodiment, the client 48r implements a statistical correlation matrix, such as a conventional Baysian network, to correlate message characteristics (e.g., sender's identity, time of day message received) with the recipient's actions (e.g., forward or ignore message) for a group of messages such as the last one thousand received messages.
For example, suppose that using this technique, the client 48r determines that out of fifty phone calls to the recipient's work phone on weekends and after 5:00 p.m. on weekdays, the recipient has answered two, and the rest have been routed to the recipient's voice-mail server 30r. (In one embodiment, the client 48r can determine whether a call is answered or sent to voice mail by communicating with the voice-mail server 3 Or using conventional techniques.) Therefore, in response to this pattern, the client 48r may suggest that the recipient adopt a routing preference that causes the server 42 to route all work phone calls received on weekends and after 5:00 p.m. and on weekdays directly to the voice-mail server 30r, and thus reduce the chances that the caller will be aggravated by the phone ringing a number of times before he is transferred to voice-mail.
Or, suppose that the client 48r determines that out of twenty five e-mail messages from a particular sender when the e-mail client 24r also displays unread e-mail messages from other senders, the recipient has opened this particular sender's messages first four times. (In one embodiment, the client 48r can determine the order in which unread e-mail messages are opened by communicating with the e-mail client 24r or e-mail server 26r using conventional techniques.) In response to this pattern, the client 48r may suggest that the recipient adopt a routing preference that causes the server 42 to route all e-mails from this particular sender with high priority or in another manner such that they are always at the top of the unread e-mail list when the e-mail client 24r displays unread e-mail messages.
Figure 17 is a screen 206 and a redial list 208 generated by one embodiment of the routing client 48s according to a procedure similar to that discussed above in conjunction with Figure 16. Unlike the Figure 16 procedure, however, this procedure learns a sender's message-sending patterns. More specifically, the client 48s keeps track of the most popular message-sending actions that the sender has taken. In this embodiment, the client 48s retains ten actions, and updates the list 208 to include the last action taken. But when the client 48s updates the list 208 with the most recent action, it removes the least popular action on the list 208 and not necessarily the least recent action taken. Thus, the list 208 is not merely a list of the last ten actions taken, but is a combination of the last actions taken and the actions that the sender takes most frequently. For example, the list 208 may include the last five actions taken, and five of the most frequently taken actions.
Figures 18 and 19 are flow charts showing embodiments of respective procedures that allow a user to have multiple routing clients 48 simultaneously logged onto the server 42. For example purposes, referring to Figure 2, assume that the recipient owns the computers 12s (work) and 12r (home) and runs the routing clients 48s and 48r simultaneously. As discussed above, the labels of sending and receiving for the clients 48s and 48r are arbitrary as these clients can perform both message-sending and message-receiving functions. Therefore, this is an accurate example.
The flow chart of Figure 18 is an embodiment of a procedure to designate a newly logged-on client 48 as the primary client and the other client or clients that are already logged on as passive clients. The significance of the primary client 48 is that the server 42 follows the routing preferences of the primary client. For example purposes, the client 48s is the newly logged-on client, and the client 48r is already logged on to the server 42 at the time the client 48s logs on. It is understood, however, that in some embodiments there may be more than one client 48 already logged onto the server 42.
More specifically, referring to step 220, the "new" client 48s logs onto the server 42 via the computer 12s and determines whether or not the client 48r is logged onto the server 42. The new client 48s may make this determination in a variety of ways. In one embodiment, the server 42 automatically provides the new client 48s with the login status of the client 48r in a manner similar to that discussed above in conjunction with Figure 14. In another embodiment, the new client 48s requests the log-in status of the client 48r from the server 42 also in a manner similar to that discussed above in conjunction with Figure 14.
Next, referring to step 222, if the client 48r is not logged onto the server 42, then, referring to step 224, the new client 48s transfers its message-routing preferences to the server 42, and referring to step 226, the server 42 proceeds to route messages according to these routing preferences as discussed above in conjunction with Figure 4.
On the other hand, if the client 48r is logged onto the server, then the client 48s instructs the client 48r to become passive. The client 48s may provide these instructions to the client 48r in a number of ways. In one embodiment, the new client 48s requests the server 42 to set up a PTP communication path between it and the client 48r as discussed above in conjunction with Figure 4. In other embodiments, the new client 48r requests a communication path to the client 48r through the server 42 (star topology) also as discussed above in conjunction with Figure 4, or the server 42 instructs the client 48r to become passive.
Referring again to steps 224 and 226, after the client 48r is instructed to become passive, then the new client 48s transfers its routing preferences to the server 42, which routes messages according to these preferences.
The flow chart of Figure 19 shows an embodiment of a procedure to select a new primary client among multiple clients that are all already logged onto the server 42.
Referring to step 230, multiple clients 48 are logged onto the server 42, and one of these clients is the primary client and the others are passive clients. For example purposes, suppose that the user went home from work and left his work client 48s running. Then suppose he logs the home client 48r onto the server 42, and according to the procedure described in conjunction with Figure 18, the client 48r becomes the primary client and the client 48s becomes the passive client.
Referring to step 232 and using the above example, the passive client 48s detects a condition, such as user activity, that indicates it should now be the primary client. For example, this situation occurs if the user goes back to work without logging off the client 48r and starts using the computer 12s. The theory here is that the user wants the client on the computer he is using, here the client 48 s, to be the primary client so that his messages are routed accordingly. In one embodiment, the client 48s detects the user activity by monitoring the input device 13s as discussed above in conjunction with Figure 9.
Next, referring to step 234, the passive client 48s instructs the primary client 48r to become passive. In one embodiment, the passive client 48s communicates with the client 48r as discussed above in conjunction with Figure 18. Then, referring to the step 236, the passive client 48s transfers its message routing preferences and other information to the server 42 and becomes the new primary client.
Referring to step 238, the server 42 then routes subsequent incoming messages according to the routing preferences provided by the new primary client 48s.
From the foregoing it will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without deviating from the spirit and scope ofthe invention.

Claims

What is claimed is:
1. A computer operable to communicate with a server, the computer comprising: a storage device operable to store a client having access information for first and second receiving devices; and a processor coupled to the storage device and operable to run the client, to provide the access information to the server, to generate a message routing preference that is operable to cause the server to route a message sent to the first receiving device to the second receiving device, and to provide the message routing preference to the server.
2. The computer of claim 1 , further comprising: a data input device; and wherein the processor is operable to receive the message-routing preference from the data input device.
3. The computer of claim 1 wherein the processor is operable to store the message-routing preference, to execute a log-in program when the computer logs onto the server, and to provide the access information and message-routing preference to the server during execution ofthe log-in program.
4. The computer of claim 1 wherein the first receiving device is constructed to receive messages having a first form and the second receiving device is constructed to receive messages having a second form that is different than the first form.
5. The computer of claim 1 wherein the message-routing preference is operable to cause the server to route the message to the second receiving device upon occurrence of a condition specified by the message-routing preference.
6. The computer of claim 1 wherein the message routing preference is operable to cause the server to route the message to the second receiving device when the computer is not logged onto the server.
7. The computer of claim 1 wherein the message routing preference is operable to cause the server to allow the first receiving device to receive the message and to subsequently, upon the occurrence of a condition specified by the message routing preference, route the message to the second receiving device.
8. The computer of claim 1 wherein: the first receiving device comprises a desktop pager; and the message routing preference is operable to cause the server to route the message to the second receiving device if the computer is not logged onto the server.
9. The computer of claim 1 wherein: the first receiving device comprises a desktop pager that is stored in the storage device; the processor is operable to run the desktop pager; the desktop pager is operable to receive the message; the processor is operable to notify the server when a time period has elapsed from the pager's receipt ofthe message, the message routing preference specifying the duration ofthe time period; and the message routing preference is operable to cause the server to retrieve the message from the desktop pager and to route the message to the second receiving device in response to the notification from the processor.
10. The computer of claim 1 wherein: the first receiving device comprises a desktop pager that is stored in the storage device; the processor is operable to run the desktop pager; the desktop pager is operable to receive the message; the processor is operable to send the message to the server when a time period has elapsed from the pager's receipt of the message, the message routing preference specifying the duration ofthe time period; and the message routing preference is operable to cause the server to route the message received from the processor to the second receiving device.
11. A computer operable to communicate with a server, the computer comprising: a storage device operable to store a client; and a processor coupled to the storage device and operable to execute the client, to provide to the server the identity of another computer, and to request the server to deliver a callback request to the other computer.
12. The computer of claim 11 wherein: the other computer is logged off of the server; and the processor is operable to request the server to deliver the callback request to the other computer if the other computer subsequently logs onto the server.
13. A computer operable to communicate with a server, the computer comprising: a storage device operable to store a client that identifies devices to which the server is operable to route a user's incoming messages according to a routing preference ofthe user; and a processor coupled to the storage device and operable to execute the client, to monitor the user's actions with respect to the incoming messages to determine a pattern of the user's actions with respect to the incoming messages to generate a new routing preference based on the pattern, and to provide the new routing preference to the server.
14. The computer of claim 13 wherein the processor is operable to receive an initial routing preference and to generate the new routing preference by varying the initial routing preference based on the pattern.
15. The computer of claim 13 wherein the processor is operable to receive an initial routing preference, to provide the initial routing preference to the server, and to generate the new routing preference by varying the initial routing preference based on the pattern.
16. The computer of claim 13 wherein: the pattern indicates that the user is unavailable to retrieve messages from a first one ofthe devices during a predetermined time period; and the new routing preference includes server instructions to route a message received by the first device during the predetermined time period to a second one of the devices.
17. The computer of claim 13 wherein: the pattern indicates that the user is available to retrieve messages from a first one ofthe devices during a predetermined time period; and the new routing preference includes server instructions to allow a message directed to the first device to be routed to the first device during the predetermined time period.
18. The computer of claim 13 wherein the processor is operable to store the new routing preference.
19. The computer of claim 13 wherein the processor is operable to suggest the new routing preference to the user, to query the user if the processor should provide the new routing preference to the server, and to provide the new routing preference to the server in response to an affirmative response to the query.
20. A computer, comprising: a storage device for storing a client and the identity of a message-receiving device; and a processor coupled to the storage device and operable to run the client and to determine that the device is available to receive a message sent to a user.
21. The computer of claim 20 wherein the processor is operable to determine that the device is unavailable to receive the message in response to an instruction from the user.
22. The computer of claim 20 wherein: the storage device stores the device; and the processor is operable to run the device.
23. The computer of claim 20 wherein the identity of the device comprises a location ofthe device.
24. The computer of claim 20 wherein the processor is operable to indicate to the user that the device is available to receive a message sent to the user.
25. A computer operable to communicate with a server, comprising: a storage device for storing a client and the identity of a message-receiving device; and a processor coupled to the storage device and operable to run the client, to determine that the device is available to receive a message routed by the server according to a message routing preference of the user, to generate the message routing preference, and to provide the message routing preference to the server.
26. The computer of claim 25 wherein the processor is operable to determine that the device is unavailable to receive the message in response to an instruction from the user.
27. The computer of claim 25 wherein the device is installed on the computer.
28. The computer of claim 25 wherein the identity of the device comprises a location ofthe device.
29. The computer of claim 25 wherein the processor is operable to provide the identity ofthe device to the server.
30. The computer of claim 25 wherein the processor is operable to notify the user that the device is available to receive the message.
31. A computer operable to communicate with a server and another computer that is running a first client of a user, the computer comprising: a storage device operable to store a second client of the user, the second client being similar to the first client; and a processor coupled to the storage device and operable to execute the second client, to log the computer onto the server, and, if the other computer is logged onto the server, to configure the second client as a primary client and the first client as a nonprimary client with respect to the server.
32. The computer of claim 31 wherein the processor receives the login status of the other computer from the server when the processor logs the computer onto the server.
33. The computer of claim 31 wherein the processor configures the first client by instructing the first client to configure itself as the nonprimary client.
34. The computer of claim 31 wherein the processor configures the first client without routing configuration communications through the server.
35. A computer operable to communicate with a server and another computer that is logged onto the server and is running a first client of a user, the computer comprising: a storage device operable to store a second client of the user, the second client being similar to the first client; and a processor coupled to the storage device and operable to execute the second client, to detect user activity with respect to the computer, and, in response to the user activity, to configure the second client as a primary client and the first client as a nonprimary client with respect to the server.
36. The computer of claim 35, further comprising: an input device operable to provide data to the processor; and wherein the processor detects user activity if the processor receives data from the input device.
37. The computer of claim 35 wherein the processor configures the first client by instructing the first client to configure itself as the nonprimary client.
38. The computer of claim 35 wherein the processor configures the first client without routing configuration communications through the server.
39. A computer operable to communicate with a server, the computer comprising: a storage device operable to store a client having access information for first and second receiving devices; and a processor coupled to the storage device and operable to run the client, to provide the access information to the server, to determine a level of user activity with respect to the computer, and to cause the server to route a message directed to the first receiving device to the second receiving device if the level of user activity meets a predetermined condition.
40. The computer of claim 39 wherein the predetermined condition comprises that the processor detects no user activity for a predetermined length of time after the first receiving device receives the message.
41. The computer of claim 39 wherein the processor is operable to cause the server to retrieve the message from the first receiving device before routing the message to the second receiving device.
42. The computer of claim 39 wherein if the level of user activity meets the predetermined condition, the processor is operable to retrieve the message from the first device and to send the retrieved message to the server.
43. The computer of claim 39 wherein the processor is operable to : generate a reroute signal and provide the reroute signal to the server if the level of user activity meets the predetermined condition; and generate a message routing preference and provide the message routing preference to the server, the message routing preference operable to instruct the server to route the message to the second receiving device in response to the reroute signal.
44. The computer of claim 39 wherein the processor is operable to receive a message routing preference from a user, the message routing preference including the predetermined condition.
45. The computer of claim 39, further comprising: an input device; and wherein the processor determines the level of user activity by monitoring the input device.
46. A method, comprising: providing access information for first and second receiving devices to a server; generating a message routing preference that when implemented by the server, causes the server to route a message sent to the first receiving device to the second receiving device; and providing the message routing preference to the server.
47. The method of claim 46 wherein the generating comprises generating the message routing preference with a data input device.
48. The method of claim 46, further comprising: wherein the generating comprises generating the message routing preference with a computer; logging the computer onto the server; and wherein the providing comprises providing the access information and message- routing preference to the server during the logging ofthe computer onto the server.
49. The method of claim 46 wherein the first receiving device is constructed to receive messages having a first form and the second receiving device is constructed to receive messages having a second form that is different than the first form.
50. The method of claim 46, further comprising causing the server to route the message to the second receiving device upon occurrence of a condition specified by the message routing preference.
51. The method of claim 46, further comprising causing the server to route the message to the second receiving device when the first receiving device is unavailable to receive the message.
52. The method of claim 46, further comprising: causing the server to allow the first receiving device to receive the message; and subsequently causing the server to route the message to the second receiving device upon the occurrence of a condition specified by the message routing preference.
53. The method of claim 46 wherein the first receiving device comprises a desktop pager, the method further comprising causing the server to route the message to the second receiving device if the desktop pager is unavailable to receive the message.
54. The method of claim 46 wherein the first receiving device comprises a desktop pager, the method further comprising: receiving the message with the desktop pager; notifying the server when a time period has elapsed from the pager's receipt ofthe message, the message routing preference specifying the duration ofthe time period; and causing the server to retrieve the message from the desktop pager and to route the message to the second receiving device in response to the notifying.
55. A method, comprising : providing to a server from a first computer the identity of a second computer: and requesting the server to deliver a callback request to the second computer.
56. The method of claim 55 wherein: the second computer is logged off of the server; and the requesting comprises requesting the server to deliver the callback request if the second computer subsequently logs onto the server.
57. A method, comprising: monitoring a user's actions with respect to messages received by message receiving devices ofthe user; generating a current routing preference based on the routing pattern; and instructing a server to route subsequent incoming messages to the message receiving devices according to the current routing preference.
58. The method of claim 57, further comprising: before the instructing, instructing the server to route the incoming messages to the message-receiving devices according to an initial routing preference; and wherein the generating comprises generating the current routing preference by varying the initial routing preference based on the routing pattern.
59. The method of claim 57 wherein: the monitoring comprises identifying a time period during which the user is unavailable to retrieve messages from a first one ofthe devices; and the instructing includes instructing the server to route a message received by the first device during the predetermined time period to a second one ofthe devices.
60. The method of claim 57 wherein: the monitoring comprises identifying a time period during which the user is available to retrieve messages from a first one ofthe devices; and the instructing includes instructing the server to allow a message directed to the first device during the predetermined time period to be routed to the first device.
61. The method of claim 57, further comprising: suggesting the new routing preference to the user; asking the user if the new routing preference should be implemented; and wherein the instructing includes instructing the server to route subsequent incoming messages according to the new routing preference if the user answers affirmatively.
62. A method, comprising running on a processor a client that causes the processor to determine that a device is available to receive a message sent to a user.
63. The method of claim 62 wherein the running comprises causing the processor to determine that the device is unavailable to receive the message in response to an instruction from the user.
64. The method of claim 62 wherein the running comprises causing the processor to notify the user that the device is available to receive the message.
65. The method of claim 62, further comprising: wherein the device is installed on a computer that includes the processor; and running the device with the processor.
66. A method, comprising: running on a processor a client that causes the processor to determine that a device is available to receive a message routed by a server according to a message routing preference of a user; generating the message routing preference; and providing the message routing preference to the server.
67. The method of claim 66 wherein the running comprises: generating a device list that includes the device; and removing the device from the list in response to an instruction from the user.
68. The method of claim 66, further comprising: wherein the device is installed on a computer that includes the processor; and running the device with the processor.
69. The method of claim 66 wherein the running comprises generating a device list that includes the device to inform the user that the device is available to receive the message.
70. A method, comprising: logging a first computer that is running a first client of a user onto a server; and if a second computer is logged onto the server and is running a second client of the user, the second client being the same as the first client, then configuring the first client as a primary client and the second client as a nonprimary client with respect to the server.
71. The method of claim 70, further comprising obtaining the login status of the second computer from the server during the logging on ofthe first computer.
72. The method of claim 70 wherein the configuring comprises instructing, with the first client, the second client to configure itself as the nonprimary client.
73. The method of claim 70 wherein the first and second clients communicate without routing communications through the server.
74. A method, comprising: detecting user activity with respect to a first computer that is running a first client and that is logged onto a server; and in response to the user activity, configuring the first client as a primary client and a second client as a nonprimary client with respect to the server, the second client being the same as the first client and running on a second computer that is logged onto the server.
75. The method of claim 74 wherein the detecting comprises detecting data being input to the first computer from a user-operated input device.
76. A method, comprising: providing to a server access information for first and second receiving devices; determining a level of user activity with respect to a computer; and causing the server to route a message directed to the first receiving device to the second receiving device if the level of user activity meets a predetermined condition.
77. The method of claim 76 wherein the predetermined condition comprises a condition that no user activity is detected for a predetermined length of time after the first receiving device receives the message.
78. The method of claim 76 wherein the causing comprises causing the server to retrieve the message from the first receiving device before routing the message to the second receiving device.
79. The method of claim 76, further comprising, before the causing and if the level of user activity meets the predetermined condition, retrieving the message from the first device and sending the retrieved message to the server.
80. The method of claim 76, further comprising: providing a message routing preference to the server, the message routing preference operable to instruct the server to route the message to the second receiving device if the server receives a reroute signal; and wherein the causing comprises generating the reroute signal and providing the reroute signal to the server if the level of user activity meets the predetermined condition.
81. The method of claim 76, further comprising providing a message routing preference from a user to the computer, the message routing preference including the predetermined condition.
82. The method of claim 76 wherein the determining comprises monitoring an input device ofthe computer to determine the level of user activity.
PCT/US2000/000689 1999-01-11 2000-01-11 Routing messages to achieve unified communications WO2000041534A2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2000593156A JP2002535743A (en) 1999-01-11 2000-01-11 Message routing for integrated communication
AU33454/00A AU3345400A (en) 1999-01-11 2000-01-11 Improved client and method for routing messages to achieve unified communications
BR0007443-8A BR0007443A (en) 1999-01-11 2000-01-11 Enhanced client and method for routing messages for unified communications
EP00911575A EP1145487A3 (en) 1999-01-11 2000-01-11 Routing messages to achieve unified communications

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US22817999A 1999-01-11 1999-01-11
US09/228,179 1999-01-11

Publications (2)

Publication Number Publication Date
WO2000041534A2 true WO2000041534A2 (en) 2000-07-20
WO2000041534A3 WO2000041534A3 (en) 2002-02-14

Family

ID=22856128

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/000689 WO2000041534A2 (en) 1999-01-11 2000-01-11 Routing messages to achieve unified communications

Country Status (5)

Country Link
EP (1) EP1145487A3 (en)
JP (1) JP2002535743A (en)
AU (1) AU3345400A (en)
BR (1) BR0007443A (en)
WO (1) WO2000041534A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100433734C (en) * 2004-01-10 2008-11-12 腾讯科技(深圳)有限公司 Message previewing method and system in instant communication

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493692A (en) * 1993-12-03 1996-02-20 Xerox Corporation Selective delivery of electronic messages in a multiple computer system based on context and environment of a user
WO1996035994A1 (en) * 1995-05-08 1996-11-14 Compuserve Incorporated Rules based electronic message management system
EP0833492A2 (en) * 1996-09-27 1998-04-01 AT&T Corp. Intelligent pager for remotely managing e-mail messages
US5825865A (en) * 1991-10-04 1998-10-20 Motorola, Inc. Temporary message routing and destination selection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5825865A (en) * 1991-10-04 1998-10-20 Motorola, Inc. Temporary message routing and destination selection
US5493692A (en) * 1993-12-03 1996-02-20 Xerox Corporation Selective delivery of electronic messages in a multiple computer system based on context and environment of a user
WO1996035994A1 (en) * 1995-05-08 1996-11-14 Compuserve Incorporated Rules based electronic message management system
EP0833492A2 (en) * 1996-09-27 1998-04-01 AT&T Corp. Intelligent pager for remotely managing e-mail messages

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100433734C (en) * 2004-01-10 2008-11-12 腾讯科技(深圳)有限公司 Message previewing method and system in instant communication

Also Published As

Publication number Publication date
JP2002535743A (en) 2002-10-22
AU3345400A (en) 2000-08-01
EP1145487A3 (en) 2002-04-17
BR0007443A (en) 2001-10-16
WO2000041534A3 (en) 2002-02-14
EP1145487A2 (en) 2001-10-17

Similar Documents

Publication Publication Date Title
US6606647B2 (en) Server and method for routing messages to achieve unified communications
US20010013069A1 (en) Data messaging aggregation
US20010013050A1 (en) Buddy list aggregation
EP1882348B1 (en) System and method for providing interactive communications
EP1177666B1 (en) A distributed system to intelligently establish sessions between anonymous users over various networks
US6405035B1 (en) System and method for forwarding messages to a subscriber device
US6353660B1 (en) Voice call processing methods
US7409425B2 (en) Selective transmission of an email attachment
US7062538B2 (en) Server that obtains information from multiple sources, filters using client indentities, and dispatches to both hardwired and wireless clients
US7836136B1 (en) Method and apparatus for processing electronic messages
US7546351B1 (en) Methods and systems for filtering, sorting, and dispatching messages to wired and wireless devices
US20020024947A1 (en) Communications availability
EP1519292A1 (en) Method and apparatus for delivering an electronic mail message with an indication of the presence of the sender
US20020178230A1 (en) Inter-enterprise messaging system using bridgehead servers
WO2000008813A1 (en) Character message communication system and method
WO1998058332A1 (en) Method and apparatus for accessing and retrieving messages
US8412173B2 (en) Method and system for providing a contact attempt service
US7031441B1 (en) Method and apparatus for supporting on-demand connectivity for network applications
US20020159569A1 (en) Messaging protocol over internet protocol
WO2001050680A2 (en) Buddy list aggregation
EP1305725B1 (en) Instant messaging account system
EP1145487A2 (en) Routing messages to achieve unified communications
JP2000201175A (en) Information transmission system and its method

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: IN/PCT/2001/669/KOL

Country of ref document: IN

ENP Entry into the national phase

Ref document number: 2000 593156

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 33454/00

Country of ref document: AU

WWE Wipo information: entry into national phase

Ref document number: 2000911575

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2000911575

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

AK Designated states

Kind code of ref document: A3

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

WWW Wipo information: withdrawn in national office

Ref document number: 2000911575

Country of ref document: EP