1. Field of the Invention
Embodiments of the present invention generally relate to communication routing and, more specifically, to a method and system for unified management of communication events.
2. Description of the Related Art
As mobile network access has become more and more common, a myriad of methods of communication have developed. It is common to receive communications in the form of text messages, emails, instant messages (IMs), phone calls, voice mails, and picture messages, and new methods of communication continue to be developed. With the large number of communication mediums available to users, it is often difficult to determine which medium provides an optimal communication experience for both the sender and the receiver. For example, a user might prefer to receive messages via email rather than text message between the hours of 9 am and 5 pm because they will be at their desk at work and unable to access their mobile phone.
Currently no messaging architecture exists that is capable of providing a single routing solution for a variety of messaging types. This results in conversions and translations occurring between carriers (e.g. an IM sent to a mobile phone as a text message must be translated across the border between the IM network owner and the mobile phone carrier), often resulting in incorrectly formatted data or the addition of unnecessary formatting data that is transmitted along with the reformatted communication. Therefore, there is a need in the art for a method and system for unified management of communication events.
Embodiments of the present invention comprise a method and apparatus for providing unified management of communication events. In one embodiment, the method comprises receiving a communication message in a first format, converting the communication message to a generic message, determining one or more message destinations based on a set of routing rules, determining one or more message formats based on the determined destinations, converting the generic message into a converted message, and transmitting the converted message to the one or more determined destinations. The generic message is stored in a destination agnostic format. The converted message is stored in the one or more message formats associated with the one or more determined destinations.
In another embodiment, the system comprises a messaging module and a routing module. The messaging module sends and receives communication messages, converts the communication messages into a generic format, and converts one or more generic messages into a destination format. The routing module determines one or more destinations for the communication messages based on one or more routing rules contained within one or more user profiles.
In another embodiment, the system comprises a messaging module, a routing module, a profile manager, a synchronization module, and an event module. The messaging module sends and receives communication messages, converts the communication messages into a generic format, and converts one or more generic messages into a destination format. The routing module determines one or more destinations for the communication messages based on one or more routing rules contained within one or more user profiles. The user profiles comprise a user identifier, one or more communication addresses, and one or more routing rules. The profile manager accesses the one or more user profiles to determine the one or more destinations. The synchronization module interfaces with the profile manager to create the one or more rules by synchronizing with a scheduling application. The event module generates non-communication events that are routed and transmitted as communication messages to one or more destinations.
So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
A method and system for providing unified management of communication events is described herein. The inventive method and system advantageously provide for routing and conversion of communication events into one or more communication formats in accordance with defined rules and preferences.
The communication system 100 includes a message source 102. The message source 102 is any device capable of generating a communication message as known in the art, such as a mobile phone, a computer, a home telephone, a personal digital assistant, and the like. The communication message may be an email, a Short Message Service (SMS) message, a telephone call, a voicemail, an instant message, or the like. The message source 102 is coupled to a messaging module 104. The messaging module 104 operates to receive the communication message from the message source 102. The messaging module 104 may be any device or server capable of receiving the communication message. After receiving the communication message, the messaging module 104 forwards the communication message to a routing module 108. In some embodiments, the messaging module 104 converts the communication message into a generic format before forwarding.
The routing module 108 receives the communication message from the messaging module 104. In some embodiments, the routing module 108 converts the communication message into a generic format. The routing module 108 accesses a store of static routing data 106 and a profile manager 116 to route the communication message to a destination. The static routing data 106 comprises routing data that is not associated with a particular user profile. The static routing data 106 provides the ability to override user profile based routing. For example, if a user has chosen to receive instant messages as the primary method of communication from some contact, but there is a system-wide outage of instant messaging services, then the static routing data 106 might have a temporary static routing setup that allows the system to override user preferences and send out an SMS or email instead of an instant message.
Another situation where static routing data 106 is used is to manage cost. For example, the system may base some routing decisions on the cheapest method to reach a customer in certain geographies. For example, if the system is aware that the act of sending out SMS in a certain country is prohibitively expensive, the system may restrict communications using the other modes to avoid incurring prohibitive costs to the user.
The profile manager 116 provides the routing module 108 with routing data for specific users and specific scenarios. This profile routing data is stored in one or more user profiles 118. For example, a user profile 118 may indicate that SMS messages sent to the user's mobile phone between the hours of 9 am and 5 pm should be forwarded to the user's work email. The contents of the user profiles 118 are discussed further with respect to
The routing module 108 is further coupled to an event module 110. The event module 110 generates events that are sent to the routing module as non-communication events, which are then transmitted as communication messages. In some embodiments, the event module 110 generates events as a result of external events 112 received by the event module 110. In some embodiments, the events are generated in response to calendar data received from a calendar module 120. The external events 112 may be configured by the user or received from external sources. For example, the user may set up a reminder event to send an email to themselves referencing items remaining on a to-do list. The calendar module 120 allows the user to configure certain messages to be sent at certain times or dates. For example, the user may set up a calendar event to send a SMS to remind him of his wife's birthday. In some embodiments, and the event module 110 generates events based upon the data stored within the calendar module 120 to provide external messaging solutions. For example, the calendar module 120 may send an event based on a birthday reminder. The event may include instructions to send an email to the user with the reminder. The email may include a link to send an event to the event module 110 to send flowers to the birthday celebrant. The link in the email would trigger an external event 112 via the event module 110 that would trigger an external website (e.g. a florist) to send the flowers. In some embodiments, the user configures the events of the calendar module 120 via an interface module 122. In some embodiments, data contained within the calendar module 120 is associated with a particular user via a data link within the user profile stored within the set of user profiles 118.
In some embodiments, the external events 112 received by the event module 110 update a status of the user maintained by the routing module. For example, a user may power on a game console or other home audio/video equipment, indicating they are capable of receiving communications via the game console or other home audio/video equipment. Upon enabling the game console, the event module 110 would receive an external event 112 indicating the user is available via the game console. One of ordinary skill in the art would recognize that the external event 112 could be generated by either the game console itself, a system operable to monitor for activity on the game console, or some combination of the two. Other events that could be processed in the same or similar manner include powering on of a home set-top box, a switch from idle to active on a computer, a Global Positioning System (GPS) location change (e.g. the user has left the office and returned home), or any other activity from which a user state can be inferred.
Upon receipt of such an event, the event module 110 would instruct the routing module 108 to update the status of the user. In some embodiments, the routing module 108 maintains a user state table 109 indicating the current status of each user. These statuses may then be used by the system to route communications in accordance with a set of defined rules. These rules are discussed further with respect to
In some embodiments, the routing module 108 may be further coupled to a location module 124. The location module 124 provides location awareness to the system 100. In some embodiments, the location module 124 receives location information of a user from a mobile device 125. The mobile device 125 may be any mobile device capable of providing information sufficient to determine location. As a specific, non-limiting example, the mobile device 125 may have a GPS module for determining a location using the Global Navigation Satellite System (GNSS). In some embodiments, the location module 124 may determine the location of the mobile device 125 by ascertaining the geographic location of one or more cellular phone towers with which the device is communicating. One of ordinary skill in the art would recognize a variety of other methods for determining the location of the mobile device, including identifying nearby wireless networks. One of ordinary skill in the art would realize that the location determination function could be performed either on the mobile device 125, such as where the mobile device 125 has a GPS receiver, or at the location module 124 in response to information received from the device, such as determining the location of connected cellular towers.
The profile manager 116 is further coupled to a sync module 114 and the interface module 122. The interface module 122 provides an interface to add, remove, and modify data contained within the user profiles 118. This interface may further include the ability to add, remove, and modify calendar events as used by the calendar module 120. The sync module 114 provides for the ability to synchronize with datebook and/or calendar applications. For example, a user may update a calendar application to indicate they will be in a meeting from 10:00 am to 11:00 am. The sync module 114 would then direct all phone calls to the user's mobile phone directly to voicemail during this time period.
Each of the modules 104, 108, 110, 114, 116, 120, and 122 and the data stores 106 and 118 may be physically implemented using one or more computer systems (an exemplary embodiment of a computer system is described below with respect to
The computer 200 or multiple ones of the computer 200 may be used to implement any of the servers and/or methods described herein. The computer 200 may be one of any form of a general purpose computer used in accessing and operating within an communication network. The computer 200 may include a central processing unit (CPU) 202, a memory 206, and various support circuits 204. The CPU 202 may include one or more microprocessors or the like as known in the art. The support circuits 204 include conventional cache, power supplies, clock circuits, data registers, and the like used in conjunction with software executing on the CPU 302. The memory 206, or computer readable medium, may include one or more of the following random access memory, read only memory, magneto-resistive read/write memory, optical read/write memory, cache memory, magnetic read/write memory, generally non-volatile memory and the like.
The memory 206 may store software that is executed to perform methods of according to embodiments of the invention. For example, the software can implement at least a portion of the method 500 performed by a message module 104 or routing module 108. The software, when executed by the processor 202, transforms the general purpose computer into a specific purpose computer that controls methods described herein. Although embodiments of the process of the present invention are discussed as being implemented as a software routine, some of the method steps that are disclosed herein may be performed in hardware or a combination of hardware and software. As such, the invention may be implemented in software as executed upon a computer system, in hardware as an application specific integrated circuit or other type of hardware implementation, or a combination of software and hardware.
Additionally, the software may act as a “stand alone” program or may be embedded with one or more other routines or programs that provide one or more additional telecommunication services. The software of the present invention is capable of being executed on computer operating systems including but not limited to MICROSOFT computer products, APPLE computer products, UNIX, and LINUX based operating systems. Similarly, the software of the present invention is capable of being performed using CPU architectures including but not limited to Apple Power PC, AMD/Intel x86, Sun SPARC, and Intel ARM.
In some embodiments, the memory comprises an operating system 208, a message module 210, a routing module 212, a profile manager 214, routing data 216, an event module 218, a sync module 220, an interface module 222, one or more user profiles 224, and a calendar module 226. In operation, the CPU 202 executes the operating system 208 to control the general utilization and functionality of the computer 200. The message module 210, the routing module 212, the profile manager 214, the routing data 216, the event module 218, the sync module 220, the interface module 222, the one or more user profiles 224, and the calendar module 226 perform the same functionality as the same named components of the communication system 100 discussed with respect to
The user profile 300 may also comprise one or more data links 306. The data links 306 point to external data sources which may be also be pulled when querying the user profile 300. For example, the user profile 300 may include a data link 306 to a set of calendar data. A query to the user profile 300 would be able to follow the data link 306 to a set of calendar data that may also be used in routing communications, such as a daily schedule. Other examples of datasets that could be linked via the data links 306 include contact address book data, geographic location data (such as Global Positioning System coordinates), to-do lists, employee directories, and the like.
The user profile 300 further comprises a set of routing rules 308. The routing rules 308 comprise one or more individual rules 310 that determine where incoming communication to the user are directed. In some embodiments, the routing rules 308 comprise a default set of routing rules when the user has not specified particular preferences. The set of routing rules 308 directs the routing and formatting for incoming messages intended for the user associated with the user profile 300. For example, the set of routing rules 308 may comprise individual rules 310 for routing incoming calls during the work day (such as rule 3101), or the routing of Ns when the user does not have a valid IM client running (such as rule 3102). The set of routing rules 308 is used by the routing module 108 as discussed with respect to
The message 402 in generic format is passed to the routing module 406. The routing module 406 queries the profile manager 408 to determine the proper routing for a SMS to the destination user from the source user at the particular time of day at step 3407. At step 4409, the profile manager 408 responds to the routing module 406 indicating that the message should be routed via SMS and IM. The routing module 406 then marks the generic message sent to the message module 404 to indicate that the message should be sent via SMS and IM at step 5411. At step 6413, the message module 404 converts the generic message into an IM 4141 and a SMS 4142, which are sent to the appropriate destinations associated with their communication medium (an IM client and a mobile device, respectively). Although the present exemplary embodiment relates to the conversion of an SMS to an IM, one of ordinary skill in the art would recognize that it is possible to convert between and among a variety of different communication methods, such as phone calls, voice mails, emails, SMS messages, Ns, and the like.
At step 510, the method 500 converts the generic message into a format suitable for the destination determined at step 508. In some embodiments, the generic message is converted into multiple formats suitable for delivery to multiple destinations. After the message has been converted, the method proceeds to step 512.
At step 512, the method 500 transmits the converted message to the determined destination. In some embodiments, the message is transmitted to multiple destinations in one or more formats. Once the message has been transmitted, the method ends at step 514.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.