WO2012102831A1 - Method to establish a message exchange between mobile devices over a data connection - Google Patents
Method to establish a message exchange between mobile devices over a data connection Download PDFInfo
- Publication number
- WO2012102831A1 WO2012102831A1 PCT/US2012/000046 US2012000046W WO2012102831A1 WO 2012102831 A1 WO2012102831 A1 WO 2012102831A1 US 2012000046 W US2012000046 W US 2012000046W WO 2012102831 A1 WO2012102831 A1 WO 2012102831A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- messaging
- message
- data connection
- user
- server
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000004891 communication Methods 0.000 claims abstract description 42
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 230000015654 memory Effects 0.000 description 20
- 230000001413 cellular effect Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 1
- VJYFKVYYMZPMAB-UHFFFAOYSA-N ethoprophos Chemical compound CCCSP(=O)(OCC)SCCC VJYFKVYYMZPMAB-UHFFFAOYSA-N 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229920002239 polyacrylonitrile Polymers 0.000 description 1
- 201000006292 polyarteritis nodosa Diseases 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000060 site-specific infrared dichroism spectroscopy Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/224—Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/54—Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/20—Services signaling; Auxiliary data signalling, i.e. transmitting data via a non-traffic channel
- H04W4/21—Services signaling; Auxiliary data signalling, i.e. transmitting data via a non-traffic channel for social networking applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W68/00—User notification, e.g. alerting and paging, for incoming communication, change of service or the like
Definitions
- Instant messaging requires the use of a client program that hooks up an instant messaging service and differs from e-mail in that conversations are then able to happen in real time.
- Most services offer a presence information feature, indicating whether people on one's list of contacts are currently online and available to chat. This may be called a contact list.
- a contact list indicating whether people on one's list of contacts are currently online and available to chat. This may be called a contact list.
- each letter appeared as it was typed, and when letters were deleted to correct typos this was also seen in real time. This made it more like a telephone conversation than exchanging letters.
- the other party in the conversation generally only sees each line of text right after a new line is started.
- Most instant messaging applications also include the ability to set a status message, roughly analogous to the message on a telephone answering machine.
- FIG. 1 depicts an example of a system for a messaging application over data connection that works between mobile phones.
- FIG. 2 depicts a flowchart of an example of a method for messaging over a data connection with a mobile device that is effectively offline.
- FIG: 3 depicts a drawing of an example of a system for initiating messaging over a data connection with an effectively offline client.
- FIG. 4 depicts a drawing of an example of a system for consenting to messaging over a data connection by an effectively offline client.
- FIG. 5 depicts a drawing of an example of a system for providing messages over a data connection to clients.
- FIG. 6 depicts a flowchart of an example of a method of initiating a messaging over a data connection session with an effectively offline messaging target.
- FIG. 7 depicts a flowchart of an example of a method of responding to a messaging wakeup message to engage in a messaging over a data connection session.
- FIG. 1 depicts an example of a system for a messaging application over data connection that works between mobile phones.
- the system 100 includes a network 102, a messaging application server 104, a carrier network 106, a carrier network 108, a messaging device 1 10, a messaging device 1 12, and.
- the network 102 can include a networked system that includes several computer systems coupled together, such as a local area network (LAN), the Internet, a packet switched telephone network (PSTN), or some other networked system.
- LAN local area network
- PSTN packet switched telephone network
- Internet refers to a network of networks that uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web).
- HTTP hypertext transfer protocol
- HTML hypertext markup language
- a web server which is one type of content server, is typically at least one computer system which operates as a server computer system and is configured to operate with the protocols of the World Wide Web and is coupled to the Internet. Applicable known or convenient physical connections of the Internet and the protocols and communication procedures of the Internet and the web are and/or can be used. However, components that are outside of the control of the system 100 can be considered sources of data received in an applicable known or convenient manner.
- the messaging application server 104 is coupled to the network 102.
- the messaging application server 104 can detect a first message from a first user to a second user. If the second user is capable of receiving the first message, then the messaging application server 104 provides the first message to the second user.
- the second user may not have an active data connection because, for example, the second user has no WiFi signal, is abroad with data roaming disabled because it is expensive, are outside 3G or GPRS coverage, etc.
- the messaging application server 104 proposes to the first user to send a wakeup SMS message.
- the first user can then compose the wakeup SMS message, including and codes/commands that make the message a service SMS message.
- the service SMS message can include some or all of a first message that was not received by the second user due to the absence of an active data connection.
- the first user can send the service SMS to the second user.
- the first user can send the SMS message through a connection between the first user's carrier network to the second user's carrier network, and to the second user.
- the messaging application server 104 can receive the service SMS message from the first user's carrier network and provide it to the second user's carrier network.
- the service SMS serves as notification that there is a message waiting for the second user at the messaging application server 104, and the second user can open the messaging application in response thereto.
- the messaging application is opened automatically.
- the messaging application server 104 when the second user does not have an active data connection, the messaging application server 104 composes a wakeup SMS message, including and codes/commands that make the message a service SMS message.
- the service SMS message can include some or all of a first message that was not received by the second user due to the absence of an active data connection.
- the messaging application server 104 sends the composed service SMS message to the first user.
- the first user can send the service SMS to the second user.
- the first user can send the SMS message through a connection between the first user's carrier network to the second user's carrier network, and to the second user.
- the messaging application server 104 can send the service SMS message to the second user's carrier network on behalf of the first user.
- the messaging application server 104 may or may not send the composed SMS message to the first user (e.g., the messaging application server 104 may send the service SMS message without the first user ever having composed or received the service SMS message).
- the messaging application server 104 can be implemented as a clientless platform, as a server that is intended to work with application-embedded clients, or in some other applicable manner.
- the messaging application server 104 can be implemented in a computer system.
- a computer system will usually include a processor, memory, non-volatile storage, and an interface. Peripheral devices can also be considered part of the computer system.
- a typical computer system will include at least a processor, memory, and a device (e.g., a bus) coupling the memory to the processor.
- the processor can include, for example, a general-purpose central processing unit (CPU), such as a microprocessor, or a special-purpose processor, such as a microcontroller.
- CPU general-purpose central processing unit
- microcontroller such as a microcontroller
- the memory can include, by way of example but not limitation, random access memory (RAM), such as dynamic RAM (DRAM) and static RAM (SRAM).
- RAM random access memory
- DRAM dynamic RAM
- SRAM static RAM
- the memory can be local, remote, or distributed.
- computer-readable storage medium is intended to include physical media, such as memory.
- the bus can couple the processor to non-volatile storage.
- the non-volatile storage is often a magnetic floppy or hard disk, a magnetic-optical disk, an optical disk, a read-only memory (ROM), such as a CD-ROM, EPROM, or EEPROM, a magnetic or optical card, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory during execution of software on the computer system.
- the non-volatile storage can be local, remote, or distributed. The non-volatile storage is optional because systems can be created with all applicable data available in memory.
- a software program is assumed to be stored at any known or convenient location (from nonvolatile storage to hardware registers) when the software program is referred to as “implemented in a computer-readable storage medium.”
- a processor is considered to be “configured to execute a program” when at least one value associated with the program is stored in a register readable by the processor.
- the bus can also couple the processor to one or more interfaces.
- the interface can include one or more of a modem or network interface. It will be appreciated that a modem or network interface can be considered to be part of the computer system.
- the interface can include an analog modem, isdn modem, cable modem, token ring interface, satellite transmission interface (e.g. "direct PC"), or other interfaces for coupling a computer system to other computer systems.
- the interface can include one or more input and/or output (I/O) devices.
- the I/O devices can include, by way of example but not limitation, a keyboard, a mouse or other pointing device, disk drives, printers, a scanner, and other I/O devices, including a display device.
- the display device can include, by way of example but not limitation, a cathode ray tube (CRT), liquid crystal display (LCD), or some other applicable known or convenient display device.
- the computer system can be controlled by operating system software that includes a file management system, such as a disk operating system.
- a file management system such as a disk operating system.
- operating system software with associated file management system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Washington, and their associated file management systems.
- Windows® from Microsoft Corporation of Redmond, Washington
- Another example of operating system software with its associated file management system software is the Linux operating system and its associated file management system.
- the file management system is typically stored in the non-volatile storage and causes the processor to execute the various acts required by the operating system to input and output data and to store data in the memory, including storing files on the non-volatile storage.
- the carrier network 106 is coupled through a data connection to the network 102.
- the carrier network 106 can be controlled by a common carrier (or local exchange carrier) or a mobile carrier.
- the carrier network 106 includes a wireless network.
- Wireless networks will typically include an internetworking unit (IWU) that interconnects wireless devices on the relevant one of the wireless networks with another network, such as a wired LAN.
- the IWU is sometimes referred to as a wireless access point (WAP).
- WAP wireless access point
- a WAP is also defined as a station.
- a station can be a non-WAP station or a WAP station.
- the wireless networks can be implemented using any applicable technology, which can differ by network type or in other ways.
- the wireless networks can be of any appropriate size (e.g., metropolitan area network (MAN), personal area network (PAN), etc.).
- Broadband wireless MANs may or may not be compliant with IEEE 802.16, which is incorporated by reference.
- Wireless PANs may or may not be compliant with IEEE 802.15, which is incorporated by reference.
- the wireless networks can be identifiable by network type (e.g., 2G, 3G, WiFi), service provider, WAP/base station identifier (e.g., WiFi SSID, base station and sector ID), geographic location, or other identification criteria.
- the carrier network 108 is coupled to the network 102.
- the carrier network 108 may or may not be under the control of the same entity as the carrier network 106. Indeed, the techniques described in this paper would work even if the carrier network 106 and the carrier network 108 were the same network.
- the carrier networks 106, 108 may or may not be coupled together via an intermediate network.
- the intermediate network can include practically any type of communications network, such as, by way of example but not limitation, the Internet, a public switched telephone network (PSTN), or an infrastructure network (e.g., private LAN).
- Internet refers to a network of networks which uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web).
- HTTP hypertext transfer protocol
- HTML hypertext markup language
- the messaging device 1 sends a message from a first user (presumably but not necessarily of the messaging device 110) to a second user (presumably but not necessarily of the messaging device 1 12).
- the messaging device 110 can be implemented on a mobile device.
- a messaging application is installed on the messaging device 110.
- the messaging device 1 10 will at a minimum include a processor, memory (though the memory could be implemented in the processor), a radio, and a radio interface (though the radio interface could be implemented as "part of the radio).
- at least one input device and at least one output device, including input and output interfaces, will be implemented in the messaging device 110, if applicable.
- the messaging device 1 10 can be implemented as a station.
- a station as used herein, may be referred to as a device with a media access control (MAC) address and a physical layer (PHY) interface to the wireless medium that comply with, e.g., the IEEE 802.1 1 standard.
- MAC media access control
- PHY physical layer
- a station can be described as "IEEE 802.1 1 -compliant" when compliance with the IEEE 802.11 standard is intended to be explicit.
- IEEE 802.1 1 (I.e, a device acts as described in at least a portion of the IEEE 802.1 1 standard.)
- IEEE 802.1 1TM-2007 (Revision of IEEE Std 802.1 1-1999 ) is incorporated by reference.
- IEEE 802.1 1 k-2008, IEEE 802.11 n-2009, IEEE 802.1 p-2010, IEEE 802.1 1 r-2008, IEEE 802.1 1w- 2009, and IEEE 802.1 1y-2008 are also incorporated by reference.
- the messaging device 1 10 may comply with some other standard or no standard at all, and may have different interfaces to a wireless or other medium. It should be noted that not all standards refer to wireless devices as "stations,” but where the term is used in this paper, it should be understood that an analogous unit will be present on all applicable wireless networks. Thus, use of the term “station” should not be construed as limiting the scope of an embodiment that describes wireless devices as stations to a standard that explicitly uses the term, unless such a limitation is appropriate in the context of the discussion.
- the messaging device 1 receives a message from a first user (presumably but not necessarily of the messaging device 1 10) to a second user (presumably but not necessarily of the messaging device 1 12).
- the messaging device 1 12 can be implemented on a mobile device as was described above with reference to the messaging device 1 10.
- an engine includes a dedicated or shared processor and, typically, firmware or software modules that are executed by the processor. Engines will be implemented on each of the components described in the example of FIG. 1 and in other figures to accomplish the described functionality, including networks, which require engines to carry out the network functionality. Depending upon implementation-specific or other considerations, an engine can be centralized or its functionality distributed. An engine can include special purpose hardware, firmware, or software embodied in a computer-readable medium for execution by the processor. As used in this paper, a computer-readable medium is intended to include all mediums that are statutory (e.g., in the United States, under 35 U.S.C.
- Known statutory computer-readable mediums include hardware (e.g., registers, random access memory (RAM), non-volatile (NV) storage, to name a few), but may or may not be limited to hardware.
- a datastore includes any organization of data, including tables, comma-separated values (CSV) files, traditional databases (e.g., SQL), structured storage (e.g., NoSQL), or other applicable known or convenient organizational formats.
- a datastore can be implemented, for example, as software embodied in a physical computer-readable medium on a general- or specific-purpose machine, in firmware, in hardware, in a combination thereof, or in an applicable known or convenient device or system.
- Datastore-associated components such as database interfaces, can be considered "part of a datastore, part of some other system component, or a combination thereof, though the physical location and other characteristics of datastore-associated components is not critical for an understanding of the techniques described in this paper.
- Datastores can include data structures.
- a data structure is associated with a particular way of storing and organizing data in a computer so that it can be used efficiently within a given context.
- Data structures are generally based on the ability of a computer to fetch and store data at any place in its memory, specified by an address, a bit string that can be itself stored in memory and manipulated by the program.
- Some data structures are based on computing the addresses of data items with arithmetic operations; while other data structures are based on storing addresses of data items within the structure itself.
- Many data structures use both principles, sometimes combined in non-trivial ways.
- the implementation of a data structure usually entails writing a set of procedures that create and manipulate instances of that structure.
- the messaging device 1 10 sends a first message of a first user via the messaging application server 104.
- the first message passes over a mobile data connection 114 (e.g., GPRS-, 3G-, HSDPA-compliant, or compliant with some other mobile telephony communications protocol) or a cellular connection 1 16 (e.g., GSM) for voice and SMS to the carrier network 106.
- the carrier network 106 provides the message over a data connection 120 to the network 102, on which the messaging application server 104 resides. If the messaging device 1 12 has an active data connection, the messaging device 1 10 can send the first message to the messaging device in the usual manner. Alternatives are possible.
- the messaging device or the messaging applications server 104 can send the message or a notification that a message is available through the carrier network 108 to the messaging device 1 12 via the active data connection.
- the first message (or subsequent messages) could be sent via a connection 1 18 between operators of the carrier networks 106, 108 by which SMS messages are sent, or the first message (or subsequent messages) could be sent to the messaging application server 104, and then back down to the messaging device 1 12 through the connection 120 to the carrier network 108.
- the messaging application server 104 may or may not maintain state for the messaging device 112 so that it is aware when the messaging device 1 12 has an active data connection.
- the messaging device 1 10 could be instructed to send a message over the data connection when the messaging device 1 12 has an active data connection or the messaging device 110 could be instructed to generate a service SMS message as described previously otherwise. Some applications enable participants to see whether contacts are online or offline.
- the messaging application server 104 does not maintain (or does not share) state, the messaging device 1 10 could attempt to send a message to the messaging device 112, and only generate a service SMS message if the message cannot be delivered over a data connection.
- the messaging application server 104 prompts the messaging device 1 10 to send the service SMS message, the messaging application server 104 provides a service SMS message for the messaging device 110 to send, the messaging device 1 0 provides a service SMS message for the messaging application server 104 to send on behalf of the messaging device 1 10, the messaging application server 104 generates a service SMS message to send on behalf of the messaging device 110, or the service SMS message is sent to the messaging device 112 in some other way.
- FIG. 2 depicts a flowchart 200 of an example of a method for messaging over a data connection with a mobile device that is effectively offline. This flowchart and other flowcharts are depicted as serially arranged modules. However, modules of the flowcharts can be reordered, or arranged for parallel execution as appropriate.
- the flowchart 200 starts at module 202 with first mobile device initiates a data connection with first mobile operator.
- the first mobile device can open the data connection in a known or convenient manner.
- the data connection can be associated with an applicable known or convenient protocol (or lack thereof) or applicable known or convenient technology.
- the flowchart 200 continues to module 204 with messaging application engine on first mobile device generates wakeup SMS message to send to second mobile device.
- the wakeup SMS message can be designed in such a way as to notify a user of the second mobile device of the message that a user of the first mobile device wants to send over a data connection.
- the manner in which the messaging application engine on the first mobile device determines to generate a wakeup SMS message can include being informed by a messaging application server that the target of the message is "offline,” does not have an applicable data connection, or the like.
- the target can be awakened, it may be desirable to ensure that any communication from the messaging application engine on the first mobile device to a user of the first mobile device makes it clear that the offline target is just sleeping, and can (at least potentially) be awakened.
- the messaging application engine on the first mobile device could become aware that a second mobile device does not have an appropriate data connection after a first message fails in delivery over a data connection.
- the flowchart 200 continues to decision point 206 where it is determined whether a user of the first mobile device approves that the wakeup SMS message be send to the second mobile device. If it is determined that the user of the first mobile device does not approve the wakeup SMS message be sent to the second mobile device (206-N), the flowchart 200 ends. If on the other hand it is determined that the user of the first mobile device approves the wakeup SMS message be sent to the second mobile device (206-Y), the flowchart continues to module 208.
- the approval can be obtained by, for example, the messaging application engine prompting a user of the first mobile device to respond appropriately to a query as to whether to send the wakeup SMS message.
- the approval can be preset on a target-by-target basis, a subset thereof, or for all messaging of the user of the first mobile device; based upon account settings, which may or may not vary depending upon what kind of account a user has; based upon the account settings of a user of the second mobile device; etc.
- the flowchart 200 continues to module 208 with message transmission engine sends the wakeup SMS message over cellular connection to second mobile device.
- the message transmission engine can include a radio and other applicable components that facilitate sending of a message over an appropriate channel from the first mobile device to a network (typically, a wireless network). The message is then carried over the applicable communication channel to the destination.
- the user of the second mobile device will view the message, which will at least in part be displayed on an output device or speaker of the second mobile device.
- this paper treats the second mobile device as the "destination" of a message that the message may actually be held at a server or other location until the message is uploaded by or downloaded to the second mobile device.
- the flowchart 200 continues to module 210 with message receive engine on second mobile device receives wakeup SMS message from first mobile device.
- the message receive engine can include a radio and other applicable components that facilitate receiving a message over an appropriate channel.
- the second user can receive the wakeup SMS message without having to first initiate an applicable data connection.
- the flowchart 200 continues to decision point 212 where it is determined whether a user of the second mobile device consents to wakeup by, at least in part, opening a data connection. If it is determined the user of the second mobile device does not consent to wake up (212-N), the flowchart 200 ends. If on the other hand it is determined the user of the second mobile device consents to wake up (212-Y), the flowchart 200 continues to module 214. Consent can be indicated by, for example, the user of the second mobile device clicking on a link, button, or other stimulus detector that indicates the user wishes to open a data connection to initiate messaging.
- the precise mechanism by which the stimulus detector is implemented can vary depending upon the communication channel used to send the wakeup SMS message (SMS is an acronym that covers more than one technology under its umbrella) or embodiment- or configuration-specific details.
- SMS is an acronym that covers more than one technology under its umbrella
- the number of options that the user of the second device has can also vary. For example, it may be desirable to consent to wake up for a message then immediately shut down the data connection (due to, e.g., high data roaming charges when abroad).
- the messaging application engine on the second mobile device could enable the user of the second mobile device to seamlessly respond to a wakeup SMS message using some other communication channel, such as email.
- the flowchart 200 continues to module 214 with second mobile device initiates data connection with second mobile operator. For the sake of this example, it is assumed that the data connection initiated is suitable for messaging using a service that enables messaging over a data connection.
- the flowchart 200 ends at module 216 with second mobile device receives messages over data connection.
- the message received may or may not have been identified in whole or in part in the wakeup SMS message. Even if the content of the message was included in the wake up SMS message, it may still be desirable to provide the message as an appropriately configured message for the purpose of maintaining a message history and/or to enable the user of the second mobile device to respond or otherwise treat the message as any other message.
- the first mobile device and second mobile device can communicate via messaging service over a data connection for subsequent messages while the data connection remains open. If the data connection is closed, the flowchart 200 can start over at module 202 (if both data connections are closed) or module 204 (if one data connection is closed).
- FIG. 3 depicts a drawing 300 of an example of a system for initiating messaging over a data connection with an effectively offline client.
- the drawing 300 includes a messaging application engine 302, a buddy datastore 304, a message history datastore 306, a messaging wakeup engine 308, an offline communication engine 310, a radio 312, and an offline communication datastore 314.
- the components depicted in the drawing 300 are implemented on a mobile device.
- the messaging application engine 302 is coupled to the buddy datastore 304 and the messaging history 306.
- the messaging application engine 302 facilitates communication in an instant-messaging format over a data connection.
- the buddy datastore 304 includes contacts or friends that can be communicated with in the instant- messaging format.
- the messaging history datastore 306 includes previously sent and/or received messages. Other datastores, such as a profile datastore, can also be implemented, but are not shown.
- the buddy datastore 304 becomes optional because it is not necessary to know the destination of participants in an online chat session.
- the messaging application engine 302 can facilitate communication in more than one messaging service format.
- the various messaging applications that the messaging application engine 302 enables can be integrated in some ways. For example, two different messaging applications could share the message history datastore 306 and be presented in a compatible format to a user.
- the buddy datastore 304 can be a compilation of contact lists or friend lists from various services.
- the messaging wakeup engine 308 is coupled to the messaging application engine 302 and the offline communication engine 310.
- the messaging application engine 302 can trigger the messaging wakeup engine 308 to generate a messaging wake-up message for the target.
- the determination as to whether a messaging target is effectively offline can be made by failing in a message delivery attempt, pinging, receiving such information from a messaging application server (not shown), or in some other applicable way.
- a messaging target is effectively offline when it is determined that the messaging target does not have an applicable data connection enabling use of a messaging service associated with the messaging application engine 302.
- the messaging application engine 302 may or may not be able to determine whether a messaging target is unreachable (completely offline).
- the offline communication engine 310 is coupled to the radio 312 and the offline communication datastore 314.
- the messaging wakeup message received from the messaging wake-up engine 308 should have a format that is appropriate for the communication channel over which the messaging wakeup message will be sent.
- the offline communication engine 310 includes an email application engine
- the messaging wake-up message can be generated in a format that is appropriate for email (either as an email message itself or as an attachment to an email message).
- the offline communication engine 310 can store the messaging wakeup message in the offline communication datastore 314 in the same way it stores other applicable messages (e.g., in the sent folder of an email application datastore).
- the messaging wake-up message will typically be encapsulated for transmission by the radio 312 and further encapsulated, de-encapsulated, or re-encapsulated, as appropriate, as it is conveyed over the relevant networks to its destination.
- a messaging target user
- the user can elect to open an applicable data connection.
- consenting to open a data connection automatically results in a message the messaging application engine 302 sent prior to or as part of the messaging wake-up message being provided to the consenting user.
- FIG. 4 depicts a drawing 400 of an example of a system for consenting to messaging by an effectively offline client.
- the drawing 400 includes a messaging application engine 402, a buddy datastore 404, a message history datastore 406, a messaging wakeup engine 408, an offline communication engine 410, a radio 412, and an offline communication datastore 414.
- the components depicted in the drawing 400 are implemented on a mobile device.
- the example of FIG. 4 is quite similar to the example of FIG. 3. Indeed, in a specific implementation, a single device can have roles reversed such that it requests that an effectively offline device wake up in one instance and can be requested to wake up in another.
- the radio 412 receives an offline communication message, such as a SMS message, which is provided to the offline communication engine 410 and, if applicable, stored in the offline communication datastore 414. If a user of the offline communication engine 410 responds appropriately to a stimulus detector, such as a link or button in the offline communication message, the messaging wakeup engine 408 opens an applicable data connection. Depending upon the implementation, the messaging application engine 401 can immediately receive a message from the messaging participant that sent the messaging wakeup message, which can be stored in the message history datastore 406, if applicable. If the participant is not known, the participant can also be added to the buddy datastore 404.
- an offline communication message such as a SMS message
- FIG. 5 depicts an example of a system 500 for providing instant messages to clients.
- the system 500 includes a network 502, a server 504, and an Instant Messenger (IM) server 506, and an IM network 508.
- the server 504 is coupled to the network at least by way of port 80.
- the two way communication via port 80 is represented in the example of FIG. 5 as an arrow 510.
- the server 504 is coupled to the IM server 506 via one or more other ports, the two way communication via the other ports is represented in the example of FIG. 5 as an arrow 5 2.
- the IM server 506 is coupled to the IM network 508 via any known or convenient mechanism. Indeed, the IM server 506 may be thought of as part of the IM network 508.
- the network 502 couples a plurality of clients 514-1 to 514-N (referred to collectively as clients 514) to the server 504.
- the server 504 includes an event queue 516.
- the network 502 may include by way of example but not limitation LAN, WAN, VLAN, WLAN, Internet, cellular network, phone network, radio network, or some other known or convenient network.
- Internet refers to a network of networks that uses certain protocols, such as TCP/IP, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web).
- HTTP hypertext transfer protocol
- HTML hypertext markup language
- the server 504 may include a multiple servers. Indeed, it may be desirable, depending upon details of a particular implementation, to install several servers to cope with the number of simultaneous users the system 500 supports. It may further be desirable, depending upon details of a particular implementation, for the server 504 to have a high CPU throughput, together with large amounts of RAM, to handle a large number of users. It may further be desirable, depending upon details of a particular implementation, to accomplish resource sharing via thread handling where a pool of threads is shared and used by one or more of the clients 514 for client-server communication and between the server 504 and the IM server 506.
- the server 504 may include one or more of an application server, database server, web server, banners server, and content server, or any combination thereof. To make the most of the techniques described herein, the server 504 should, though is not required to, include at least one application server.
- the other servers can have supporting roles in, by way of example but not limitation, serving static content or advertising (e.g., banners), storing usage data, or fulfilling some other known or convenient function.
- the server 504 may act as a proxy server between the clients 514 and the IM server 506.
- the server 504 receives communications from the clients 514 on http port 80, and responds to the clients 514 on http port 80. Communications from the clients 514 that are bound for the IM network 508, however, must also come through http port 80 to the server 504, and are then forwarded to the IM server 506.
- the server 504 acts as a carrier of the data from users to the IM network 508 using a mechanism that controls and manages the data (e.g., text messages, display images, emoticons, audio/video streams, etc.) sent between one of the clients 514 and the server 504, and vice versa.
- the IM server 506 may be any known or convenient IM server that is compatible with IM. Events, messages, or other appropriate data from the IM server 506 are collected in the event queue 516 of the server 504. The events may be collected in association with a variety of protocols including by way of example but not limitation port 1863, port 5050, port 5222, port 5190, etc.
- the IM network 508 may include one or a combination of networks selected from MSN Messenger, Yahoo! Messenger, AIM AOL, ICQ, QQ, Jabber, Google Talk, IRC, or some other known or convenient IM network.
- the clients 514 may include any known or convenient device, including by way of example but not limitation, a Web browser, mobile client, PDA, game console, TV box, native application, etc.
- the clients poll the server 504 for events.
- the events can be removed from the event queue 516 and translated into text, JavaScript, XML, or some other known or convenient format that one or more of the clients 514 need or expect in order to process data associated with the event.
- the clients 514 send data to the server 504.
- the data which may include commands, is processed and translated into corresponding data that will be sent to the appropriate IM network.
- the appropriate IM network may be determinable based upon the protocol encoded in a message.
- Messages or actions from the clients 514 are collected over network protocols such as, by way of example but not limitation, HTTP or plain socket connections.
- the messages or actions are transformed to an appropriate protocol format to be sent over a compliant port from the clients 514 to the server 504, with the IM protocol on the application side.
- the compliant port is http port 80.
- any port having similar characteristics to those of a typical port 80 could be used.
- AJAX Asynchronous JavaScript And XML
- clients 514 can execute actions and poll for messages or events using only JavaScript.
- the method is based on using an XMLHttpRequest object to make HTTP requests to the server 504.
- the server 504 may reply with messages taken from the queue of the corresponding session in XML (or another) format that are parsed and displayed according to the message content.
- the browser when accessing the server 504 the browser typically uses hidden HTML frames to update information on visible frames.
- the visible frames display appropriate information while the hidden frames are reloaded in short periods of time.
- the browser identifies the current messaging session and checks if new events or messages associated with the session are in the event queue 516.
- the browser makes use of, for example, JavaScript code to update the visible frames and windows with new messages or events keeping the information up to date in the screen. In this way, automatic refreshing can take place in a hidden frame.
- certain of the clients 514 with browsers may not make use of refreshes.
- a form of updating the screen without using a refresh technique is to keep one single HTTP socket request alive for the whole period of a messaging session without actually closing the socket connection.
- information is initially loaded and displayed in one single visible frame.
- JavaScript code can be injected into the HTML document through the same HTTP socket kept alive and managed by the server 504.
- the browser can interpret the JavaScript code injected and the corresponding parts of the HTML document and windows will be updated.
- certain of the clients 514 with browsers may make use of manual refreshes.
- Some relatively unsophisticated browsers such as WAP and xHTML browsers often available on mobile phones, do not support hidden frames and/or JavaScript (and others may be configured such that they do not support hidden frames and/or JavaScript).
- the information displayed has to be updated manually by the user. Manual updating enables any mobile phone, PDA, TV Set or any device with a browser to connect to the server 504 and use the messaging platforms made available by the server 504 assuring the communication between the clients 514 and the IM server 506.
- Message history can be stored by most IM clients on a local computer. For alternative web and mobile-based clients local storage may not be possible.
- the server 504 may have the capability to store message history from IM conversations done via one or more of the clients 514. The message history can be accessed and searched at any time via the server 504 by one or more of the clients 514
- FIG. 6 depicts a flowchart 600 of an example of a method of initiating a messaging over a data connection session with an effectively offline messaging target.
- the flowchart 600 starts at module 602 with first mobile device initiates data connection with first mobile operator. In this way, the first mobile device establishes a data connection appropriate for messaging.
- the flowchart 600 continues to module 604 with determine messaging target is effectively offline.
- the messaging target can indicate status to a messaging server (or, alternatively perhaps directly to the first mobile device). If the first mobile device is aware of the status, the first mobile device knows when the messaging target is effectively offline. Whether the messaging target is effectively offline can also be determined by failing an attempted message delivery or being informed of the messaging target's status by an application server that can make such a determination. Presumably, the first mobile device could also conceivably assume that a messaging target is effectively offline after not messaging for some time or in accordance with an algorithm. An application server can propose to a user to send a messaging wakeup message when the application server determines that the messaging target is effectively online.
- the flowchart 600 continues to module 606 with messaging application engine generates messaging wakeup message.
- An agent of the user can compose a messaging service message on the user's mobile device, which includes an address of the messaging target, none/some/all of the intended message, codes/commands that make the distinguish the messaging service message from a "normal message.”
- a messaging application than then ask the user to send the specially composed SMS message.
- the messaging wakeup message will presumably have a format that varies from the messaging format with which the messaging application engine is associated (because the messaging target is effectively offline).
- the messaging wakeup message format can be explicit, can be a changeable default, or can be freely entered by a user, perhaps in combination with a relevant engine that is capable of handling the offline communication.
- the flowchart 600 continues to module 608 with send messaging wakeup message via an offline communication channel.
- the offline communication channel is SMS sent over a cellular connection.
- other channels are possible, such as email or voicemail, where a user of the first mobile device records (or uses a stored) message to encourage a messaging target to wake up.
- the flowchart 600 continues to module 610 with begin messaging with messaging target when messaging target comes online.
- the messaging target can respond to the messaging wakeup message by selecting an appropriate stimulus detector or responding with a keypad stroke or responding with voice.
- the mechanism by which the messaging target chooses to come online is not critical to an understanding of the teachings described in this paper.
- FIG. 7 depicts a flowchart 700 of an example of a method of responding to a messaging wakeup message to engage in a messaging over a data connection session.
- the flowchart 700 starts at module 702 with second mobile device receives messaging wakeup message on offline channel.
- the flowchart 700 continues to module 704 with offline messaging engine displays messaging wakeup message.
- the messaging wakeup message can be displayed as a SMS message.
- the offline messaging engine can include, for example, a web browser, which can be used to enable access to an online email service.
- the fact that an email service can be online should not be construed to mean email is sent via other than an offline communication channel.
- the phrase "offline communication channel" is intended to mean a channel by which messages can be sent over other than a data connection.
- the flowchart 700 continues to module 706 with messaging application engine receives consent to start messaging.
- a user can give consent by triggering an appropriate stimulus detector (e.g., clicking a button).
- the flowchart 700 continues to module 708 with second mobile device opens data connection with second mobile operator.
- the second mobile operator (of the messaging target) may or may not be the same as the first mobile operator (of the sender of the messaging wakeup message).
- the flowchart 700 continues to module 710 with begin messaging over data connection with sender of messaging wakeup message.
- a messaging application works between . mobile phones.
- An application server can propose to a user to send a messaging wakeup message.
- a service message is generated at the user's phone and a messaging application asks the user to send the service message to a messaging target.
- the messaging target is thereby notified that an instant message is waiting in a messaging application.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
A technique for notifying an effectively offline messaging target that a messaging participant wishes to establish a messaging session with the messaging target involves sending a messaging wakeup message on an offline communication channel. Responsive to the messaging wakeup message, the messaging target can open an applicable data channel with a wireless operator. The sender of the messaging wakeup message and the recipient thereof can then engage in a messaging over a data connection session with one another.
Description
METHOD TO ESTABLISH A MESSAGE EXCHANGE BETWEEN MOBILE DEVICES
OVER A DATA CONNECTION
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority to U.S. Provisional Patent Applications 61 /436,961 filed January 27, 201 1 , which is incorporated by reference.
BACKGROUND
[0002] Instant messaging requires the use of a client program that hooks up an instant messaging service and differs from e-mail in that conversations are then able to happen in real time. Most services offer a presence information feature, indicating whether people on one's list of contacts are currently online and available to chat. This may be called a contact list. In early instant messaging programs, each letter appeared as it was typed, and when letters were deleted to correct typos this was also seen in real time. This made it more like a telephone conversation than exchanging letters. In modern instant messaging programs, the other party in the conversation generally only sees each line of text right after a new line is started. Most instant messaging applications also include the ability to set a status message, roughly analogous to the message on a telephone answering machine.
[0003] Many applications (e.g., Whatsapp, Pingchat, Viber, Skype for iPhone, etc.) exist for messaging between mobile phones over a data connection (e.g. , WiFi, mobile data, etc.). A problem is that users of these applications currently face is that they do not receive messages (or notifications of messages) when they, for some reason, do not have a data connection (e.g. , no WiFi signal, abroad with data roaming off to avoid high data charges, outside 3G or GPRS coverage, etc.). This results in the utility and reliability of the applications that are meant for messaging over data connection is lower than the utility and reliability of SMS messaging, because SMS messages arrive when a phone is in one of the situations described above by way of example (provided that the phone has a cellular connection).
[0004] The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent upon a reading of the specification and a study of the drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0005] FIG. 1 depicts an example of a system for a messaging application over data connection that works between mobile phones.
[0006] FIG. 2 depicts a flowchart of an example of a method for messaging over a data connection with a mobile device that is effectively offline.
[0007] FIG: 3 depicts a drawing of an example of a system for initiating messaging over a data connection with an effectively offline client.
[0008] FIG. 4 depicts a drawing of an example of a system for consenting to messaging over a data connection by an effectively offline client.
[0009] FIG. 5 depicts a drawing of an example of a system for providing messages over a data connection to clients.
[0010] FIG. 6 depicts a flowchart of an example of a method of initiating a messaging over a data connection session with an effectively offline messaging target.
[0011] FIG. 7 depicts a flowchart of an example of a method of responding to a messaging wakeup message to engage in a messaging over a data connection session.
DETAILED DESCRIPTION
[0012] In the following description, several specific details are presented to provide a thorough understanding. One skilled in the relevant art will recognize, however, that the concepts and techniques disclosed herein can be practiced without one or more of the specific details, or in combination with other components, etc. In other instances, well-known implementations or operations are not shown or described in detail to avoid obscuring aspects of various examples disclosed herein.
[0013] FIG. 1 depicts an example of a system for a messaging application over data connection that works between mobile phones. The system 100 includes a network 102, a messaging application server 104, a carrier network 106, a carrier network 108, a messaging device 1 10, a messaging device 1 12, and.
[0014] In the example of FIG. 1 , the network 102 can include a networked system that includes several computer systems coupled together, such as a local area network (LAN), the Internet, a packet switched telephone network (PSTN), or some other networked system. The term "Internet" as used in this paper refers to a network of networks that uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web). Content is often provided by content servers, which are referred to as being "on" the Internet. A web server, which is one type of content server, is typically at least one computer system which operates as a server computer system and is configured to operate with the protocols of the World Wide Web and is coupled to the Internet. Applicable known or convenient physical connections of the Internet and the protocols and communication procedures of the Internet and the web are and/or can be used. However, components that are outside of the control of the system 100 can be considered sources of data received in an applicable known or convenient manner.
[0015] In the example of FIG. 1 , the messaging application server 104 is coupled to the network 102. The messaging application server 104 can detect a first message from a first user to a second user. If the second user is capable of receiving the first message, then the messaging application server 104 provides the first message to the second user. In some cases, the second user may not have an active data connection because, for example, the second user has no WiFi signal, is abroad with data roaming disabled because it is expensive, are outside 3G or GPRS coverage, etc.
[0016] In a first embodiment, when the second user does not have an active data connection, the messaging application server 104 proposes to the first user to send a wakeup
SMS message. The first user can then compose the wakeup SMS message, including and codes/commands that make the message a service SMS message. In a specific implementation, the service SMS message can include some or all of a first message that was not received by the second user due to the absence of an active data connection. After the service SMS message is generated, the first user can send the service SMS to the second user. For example, the first user can send the SMS message through a connection between the first user's carrier network to the second user's carrier network, and to the second user. Alternatively, the messaging application server 104 can receive the service SMS message from the first user's carrier network and provide it to the second user's carrier network. When the second user receives the service SMS, the service SMS serves as notification that there is a message waiting for the second user at the messaging application server 104, and the second user can open the messaging application in response thereto. In a specific implementation, when the second user approves, the messaging application is opened automatically.
[0017] In a second embodiment, when the second user does not have an active data connection, the messaging application server 104 composes a wakeup SMS message, including and codes/commands that make the message a service SMS message. In a specific implementation, the service SMS message can include some or all of a first message that was not received by the second user due to the absence of an active data connection. The messaging application server 104 sends the composed service SMS message to the first user. After the service SMS message has been provided to the first user, the first user can send the service SMS to the second user. For example, the first user can send the SMS message through a connection between the first user's carrier network to the second user's carrier network, and to the second user. Alternatively, the messaging application server 104 can send the service SMS message to the second user's carrier network on behalf of the first user. In this alternative, the messaging application server 104 may or may not send the composed SMS message to the first user (e.g., the messaging application server 104 may send the service SMS message without the first user ever having composed or received the service SMS message).
[0018] The messaging application server 104 can be implemented as a clientless platform, as a server that is intended to work with application-embedded clients, or in some other applicable manner. The messaging application server 104 can be implemented in a computer system. A computer system will usually include a processor, memory, non-volatile storage, and an interface. Peripheral devices can also be considered part of the computer system. A typical computer system will include at least a processor, memory, and a device (e.g., a bus) coupling the memory to the processor. The processor can include, for example, a general-purpose central processing unit (CPU), such as a microprocessor, or a special-purpose processor, such
as a microcontroller. The memory can include, by way of example but not limitation, random access memory (RAM), such as dynamic RAM (DRAM) and static RAM (SRAM). The memory can be local, remote, or distributed. The term "computer-readable storage medium" is intended to include physical media, such as memory.
[0019] The bus can couple the processor to non-volatile storage. The non-volatile storage is often a magnetic floppy or hard disk, a magnetic-optical disk, an optical disk, a read-only memory (ROM), such as a CD-ROM, EPROM, or EEPROM, a magnetic or optical card, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory during execution of software on the computer system. The non-volatile storage can be local, remote, or distributed. The non-volatile storage is optional because systems can be created with all applicable data available in memory.
[0020] Software is typically stored in the non-volatile storage. Indeed, for large programs, it may not even be possible to store the entire program in memory. Nevertheless, it should be understood that for software to run, if necessary, it is moved to a computer-readable location appropriate for processing, and for illustrative purposes, that location is referred to as the memory in this paper. Even when software is moved to the memory for execution, the processor will typically make use of hardware registers to store values associated with the software, and local cache that, ideally, serves to speed up execution. As used herein, a software program is assumed to be stored at any known or convenient location (from nonvolatile storage to hardware registers) when the software program is referred to as "implemented in a computer-readable storage medium." A processor is considered to be "configured to execute a program" when at least one value associated with the program is stored in a register readable by the processor.
[0021] The bus can also couple the processor to one or more interfaces. The interface can include one or more of a modem or network interface. It will be appreciated that a modem or network interface can be considered to be part of the computer system. The interface can include an analog modem, isdn modem, cable modem, token ring interface, satellite transmission interface (e.g. "direct PC"), or other interfaces for coupling a computer system to other computer systems. The interface can include one or more input and/or output (I/O) devices. The I/O devices can include, by way of example but not limitation, a keyboard, a mouse or other pointing device, disk drives, printers, a scanner, and other I/O devices, including a display device. The display device can include, by way of example but not limitation, a cathode ray tube (CRT), liquid crystal display (LCD), or some other applicable known or convenient display device.
[0022] In one example of operation, the computer system can be controlled by operating system software that includes a file management system, such as a disk operating system. One example of operating system software with associated file management system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Washington, and their associated file management systems. Another example of operating system software with its associated file management system software is the Linux operating system and its associated file management system. The file management system is typically stored in the non-volatile storage and causes the processor to execute the various acts required by the operating system to input and output data and to store data in the memory, including storing files on the non-volatile storage.
[0023] Some portions of the detailed description may be presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
[0024] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as "processing" or "computing" or "calculating" or "determining" or "displaying" or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
[0025] The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs to configure the general purpose systems in a specific manner in accordance with the teachings herein as specifically purposed computer systems, or it may prove convenient to
construct specialized apparatus to perform the methods of some embodiments. The required structure for a variety of these systems will appear from the description below. In addition, the techniques are not described with reference to any particular programming language, and various embodiments may thus be implemented using a variety of programming languages.
[0026] Referring once again to the example of FIG. 1 , the carrier network 106 is coupled through a data connection to the network 102. The carrier network 106 can be controlled by a common carrier (or local exchange carrier) or a mobile carrier. In a specific implementation, the carrier network 106 includes a wireless network. Wireless networks will typically include an internetworking unit (IWU) that interconnects wireless devices on the relevant one of the wireless networks with another network, such as a wired LAN. The IWU is sometimes referred to as a wireless access point (WAP). In the IEEE 802.11 standard, a WAP is also defined as a station. Thus, a station can be a non-WAP station or a WAP station. In a cellular network, the WAP is often referred to as a base station. The wireless networks can be implemented using any applicable technology, which can differ by network type or in other ways. The wireless networks can be of any appropriate size (e.g., metropolitan area network (MAN), personal area network (PAN), etc.). Broadband wireless MANs may or may not be compliant with IEEE 802.16, which is incorporated by reference. Wireless PANs may or may not be compliant with IEEE 802.15, which is incorporated by reference. The wireless networks can be identifiable by network type (e.g., 2G, 3G, WiFi), service provider, WAP/base station identifier (e.g., WiFi SSID, base station and sector ID), geographic location, or other identification criteria.
[0027] In the example of FIG. 1 , the carrier network 108 is coupled to the network 102. The carrier network 108 may or may not be under the control of the same entity as the carrier network 106. Indeed, the techniques described in this paper would work even if the carrier network 106 and the carrier network 108 were the same network. The carrier networks 106, 108 may or may not be coupled together via an intermediate network. The intermediate network can include practically any type of communications network, such as, by way of example but not limitation, the Internet, a public switched telephone network (PSTN), or an infrastructure network (e.g., private LAN). The term "Internet" as used herein refers to a network of networks which uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web).
[0028] In the example of FIG. 1 , the messaging device 1 10, for illustrative purposes, sends a message from a first user (presumably but not necessarily of the messaging device 110) to a second user (presumably but not necessarily of the messaging device 1 12). The messaging device 110 can be implemented on a mobile device. In a specific implementation, a messaging
application is installed on the messaging device 110. The messaging device 1 10 will at a minimum include a processor, memory (though the memory could be implemented in the processor), a radio, and a radio interface (though the radio interface could be implemented as "part of the radio). In order to make the messaging device 1 10 useful in a typical context, at least one input device and at least one output device, including input and output interfaces, will be implemented in the messaging device 110, if applicable.
[0029] The messaging device 1 10 can be implemented as a station. A station, as used herein, may be referred to as a device with a media access control (MAC) address and a physical layer (PHY) interface to the wireless medium that comply with, e.g., the IEEE 802.1 1 standard. A station can be described as "IEEE 802.1 1 -compliant" when compliance with the IEEE 802.11 standard is intended to be explicit. (I.e, a device acts as described in at least a portion of the IEEE 802.1 1 standard.) One of ordinary skill in the relevant art would understand what the IEEE 802.1 1 standard comprises today and that the IEEE 802.11 standard can change over time, and would be expected to apply techniques described in this paper in compliance with future versions of the IEEE 802.1 1 standard if an applicable change is made. IEEE Std 802.1 1™-2007 (Revision of IEEE Std 802.1 1-1999 ) is incorporated by reference. .IEEE 802.1 1 k-2008, IEEE 802.11 n-2009, IEEE 802.1 p-2010, IEEE 802.1 1 r-2008, IEEE 802.1 1w- 2009, and IEEE 802.1 1y-2008 are also incorporated by reference.
[0030] In alternative embodiment, the messaging device 1 10 may comply with some other standard or no standard at all, and may have different interfaces to a wireless or other medium. It should be noted that not all standards refer to wireless devices as "stations," but where the term is used in this paper, it should be understood that an analogous unit will be present on all applicable wireless networks. Thus, use of the term "station" should not be construed as limiting the scope of an embodiment that describes wireless devices as stations to a standard that explicitly uses the term, unless such a limitation is appropriate in the context of the discussion.
[0031] In the example of FIG. 1 , the messaging device 1 12, for illustrative purposes, receives a message from a first user (presumably but not necessarily of the messaging device 1 10) to a second user (presumably but not necessarily of the messaging device 1 12). The messaging device 1 12 can be implemented on a mobile device as was described above with reference to the messaging device 1 10.
[0032] As used in this paper, an engine includes a dedicated or shared processor and, typically, firmware or software modules that are executed by the processor. Engines will be implemented on each of the components described in the example of FIG. 1 and in other figures to accomplish the described functionality, including networks, which require engines to carry out
the network functionality. Depending upon implementation-specific or other considerations, an engine can be centralized or its functionality distributed. An engine can include special purpose hardware, firmware, or software embodied in a computer-readable medium for execution by the processor. As used in this paper, a computer-readable medium is intended to include all mediums that are statutory (e.g., in the United States, under 35 U.S.C. 101 ), and to specifically exclude all mediums that are non-statutory in nature to the extent that the exclusion is necessary for a claim that includes the computer-readable medium to be valid. Known statutory computer-readable mediums include hardware (e.g., registers, random access memory (RAM), non-volatile (NV) storage, to name a few), but may or may not be limited to hardware.
[0033] As used in this paper, a datastore includes any organization of data, including tables, comma-separated values (CSV) files, traditional databases (e.g., SQL), structured storage (e.g., NoSQL), or other applicable known or convenient organizational formats. A datastore can be implemented, for example, as software embodied in a physical computer-readable medium on a general- or specific-purpose machine, in firmware, in hardware, in a combination thereof, or in an applicable known or convenient device or system. Datastore-associated components, such as database interfaces, can be considered "part of a datastore, part of some other system component, or a combination thereof, though the physical location and other characteristics of datastore-associated components is not critical for an understanding of the techniques described in this paper.
[0034] Datastores, can include data structures. As used in this paper, a data structure is associated with a particular way of storing and organizing data in a computer so that it can be used efficiently within a given context. Data structures are generally based on the ability of a computer to fetch and store data at any place in its memory, specified by an address, a bit string that can be itself stored in memory and manipulated by the program. Thus some data structures are based on computing the addresses of data items with arithmetic operations; while other data structures are based on storing addresses of data items within the structure itself. Many data structures use both principles, sometimes combined in non-trivial ways. The implementation of a data structure usually entails writing a set of procedures that create and manipulate instances of that structure.
[0035] In the example of FIG. 1 , in operation, the messaging device 1 10 sends a first message of a first user via the messaging application server 104. The first message passes over a mobile data connection 114 (e.g., GPRS-, 3G-, HSDPA-compliant, or compliant with some other mobile telephony communications protocol) or a cellular connection 1 16 (e.g., GSM) for voice and SMS to the carrier network 106. The carrier network 106 provides the message over a data connection 120 to the network 102, on which the messaging application server 104
resides. If the messaging device 1 12 has an active data connection, the messaging device 1 10 can send the first message to the messaging device in the usual manner. Alternatives are possible. For example, the messaging device or the messaging applications server 104 can send the message or a notification that a message is available through the carrier network 108 to the messaging device 1 12 via the active data connection. As another example, the first message (or subsequent messages) could be sent via a connection 1 18 between operators of the carrier networks 106, 108 by which SMS messages are sent, or the first message (or subsequent messages) could be sent to the messaging application server 104, and then back down to the messaging device 1 12 through the connection 120 to the carrier network 108.
[0036] The messaging application server 104 may or may not maintain state for the messaging device 112 so that it is aware when the messaging device 1 12 has an active data connection. In a specific implementation in which the messaging application server 104 maintains state, the messaging device 1 10 could be instructed to send a message over the data connection when the messaging device 1 12 has an active data connection or the messaging device 110 could be instructed to generate a service SMS message as described previously otherwise. Some applications enable participants to see whether contacts are online or offline. In a specific implementation in which the messaging application server 104 does not maintain (or does not share) state, the messaging device 1 10 could attempt to send a message to the messaging device 112, and only generate a service SMS message if the message cannot be delivered over a data connection. When a message cannot be delivered, depending upon the implementation and/or configuration, the messaging application server 104 prompts the messaging device 1 10 to send the service SMS message, the messaging application server 104 provides a service SMS message for the messaging device 110 to send, the messaging device 1 0 provides a service SMS message for the messaging application server 104 to send on behalf of the messaging device 1 10, the messaging application server 104 generates a service SMS message to send on behalf of the messaging device 110, or the service SMS message is sent to the messaging device 112 in some other way.
[0037] It should be noted that service SMS messages are used in a specific implementation, but that other service messages could be used in other contexts. The importance of the service message is that a first messaging device (using an applicable known or convenient messaging service) can send a service message (or have the service message sent on behalf of the messaging device) to a second messaging device that does not have an active data connection. In this way, the first messaging device can wake up the second messaging device and let the second messaging device know that it has a message. A user of the second messaging device can then access the message if desired.
[0038] FIG. 2 depicts a flowchart 200 of an example of a method for messaging over a data connection with a mobile device that is effectively offline. This flowchart and other flowcharts are depicted as serially arranged modules. However, modules of the flowcharts can be reordered, or arranged for parallel execution as appropriate.
[0039] In the example of FIG. 2, the flowchart 200 starts at module 202 with first mobile device initiates a data connection with first mobile operator. The first mobile device can open the data connection in a known or convenient manner. The data connection can be associated with an applicable known or convenient protocol (or lack thereof) or applicable known or convenient technology.
[0040] In the example of FIG. 2, the flowchart 200 continues to module 204 with messaging application engine on first mobile device generates wakeup SMS message to send to second mobile device. The wakeup SMS message can be designed in such a way as to notify a user of the second mobile device of the message that a user of the first mobile device wants to send over a data connection. The manner in which the messaging application engine on the first mobile device determines to generate a wakeup SMS message can include being informed by a messaging application server that the target of the message is "offline," does not have an applicable data connection, or the like. Because the target can be awakened, it may be desirable to ensure that any communication from the messaging application engine on the first mobile device to a user of the first mobile device makes it clear that the offline target is just sleeping, and can (at least potentially) be awakened. In an alternative, the messaging application engine on the first mobile device could become aware that a second mobile device does not have an appropriate data connection after a first message fails in delivery over a data connection.
[0041] In the example of FIG. 2, the flowchart 200 continues to decision point 206 where it is determined whether a user of the first mobile device approves that the wakeup SMS message be send to the second mobile device. If it is determined that the user of the first mobile device does not approve the wakeup SMS message be sent to the second mobile device (206-N), the flowchart 200 ends. If on the other hand it is determined that the user of the first mobile device approves the wakeup SMS message be sent to the second mobile device (206-Y), the flowchart continues to module 208. The approval can be obtained by, for example, the messaging application engine prompting a user of the first mobile device to respond appropriately to a query as to whether to send the wakeup SMS message. The approval can be preset on a target-by-target basis, a subset thereof, or for all messaging of the user of the first mobile device; based upon account settings, which may or may not vary depending upon what kind of account a user has; based upon the account settings of a user of the second mobile device; etc.
[0042] In the example of FIG. 2, the flowchart 200 continues to module 208 with message transmission engine sends the wakeup SMS message over cellular connection to second mobile device. The message transmission engine can include a radio and other applicable components that facilitate sending of a message over an appropriate channel from the first mobile device to a network (typically, a wireless network). The message is then carried over the applicable communication channel to the destination. In some cases, this could be a website or some other destination that is not the second mobile device. However, it is assumed that the user of the second mobile device will view the message, which will at least in part be displayed on an output device or speaker of the second mobile device. Thus, it should be understood that when this paper treats the second mobile device as the "destination" of a message that the message may actually be held at a server or other location until the message is uploaded by or downloaded to the second mobile device.
[0043] In the example of FIG. 200, the flowchart 200 continues to module 210 with message receive engine on second mobile device receives wakeup SMS message from first mobile device. The message receive engine can include a radio and other applicable components that facilitate receiving a message over an appropriate channel. Advantageously, the second user can receive the wakeup SMS message without having to first initiate an applicable data connection.
[0044] In the example of FIG. 2, the flowchart 200 continues to decision point 212 where it is determined whether a user of the second mobile device consents to wakeup by, at least in part, opening a data connection. If it is determined the user of the second mobile device does not consent to wake up (212-N), the flowchart 200 ends. If on the other hand it is determined the user of the second mobile device consents to wake up (212-Y), the flowchart 200 continues to module 214. Consent can be indicated by, for example, the user of the second mobile device clicking on a link, button, or other stimulus detector that indicates the user wishes to open a data connection to initiate messaging. The precise mechanism by which the stimulus detector is implemented can vary depending upon the communication channel used to send the wakeup SMS message (SMS is an acronym that covers more than one technology under its umbrella) or embodiment- or configuration-specific details. The number of options that the user of the second device has can also vary. For example, it may be desirable to consent to wake up for a message then immediately shut down the data connection (due to, e.g., high data roaming charges when abroad). Alternatively, the messaging application engine on the second mobile device could enable the user of the second mobile device to seamlessly respond to a wakeup SMS message using some other communication channel, such as email.
[0045] In the example of FIG. 2, the flowchart 200 continues to module 214 with second mobile device initiates data connection with second mobile operator. For the sake of this example, it is assumed that the data connection initiated is suitable for messaging using a service that enables messaging over a data connection.
[0046] In the example of FIG. 2, the flowchart 200 ends at module 216 with second mobile device receives messages over data connection. The message received may or may not have been identified in whole or in part in the wakeup SMS message. Even if the content of the message was included in the wake up SMS message, it may still be desirable to provide the message as an appropriately configured message for the purpose of maintaining a message history and/or to enable the user of the second mobile device to respond or otherwise treat the message as any other message. When the flowchart 200 ends, the first mobile device and second mobile device can communicate via messaging service over a data connection for subsequent messages while the data connection remains open. If the data connection is closed, the flowchart 200 can start over at module 202 (if both data connections are closed) or module 204 (if one data connection is closed).
[0047] FIG. 3 depicts a drawing 300 of an example of a system for initiating messaging over a data connection with an effectively offline client. The drawing 300 includes a messaging application engine 302, a buddy datastore 304, a message history datastore 306, a messaging wakeup engine 308, an offline communication engine 310, a radio 312, and an offline communication datastore 314. In an embodiment the components depicted in the drawing 300 are implemented on a mobile device.
[0048] In the example of FIG. 3, the messaging application engine 302 is coupled to the buddy datastore 304 and the messaging history 306. The messaging application engine 302 facilitates communication in an instant-messaging format over a data connection. The buddy datastore 304 includes contacts or friends that can be communicated with in the instant- messaging format. The messaging history datastore 306 includes previously sent and/or received messages. Other datastores, such as a profile datastore, can also be implemented, but are not shown. In an embodiment that enables an "online chat" mode or application, the buddy datastore 304 becomes optional because it is not necessary to know the destination of participants in an online chat session.
[0049] In a specific implementation, the messaging application engine 302 can facilitate communication in more than one messaging service format. Depending upon the implementation, the various messaging applications that the messaging application engine 302 enables can be integrated in some ways. For example, two different messaging applications could share the message history datastore 306 and be presented in a compatible format to a
user. Similarly, the buddy datastore 304 can be a compilation of contact lists or friend lists from various services.
[0050] In the example of FIG. 3, the messaging wakeup engine 308 is coupled to the messaging application engine 302 and the offline communication engine 310. In an implementation in which the messaging application engine 302 is capable of determining whether a messaging target is effectively offline, the messaging application engine 302 can trigger the messaging wakeup engine 308 to generate a messaging wake-up message for the target. The determination as to whether a messaging target is effectively offline can be made by failing in a message delivery attempt, pinging, receiving such information from a messaging application server (not shown), or in some other applicable way. A messaging target is effectively offline when it is determined that the messaging target does not have an applicable data connection enabling use of a messaging service associated with the messaging application engine 302. The messaging application engine 302 may or may not be able to determine whether a messaging target is unreachable (completely offline).
[0051] In the example of FIG. 3, the offline communication engine 310 is coupled to the radio 312 and the offline communication datastore 314. The messaging wakeup message received from the messaging wake-up engine 308 should have a format that is appropriate for the communication channel over which the messaging wakeup message will be sent. For example, if the offline communication engine 310 includes an email application engine, the messaging wake-up message can be generated in a format that is appropriate for email (either as an email message itself or as an attachment to an email message). The offline communication engine 310 can store the messaging wakeup message in the offline communication datastore 314 in the same way it stores other applicable messages (e.g., in the sent folder of an email application datastore).
[0052] The messaging wake-up message will typically be encapsulated for transmission by the radio 312 and further encapsulated, de-encapsulated, or re-encapsulated, as appropriate, as it is conveyed over the relevant networks to its destination. When a messaging target (user) receives the messaging wake-up message, the user can elect to open an applicable data connection. In a specific implementation, consenting to open a data connection automatically results in a message the messaging application engine 302 sent prior to or as part of the messaging wake-up message being provided to the consenting user.
[0053] FIG. 4 depicts a drawing 400 of an example of a system for consenting to messaging by an effectively offline client. The drawing 400 includes a messaging application engine 402, a buddy datastore 404, a message history datastore 406, a messaging wakeup engine 408, an offline communication engine 410, a radio 412, and an offline communication datastore 414. In
an embodiment the components depicted in the drawing 400 are implemented on a mobile device. The example of FIG. 4 is quite similar to the example of FIG. 3. Indeed, in a specific implementation, a single device can have roles reversed such that it requests that an effectively offline device wake up in one instance and can be requested to wake up in another.
[0054] In the example of FIG. 4, the radio 412 receives an offline communication message, such as a SMS message, which is provided to the offline communication engine 410 and, if applicable, stored in the offline communication datastore 414. If a user of the offline communication engine 410 responds appropriately to a stimulus detector, such as a link or button in the offline communication message, the messaging wakeup engine 408 opens an applicable data connection. Depending upon the implementation, the messaging application engine 401 can immediately receive a message from the messaging participant that sent the messaging wakeup message, which can be stored in the message history datastore 406, if applicable. If the participant is not known, the participant can also be added to the buddy datastore 404.
[0055] FIG. 5 depicts an example of a system 500 for providing instant messages to clients. In the example of FIG. 5, the system 500 includes a network 502, a server 504, and an Instant Messenger (IM) server 506, and an IM network 508. The server 504 is coupled to the network at least by way of port 80. The two way communication via port 80 is represented in the example of FIG. 5 as an arrow 510. The server 504 is coupled to the IM server 506 via one or more other ports, the two way communication via the other ports is represented in the example of FIG. 5 as an arrow 5 2. The IM server 506 is coupled to the IM network 508 via any known or convenient mechanism. Indeed, the IM server 506 may be thought of as part of the IM network 508. The network 502 couples a plurality of clients 514-1 to 514-N (referred to collectively as clients 514) to the server 504. In the example of FIG. 5, the server 504 includes an event queue 516.
[0056] The network 502 may include by way of example but not limitation LAN, WAN, VLAN, WLAN, Internet, cellular network, phone network, radio network, or some other known or convenient network. The term "Internet" as used herein refers to a network of networks that uses certain protocols, such as TCP/IP, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web). The physical connections of the Internet and the protocols and communication procedures are well known, but any convenient physical connections or protocols could be used.
[0057] The server 504 may include a multiple servers. Indeed, it may be desirable, depending upon details of a particular implementation, to install several servers to cope with the
number of simultaneous users the system 500 supports. It may further be desirable, depending upon details of a particular implementation, for the server 504 to have a high CPU throughput, together with large amounts of RAM, to handle a large number of users. It may further be desirable, depending upon details of a particular implementation, to accomplish resource sharing via thread handling where a pool of threads is shared and used by one or more of the clients 514 for client-server communication and between the server 504 and the IM server 506.
[0058] The server 504 may include one or more of an application server, database server, web server, banners server, and content server, or any combination thereof. To make the most of the techniques described herein, the server 504 should, though is not required to, include at least one application server. The other servers can have supporting roles in, by way of example but not limitation, serving static content or advertising (e.g., banners), storing usage data, or fulfilling some other known or convenient function.
[0059] The server 504 may act as a proxy server between the clients 514 and the IM server 506. The server 504 receives communications from the clients 514 on http port 80, and responds to the clients 514 on http port 80. Communications from the clients 514 that are bound for the IM network 508, however, must also come through http port 80 to the server 504, and are then forwarded to the IM server 506. In this way, the server 504 acts as a carrier of the data from users to the IM network 508 using a mechanism that controls and manages the data (e.g., text messages, display images, emoticons, audio/video streams, etc.) sent between one of the clients 514 and the server 504, and vice versa.
[0060] The IM server 506 may be any known or convenient IM server that is compatible with IM. Events, messages, or other appropriate data from the IM server 506 are collected in the event queue 516 of the server 504. The events may be collected in association with a variety of protocols including by way of example but not limitation port 1863, port 5050, port 5222, port 5190, etc.
[0061] The IM network 508 may include one or a combination of networks selected from MSN Messenger, Yahoo! Messenger, AIM AOL, ICQ, QQ, Jabber, Google Talk, IRC, or some other known or convenient IM network.
[0062] The clients 514 may include any known or convenient device, including by way of example but not limitation, a Web browser, mobile client, PDA, game console, TV box, native application, etc. The clients poll the server 504 for events. The events can be removed from the event queue 516 and translated into text, JavaScript, XML, or some other known or convenient format that one or more of the clients 514 need or expect in order to process data associated with the event.
[0063] To interact with the IM network 508, the clients 514 send data to the server 504. The data, which may include commands, is processed and translated into corresponding data that will be sent to the appropriate IM network. In an embodiment, the appropriate IM network may be determinable based upon the protocol encoded in a message.
[0064] Messages or actions from the clients 514 are collected over network protocols such as, by way of example but not limitation, HTTP or plain socket connections. The messages or actions are transformed to an appropriate protocol format to be sent over a compliant port from the clients 514 to the server 504, with the IM protocol on the application side. In a non-limiting embodiment, the compliant port is http port 80. However, any port having similar characteristics to those of a typical port 80 could be used.
[0065] The latest available browsers, as of December 2005, enable the use of a technique called AJAX (Asynchronous JavaScript And XML). With AJAX, appropriately configured clients 514 can execute actions and poll for messages or events using only JavaScript. The method is based on using an XMLHttpRequest object to make HTTP requests to the server 504. The server 504 may reply with messages taken from the queue of the corresponding session in XML (or another) format that are parsed and displayed according to the message content.
[0066] For clients 514 that include a browser, when accessing the server 504 the browser typically uses hidden HTML frames to update information on visible frames. The visible frames display appropriate information while the hidden frames are reloaded in short periods of time. In each refresh that hits the server 504, the browser identifies the current messaging session and checks if new events or messages associated with the session are in the event queue 516. When new information arrives and needs to be displayed in some form, the browser makes use of, for example, JavaScript code to update the visible frames and windows with new messages or events keeping the information up to date in the screen. In this way, automatic refreshing can take place in a hidden frame.
[0067] In another embodiment, certain of the clients 514 with browsers may not make use of refreshes. For example, a form of updating the screen without using a refresh technique is to keep one single HTTP socket request alive for the whole period of a messaging session without actually closing the socket connection. In this example, information is initially loaded and displayed in one single visible frame. While events and messages are being received by the server 504, JavaScript code can be injected into the HTML document through the same HTTP socket kept alive and managed by the server 504. For each event or message, the browser can interpret the JavaScript code injected and the corresponding parts of the HTML document and windows will be updated.
[0068] In another embodiment, certain of the clients 514 with browsers may make use of manual refreshes. Some relatively unsophisticated browsers, such as WAP and xHTML browsers often available on mobile phones, do not support hidden frames and/or JavaScript (and others may be configured such that they do not support hidden frames and/or JavaScript). In such cases, the information displayed has to be updated manually by the user. Manual updating enables any mobile phone, PDA, TV Set or any device with a browser to connect to the server 504 and use the messaging platforms made available by the server 504 assuring the communication between the clients 514 and the IM server 506.
[0069] Message history can be stored by most IM clients on a local computer. For alternative web and mobile-based clients local storage may not be possible. In a non-limiting embodiment, the server 504, may have the capability to store message history from IM conversations done via one or more of the clients 514. The message history can be accessed and searched at any time via the server 504 by one or more of the clients 514
[0070] FIG. 6 depicts a flowchart 600 of an example of a method of initiating a messaging over a data connection session with an effectively offline messaging target. In the example of FIG. 6, the flowchart 600 starts at module 602 with first mobile device initiates data connection with first mobile operator. In this way, the first mobile device establishes a data connection appropriate for messaging.
[0071] In the example of FIG. 6, the flowchart 600 continues to module 604 with determine messaging target is effectively offline. The messaging target can indicate status to a messaging server (or, alternatively perhaps directly to the first mobile device). If the first mobile device is aware of the status, the first mobile device knows when the messaging target is effectively offline. Whether the messaging target is effectively offline can also be determined by failing an attempted message delivery or being informed of the messaging target's status by an application server that can make such a determination. Presumably, the first mobile device could also conceivably assume that a messaging target is effectively offline after not messaging for some time or in accordance with an algorithm. An application server can propose to a user to send a messaging wakeup message when the application server determines that the messaging target is effectively online.
[0072] In the example of FIG. 6, the flowchart 600 continues to module 606 with messaging application engine generates messaging wakeup message. An agent of the user can compose a messaging service message on the user's mobile device, which includes an address of the messaging target, none/some/all of the intended message, codes/commands that make the distinguish the messaging service message from a "normal message." A messaging application than then ask the user to send the specially composed SMS message. The messaging wakeup
message will presumably have a format that varies from the messaging format with which the messaging application engine is associated (because the messaging target is effectively offline). The messaging wakeup message format can be explicit, can be a changeable default, or can be freely entered by a user, perhaps in combination with a relevant engine that is capable of handling the offline communication.
[0073] In the example of FIG. 6, the flowchart 600 continues to module 608 with send messaging wakeup message via an offline communication channel. In a specific implementation, the offline communication channel is SMS sent over a cellular connection. However, other channels are possible, such as email or voicemail, where a user of the first mobile device records (or uses a stored) message to encourage a messaging target to wake up.
[0074] In the example of FIG. 6, the flowchart 600 continues to module 610 with begin messaging with messaging target when messaging target comes online. The messaging target can respond to the messaging wakeup message by selecting an appropriate stimulus detector or responding with a keypad stroke or responding with voice. The mechanism by which the messaging target chooses to come online is not critical to an understanding of the teachings described in this paper.
[0075] FIG. 7 depicts a flowchart 700 of an example of a method of responding to a messaging wakeup message to engage in a messaging over a data connection session. In the example of FIG. 7, the flowchart 700 starts at module 702 with second mobile device receives messaging wakeup message on offline channel.
[0076] In the example of FIG. 7, the flowchart 700 continues to module 704 with offline messaging engine displays messaging wakeup message. The messaging wakeup message can be displayed as a SMS message. Alternatively, the offline messaging engine can include, for example, a web browser, which can be used to enable access to an online email service. The fact that an email service can be online should not be construed to mean email is sent via other than an offline communication channel. The phrase "offline communication channel" is intended to mean a channel by which messages can be sent over other than a data connection.
[0077] In the example of FIG. 7, the flowchart 700 continues to module 706 with messaging application engine receives consent to start messaging. A user can give consent by triggering an appropriate stimulus detector (e.g., clicking a button).
[0078] In the example of FIG. 7, the flowchart 700 continues to module 708 with second mobile device opens data connection with second mobile operator. The second mobile operator (of the messaging target) may or may not be the same as the first mobile operator (of the sender of the messaging wakeup message).
[0079] In the example of FIG. 7, the flowchart 700 continues to module 710 with begin messaging over data connection with sender of messaging wakeup message.
[0080] Advantageously, when utilizing the techniques described in this paper, a messaging application works between . mobile phones. An application server can propose to a user to send a messaging wakeup message. A service message is generated at the user's phone and a messaging application asks the user to send the service message to a messaging target. The messaging target is thereby notified that an instant message is waiting in a messaging application.
Claims
1. A method comprising:
initiating a data connection with a mobile operator;
determining that a messaging target is effectively offline;
generating a messaging wakeup message;
sending the messaging wakeup message via an offline communication channel;
messaging over the data connection with the messaging target when the messaging target comes online.
2. A method comprising:
receiving a messaging wakeup message on an offline, communication channel;
displaying the messaging wakeup message;
receiving consent, responsive to the messaging wakeup message, to start messaging;
opening a data connection with a mobile operator;
messaging over the data connection with the sender of the messaging wakeup message.
3. A system comprising:
a means for initiating a data connection with a first mobile operator;
a means for determining that a messaging target is effectively offline;
a means for generating a messaging wakeup message;
a means for sending the messaging wakeup message via an offline communication channel; a means for receiving the messaging wakeup message on the offline communication channel at a mobile device of the messaging target;
a means for displaying the messaging wakeup message on the mobile device of the messaging target;
a means for receiving consent, responsive to the messaging wakeup message, to start messaging;
a means for opening a data connection with a second mobile operator at the mobile device of the messaging target;
a means for facilitating messaging over a data connection session between the sender of the messaging wakeup message and the messaging target.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161436961P | 2011-01-27 | 2011-01-27 | |
US61/436,961 | 2011-01-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2012102831A1 true WO2012102831A1 (en) | 2012-08-02 |
Family
ID=46581109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2012/000046 WO2012102831A1 (en) | 2011-01-27 | 2012-01-27 | Method to establish a message exchange between mobile devices over a data connection |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2012102831A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106412854A (en) * | 2015-07-30 | 2017-02-15 | 北京奇虎科技有限公司 | Method and apparatus for message sending based on contacts |
CN114760259A (en) * | 2022-04-27 | 2022-07-15 | 深圳小湃科技有限公司 | Offline message sending method and device, electronic equipment and readable storage medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030088676A1 (en) * | 2001-11-02 | 2003-05-08 | General Instruments Corporation | Method and apparatus for transferring a communication session |
US7042879B2 (en) * | 2001-11-02 | 2006-05-09 | General Instrument Corporation | Method and apparatus for transferring a communication session |
US20080182559A1 (en) * | 2001-08-31 | 2008-07-31 | Nokia Corporation | Mobile content delivery system |
US20100099421A1 (en) * | 2008-10-17 | 2010-04-22 | Verizon Corporate Services Group, Inc. | Efficient messaging over internet protocol |
-
2012
- 2012-01-27 WO PCT/US2012/000046 patent/WO2012102831A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080182559A1 (en) * | 2001-08-31 | 2008-07-31 | Nokia Corporation | Mobile content delivery system |
US20030088676A1 (en) * | 2001-11-02 | 2003-05-08 | General Instruments Corporation | Method and apparatus for transferring a communication session |
US7042879B2 (en) * | 2001-11-02 | 2006-05-09 | General Instrument Corporation | Method and apparatus for transferring a communication session |
US20100099421A1 (en) * | 2008-10-17 | 2010-04-22 | Verizon Corporate Services Group, Inc. | Efficient messaging over internet protocol |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106412854A (en) * | 2015-07-30 | 2017-02-15 | 北京奇虎科技有限公司 | Method and apparatus for message sending based on contacts |
CN114760259A (en) * | 2022-04-27 | 2022-07-15 | 深圳小湃科技有限公司 | Offline message sending method and device, electronic equipment and readable storage medium |
CN114760259B (en) * | 2022-04-27 | 2024-01-16 | 深圳小湃科技有限公司 | Offline message sending method, device, electronic device and readable storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12244555B2 (en) | Message history display system and method | |
KR20200141545A (en) | Apparatus and method for maintaining a message thread with opt-in permanence for entries | |
KR101923533B1 (en) | Method and system for providing calender services in a universal plug and play home network environment | |
CN101202760A (en) | remote control operation | |
US10075403B2 (en) | Method and system for managing voice mails in a universal plug and play network environment | |
WO2012102831A1 (en) | Method to establish a message exchange between mobile devices over a data connection | |
CN101163114A (en) | Method, system and device for notifying mobile mail state |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 12738717 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 12738717 Country of ref document: EP Kind code of ref document: A1 |