1. Field of the Invention
The invention is related to the field of communications and, in particular, to delivery of text messages.
2. Statement of the Problem
In many mobile networks, text messaging has become a very popular mode of communication. One example of text messaging is Short Message Service (SMS), which is a communication protocol allowing the exchange of short text messages (i.e., 160 characters) between mobile devices. Often times, mobile users more frequently use text messaging for communication than voice calls.
Text messages are transmitted over signaling channels of a mobile network, such as over SS7 channels. An SMS Center (SMSC) in the mobile network has a store-and-forward system for delivering text messages to their destinations over the signaling channels. Upon initially receiving a text message, the store-and-forward system first stores (persistently) the text message, and then initiates a delivery attempt for the text message. If the first delivery attempt is unsuccessful, then the store-and-forward system enters a retry process. For the retry process, the store-and-forward system will retry delivery a predefined number of times before the text message is discarded.
The following illustrates an example of delivering a text message from an originating mobile device to a destination mobile device in a UMTS network. To start, a sender originates the text message through the originating mobile device, and the originating mobile device sends the text message to an SMSC. A store-and-forward system in the SMSC receives and stores the text message. The store-and-forward system then queries a Home Location Register (HLR) to identify routing information for the text message. The HLR responds to the query with the routing information, and the store-and-forward system then attempts to forward the text message to the destination mobile device based on the routing information. If the first delivery attempt is unsuccessful, then the store-and-forward system retries delivery after a time period. The store-and-forward system will retry delivery a predefined number of times before the text message is discarded.
The store-and-forward approach to text messaging drives up the cost of the SMSC due to the expensive storage subsystems used for storing the text messages before delivery. As the volume of text messages increases in mobile networks, the unit price per text message drops significantly. Thus, profit margins for text messaging have become lower for the network operators. To reduce costs and increase network capability for delivering text messages, some network operators no longer use only store-and-forward processing. Instead, many network operators offer an alternative approach, which is referred to as First Delivery Attempt (FDA) processing. With FDA processing, delivery of a text message to the destination is attempted before it is stored. If delivery fails, then the text message is stored, and normal store-and-forward processing occurs.
The following illustrates an example of FDA processing used to deliver a text message in a UMTS network. The sender originates the text message through an originating mobile device, and the originating mobile device sends the text message to an FDA system. The FDA system initially receives the text message, and queries the HLR to identify routing information for the text message. The HLR responds to the query with the routing information, and the FDA system then attempts to forward the text message to the destination mobile device based on the routing information, without first persistently storing the text message in memory. If the FDA system determines that delivery of the text message failed, then the FDA system routes the text message to the SMSC. The store-and-forward system in the SMSC then stores the text message, and attempts delivery of the text message according to store-and-forward processing.
One problem encountered when both FDA processing and store-and-forward processing are used to deliver text messages to the same destination is that the text messages may be sent out of sequence. For example, assume that a sender originates a first text message to a destination. The FDA system receives the first text message, and attempts to forward the first text message to the destination (without first persistently storing the first text message in memory). If the FDA system determines that delivery of the first text message has failed, then the FDA system routes the text message to the SMSC. The store-and-forward system in the SMSC then stores the first text message (which is also referred to as queuing the first text message for a later delivery), and attempts to deliver the first text message to the destination based on store-and-forward processing.
Assume further that the sender originates a second text message to the same destination. The FDA system receives the second text message, and attempts to forward the second text message to the destination (without first persistently storing the second text message in memory). If the destination is available to receive the second text message and the FDA system delivers the second text message while the first text message is still queued in the store-and-forward system, then the destination will receive the second text message before the first text message. The text messages are unfortunately received out of sequence, which can be confusing to the destination of the text messages.
Embodiments described herein are able to provide text messages to a destination in the proper sequence when FDA processing and store-and-forward processing are used to deliver the text messages. When a text message is received and before FDA processing is performed, a determination is made as to whether a prior text message is pending in a store-and-forward system for the same destination. If a prior text message is not pending, then the received text message is forwarded to the FDA system for FDA processing. However, if a prior text message is pending, then the received text message is forwarded to the store-and-forward system for store-and-forward processing. Thus, the received text message will be queued for delivery behind the prior text message in the store-and-forward system, and the prior text message will be delivered first to the destination. The destination will advantageously receive the text messages in the proper sequence.
One embodiment comprises a message system operable to handle text messages in a mobile network. The message system includes a message processor operable to receive a text message intended for a destination, and to determine whether a prior text message is pending in a store-and-forward system for the destination. If a prior text message is not pending in the store-and-forward system, then the message processor is further operable to forward the received text message to an FDA system for FDA processing. If a prior text message is pending in the store-and-forward system, then the message processor is further operable to forward the received text message to the store-and-forward system for store-and-forward processing. The store-and-forward system will deliver the prior text message to the destination before the received text message so that the text messages are delivered in the proper sequence.
In another embodiment, the message system includes a central database operable to store message indicators for a plurality of destinations. The message indicator indicates whether a prior text message is pending in the store-and-forward system for a destination. The central database is updated by the store-and-forward system. For example, the store-and-forward system is operable to detect the prior text message that is pending for the destination, to generate a first update message indicating that the prior text message is pending for the destination, and to transmit the first update message to the central database. The central database is operable to receive the first update message from the store-and-forward system, and to update the message indicator for the destination based on the first update message. The store-and-forward system is further operable to detect a successful delivery of the prior text message to the destination, to generate a second update message indicating that the prior text message was successfully delivered to the destination, and to transmit the second update message to the central database. The central database is operable to receive the second update message from the store-and-forward system, and to update the message indicator for the destination based on the second update message.
With the central database updated by the store-and-forward system, the message processor may query the central database for the message indicator of a particular destination. As an example, the message processor is further operable to transmit a query to the central database as to whether a prior text message is pending in the store-and-forward system for the destination. The central database is further operable to receive the query, to process the query to identify a destination ID for the destination, to search for a message indicator that is mapped to the destination based on the destination ID, and to transmit a response that includes the message indicator mapped to the destination. The message processor is further operable to process the message indicator in the response to determine whether a prior text message is pending in the store-and-forward system for the destination.
Other exemplary embodiments may be described below.
Some embodiments of the present invention are now described, by way of example only, and with reference to the accompanying drawings. The same reference number represents the same element or the same type of element on all drawings.
The figures and the following description illustrate specific exemplary embodiments of the invention. It will thus be appreciated that those skilled in the art will be able to devise various arrangements that, although not explicitly described or shown herein, embody the principles of the invention and are included within the scope of the invention. Furthermore, any examples described herein are intended to aid in understanding the principles of the invention, and are to be construed as being without limitation to such specifically recited examples and conditions. As a result, the invention is not limited to the specific embodiments or examples described below, but by the claims and their equivalents.
In this embodiment, mobile network 100 includes a message system 124, which comprises any system, server, or function operable to handle text messages. Message system 124 includes a message processor 132, a First Delivery Attempt (FDA) system 134, a store-and-forward system 136, and a central database 138. Message processor 132 comprises any device, component, system, or application operable to control whether FDA processing or store-and-forward processing is applied to a text message. Message processor 132 controls the application of FDA processing or store-and-forward processing to a text message based on whether one or more prior text messages are pending in store-and-forward system 136 for the same destination. As a result, message processor 132 is able to ensure that text messages are received at a destination in the proper (time) sequence.
FDA system 134 comprises any system, server, application, or function operable to implement FDA processing. In FDA processing, when a text message is initially received, delivery of the text message is attempted first before storing the text message. Those skilled in the art will appreciate that FDA processing may involve briefly queuing the text messages for the delivery attempt. However, the text message is not persistently stored as is done for store-and-forward processing. If the first delivery attempt fails, then FDA system 134 may fallback to store-and-forward system 136 to deliver the text message. FDA system 134 may comprise a cluster of FDA processors that are operating to handle multiple text messages simultaneously. In one embodiment, the FDA processors in the cluster share a common network address, such as a common point code.
Store-and-forward system 136 comprises any system, server, application, or function that implements store-and-forward processing, one example of which is defined in SMS protocol. In store-and-forward processing, when a text message is initially received, the text message is persistently stored in memory. Delivery of the text message is then attempted to the destination. If the first delivery attempt is unsuccessful, then delivery is retried after a time period (e.g., 10 minutes, 30 minutes, etc). A predefined number of retries are performed before the text message is discarded.
Central database 138 comprises any storage system operable to store message indicators for subscribers of mobile network 100 that may be a destination of a text message. A message indicator indicates whether one or more prior text messages are pending in store-and-forward system 136 for a destination. In other words, if a text message intended for a destination is queued for delivery in store-and-forward system 136, then the message indicator indicates that the text message is queued in store-and-forward system 136. The message indicators are mapped to subscribers (i.e., destinations) in central database 138, and are updated based on information provided by store-and-forward system 136. Database 138 is considered “central” because it is accessible by message processor 132, FDA system 134, and store-and-forward system 136.
Although message processor 132, FDA system 134, store-and-forward system 136, and central database 138 are all shown as part of message system 124, those skilled in the art will appreciate that one or more of these systems may be implemented on different platforms within mobile network 100. For example, message processor 132 and FDA system 134 may be implemented in an SMS router, in a Signaling Transfer Point (STP), or some other network element, while store-and-forward system 136 may be implemented in an SMSC. Also, the functionality of message processor 132 may be performed in FDA system 134.
In
In step 202, message processor 132 receives the text message from sender 110 that is intended for destination 112. Instead of automatically forwarding the text message to FDA system 134 for FDA processing, message processor 132 determines whether a prior text message is pending in store-and-forward system 136 for destination 112 in step 204.
If a prior text message is not pending in store-and-forward system 136, then message processor 132 forwards the received text message to FDA system 134 for FDA processing. FDA system 134 will then attempt to deliver the text message to destination 112 first without persistently storing the text message. If the delivery attempt fails, then FDA system 134 may forward the text message to store-and-forward system 136 for store-and-forward processing.
If a prior text message is pending in store-and-forward system 136, then message processor 132 forwards the received text message to store-and-forward system 136 for store-and-forward processing. Store-and-forward system 136 will persistently store the received text message in memory, and then queue the received text message for delivery to destination 112. The received text message will be queued behind the prior text message in the order of delivery. For example, when receiving the prior text message, store-and-forward system 136 will queue the prior text message for delivery to destination 112. When receiving the received text message from message processor 132, store-and-forward system 136 will also queue the received text message for delivery to destination 112. The received text message will be queued behind the prior text message in the order of delivery, and thus will be delivered to destination 112 after the prior text message. Destination 112 will advantageously receive the text messages in the proper sequence.
As described above, central database 138 (see
To determine whether a prior text message is pending in store-and-forward system 136 (see step 204 in
In
In
Central database 138 in
In
In
In
Application server 921 is operable to handle SMS messages, and therefore may be referred to as an SMSC. As part of handling SMS messages, application server 921 includes store-and-forward system 936 that uses SMS protocol. Store-and-forward system 936 is able to deliver SMS messages to destinations using store-and-forward processing, such as delivering an SMS message to mobile device 912 through RAN 916.
Central database 924 is able to store message indicators for subscribers of IMS network 900 that may be a destination of an SMS message. Similar to the prior embodiments, a message indicator indicates whether one or more prior SMS messages are pending in store-and-forward system 936. Central database 924 maintains a table that maps destinations to message indicators, one of which is illustrated in
Assume for this example that a user of mobile device 910 initiates an SMS message to a user of mobile device 912.
Message processor 932 receives the response from central database 924, and processes the message indicator to determine whether a prior SMS message is pending in store-and-forward system 936 for mobile device 912. In this case, assume that a prior SMS message is not pending. Because no other SMS message is pending, there is no risk of the SMS messages being delivered out of sequence using FDA processing. Thus, message processor 932 forwards the SMS message to FDA system 934 for FDA processing by sending the SIP MESSAGE. In response to receiving the SMS message, FDA system 934 attempts to deliver the SMS message to its destination first without persistently storing the SMS message by sending the SIP MESSAGE to S-CSCF 918. S-CSCF 918 then sends the SIP MESSAGE to mobile device 912. If the delivery attempt fails, then FDA system 934 may forward the SMS message to application server 921 for store-and-forward processing.
In
Based on the order that the SMS messages are queued, store-and-forward system 936 attempts to deliver the prior SMS message by sending the SIP MESSAGE to S-CSCF 918. S-CSCF 918 then sends the SIP MESSAGE to mobile device 912. At a later time, store-and-forward system 936 attempts to deliver the received SMS message by sending another SIP MESSAGE to mobile device 912 (through S-CSCF 918 and RAN 916 in
Any of the various elements shown in the figures or described herein may be implemented as hardware, software, firmware, or some combination of these. For example, an element may be implemented as dedicated hardware. Dedicated hardware elements may be referred to as “processors”, “controllers”, or some similar terminology. When provided by a processor, the functions may be provided by a single dedicated processor, by a single shared processor, or by a plurality of individual processors, some of which may be shared. Moreover, explicit use of the term “processor” or “controller” should not be construed to refer exclusively to hardware capable of executing software, and may implicitly include, without limitation, digital signal processor (DSP) hardware, a network processor, application specific integrated circuit (ASIC) or other circuitry, field programmable gate array (FPGA), read only memory (ROM) for storing software, random access memory (RAM), non volatile storage, logic, or some other physical hardware component or module.
Also, an element may be implemented as instructions executable by a processor or a computer to perform the functions of the element. Some examples of instructions are software, program code, and firmware. The instructions are operational when executed by the processor to direct the processor to perform the functions of the element. The instructions may be stored on storage devices that are readable by the processor. Some examples of the storage devices are digital or solid-state memories, magnetic storage media such as a magnetic disks and magnetic tapes, hard drives, or optically readable digital data storage media.
Although specific embodiments were described herein, the scope of the invention is not limited to those specific embodiments. The scope of the invention is defined by the following claims and any equivalents thereof.