Patent Description:
Technologies for transmitting messages between terminals has been diversified and, recently, a messenger application using a data communication network as well as text messages (SMS, MMS) has been widely used.

In addition, due to the spread of smartphones, technologies for transmitting messages using various channels and push messages different from the existing ones have been developed and used. These message transport channels have different characteristics according to types, so a cost or system load may be determined according to through which channel a message is transmitted. Another example can be found in patent documents <CIT> and in <CIT>.

The present disclosure provides a method, apparatus, and program for automatically selecting a message transport channel and transmitting a message.

Technical objects to be achieved by the present disclosure are not limited to the aforementioned technical objects, and other technical objects not described above may be evidently understood by a person having ordinary skill in the art to which the present disclosure pertains from the following description.

Other details of the present disclosure are included in the detailed description and drawings.

According to the disclosed embodiment, by selecting an optimal message transport channel and transmitting a message according to a type of the message, a state of a device, and receiver information, economical efficiency of the message transmission may be maximized and a system load based on the message transmission may be minimized.

Effects which may be obtained by the present disclosure are not limited to the aforementioned effects, and other technical effects not described above may be evidently understood by a person having ordinary skill in the art to which the present disclosure pertains from the following description.

Advantages and features of the present disclosure, and implementation methods thereof will be clarified through following embodiments described with reference to the accompanying drawings. The present disclosure may, however, be embodied in different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the present disclosure to those skilled in the art. Further, the present disclosure is only defined by scopes of claims.

Terms used in the present disclosure are for explaining exemplary embodiments rather than limiting the present disclosure. Unless explicitly described to the contrary, a singular form includes a plural form in the present disclosure. The word "comprise" and variations such as "comprises" or "comprising," will be understood to imply the inclusion of stated constituents, steps, operations and/or elements but not the exclusion of any other constituents, steps, operations and/or elements. Throughout the disclosure, the like reference numerals denote the substantially same elements, and "and/or" includes each and one or more combinations of mentioned components. It will be understood that, although the terms "first", "second", etc. may be used herein to describe various elements, these elements should not be limited by these terms.

Unless otherwise defined, all the terms (including technical and scientific terms) used herein have the same meaning as commonly understood by a person skilled in the art to which this invention pertains. Such terms as defined in generally used dictionaries should not be construed to have ideally or excessively formal meanings.

Also, in embodiments of the present disclosure, the term "unit" or "module" used herein, signifies, but is not limited to, a software or hardware component, such as a Field Programmable Gate Array (FPGA) or Application Specific Integrated Circuit (ASIC), which performs certain tasks. A unit or module may advantageously be configured to reside on the addressable storage medium and configured to execute on one or more processors. Thus, a unit or module may include, by way of example, components, such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables. The functionality provided for in the components and units or modules may be combined into fewer components and units or modules or further separated into additional components and units or modules.

<FIG> is a conceptual diagram illustrating a system for automatically selecting a message transport channel and transmitting a message according to an embodiment.

Referring to <FIG>, a server <NUM>, a sender terminal <NUM> and a receiver terminal <NUM> communicating with each other through the server <NUM> are illustrated.

In an embodiment, the sender terminal <NUM> and the receiver terminal <NUM> may refer to mobile devices including smartphones but are not limited thereto.

In an embodiment, the sender terminal <NUM>, the receiver terminal <NUM>, and the server <NUM> may refer to computing devices including at least one processor. For example, the computing devices may include, but are not limited to, smartphones, tablet PCs, desktop computers, laptop computers, and the like.

In an embodiment, the sender terminal <NUM> may transmit a message to the receiver terminal <NUM>, and the message may be transmitted to the receiver terminal <NUM> through the server <NUM> but is not limited thereto. In addition, the sender terminal <NUM> and the receiver terminal <NUM> are named based on the roles in an embodiment for delivering a message, and the receiver terminal <NUM> may also send a message to the sender terminal <NUM> and there is no difference in hardware configuration or software function of the sender terminal <NUM> and the receiver terminal <NUM>.

In the present disclosure, a method for automatically selecting a message transport channel and transmitting a message through the selected channel in an embodiment in which the sender terminal <NUM> transmits a message to the receiver terminal <NUM> will be described.

At least a part or the entirety of the method for automatically selecting a message transport channel and transmitting a message according to the disclosed embodiment may be performed by both the sender terminal <NUM> and the server <NUM>, but hereinafter, a subject of each step will be described separately for the purposes of description. However, the subject of each step is not limited by the examples described below and each step may be performed by any kind of computing device.

<FIG> is a flowchart illustrating a method for automatically selecting a message transport channel and transmitting a message according to an embodiment.

In operation S101, the server <NUM> receives a message to be transmitted (i.e., a transmission target message) or information on the transmission target message from the sender terminal <NUM> and obtains message information on the transmission target message.

For example, the message information may include a type of message (e.g., text, image, voice, video, mixed content, etc.), a size of the message (e.g., <NUM> bytes or less or greater), a short sentence, a long sentence, a symbol, signal information and the like, but is not limited thereto.

In an embodiment, the message information may be obtained based on at least some of a file size, format information, header information, and attribute information of the message, but is not limited thereto.

In operation S102, the server <NUM> obtains receiver information including at least one of information on a receiver of the message and information on a receiver's device.

For example, the receiver information may include receiver's personal information including information member subscription of the receiver regarding a specific service (e.g., a site or an application), personal information, reception approval information, and the like and device information related to the receiver terminal <NUM>.

For example, the device information may include a type of a device such as a feature phone or a smartphone, network information available to devices such as <NUM>, <NUM>, <NUM>, and <NUM>, operating system information of devices such as Android, ios, and Windows, and application (program) installed in each device, but is not limited thereto.

In operation S103, the server <NUM> obtains information on one or more reception-available channels based on the message information and the receiver information.

For example, the information on the reception-available channel may be a push message (e.g., a light-weight message, a mid-weight message, apns, gcm (c2dm), an RCS, a third party push, oma-mms, a third party SNS channel, etc.), a carrier message (e.g., SMS, MMS, etc.), and the like, but is not limited thereto.

In an embodiment, the reception-available channel may refer to a channel capable of transmitting the message based on at least one of a type and a capacity of the message, but is not limited thereto.

In operation S104, the server <NUM> selects at least one channel among the one or more reception-available channels, and the type of the channel may include at least one of the channels included in the above example, but is not limited thereto.

In operation S105, the server <NUM> transmits the message to the receiver terminal <NUM> through the selected channel.

<FIG> is a flowchart illustrating a method for selecting a message transport channel and transmitting a message based on priorities according to an embodiment.

In operation S106, the server <NUM> may determine priorities of at least some of the one or more reception-available channels.

In an embodiment, the priorities may be determined based on economic efficiency of each of the one or more reception-available channels. For example, a channel that may transmit a message at a lower cost may have a higher priority.

Further, the priorities may be set based on the degree of a load of the system, or the priorities may be given based on order set by a user. When the priorities are given according to the order set by the user, the priorities may be given solely according to the order set by the user or the priorities may be calculated by assigning weights or additional points to a channel selected by the user.

In operation S107, the server <NUM> may select the at least one channel according to the determined priorities.

For example, the server <NUM> may transmit a message by selecting a channel having the highest priority among channels that the receiver can receive, and according to an embodiment, the server <NUM> may select a channel through which the message can be transmitted at the lowest cost and send the message therethrough according to an embodiment.

In another embodiment, the channels that the receiver may receive may include channels having different probabilities that the receiver may actually receive and check (or read) the message. Therefore, according to an embodiment, the server <NUM> may give a higher priority to a channel estimated for the receiver to have a high probability of checking the message or a channel estimated for the receiver to check the message quickly, among the channels that the receiver may receive.

In an embodiment, the priorities may be set based on economical efficiency, a probability that the receiver will check the message, a time when the receiver is expected to check the message, and the like.

In addition, the priorities may be determined by including various factors such as a data size, the presence of photo or a photo size, the presence of image (or image size), a load rate of the corresponding channel, or urgency of the transmission message, but are not limited thereto.

In an embodiment, the priorities may also be used to determine a message transmission order. For example, although there is an existing general awaiter who waits for transmission in a push (light-weight message) transmission queue (a space waiting for transmission), if a message with urgency is sent to the queue, the order may be changed such that the message prioritized in transmission order (waiting) is preferentially transmitted.

<FIG> is a flowchart illustrating a method for retransmitting a message according to an embodiment.

In operation S108, when the message transmitted through the selected channel cannot be provided to the receiver or is not checked by the receiver for a predetermined time, the server <NUM> may select a next-highest channel of the selected channel according to the determined priorities.

For example, in a case where a specific channel is selected and the message is transmitted to the receiver, if the receiver does not check the message for a predetermined time, the channel which is next in priority may be selected.

In operation S109, the server <NUM> may retransmit the message through the next-highest channel. Similarly, if the retransmitted message is not also checked for the predetermined time, the server <NUM> may retransmit the message through a next-highest channel again.

In an embodiment, when a message is repeatedly transmitted (or duplicated) through a plurality of channels, crosstalk may occur. Therefore, in the case of the repeated transmission, crosstalk may be prevented by deleting or deactivating a previously sent message.

In an embodiment, if the message is not yet downloaded by the receiver terminal <NUM>, the server <NUM> may delete or deactivate the duplicate message.

If the message has already been downloaded to the receiver terminal <NUM>, the server <NUM> may delete or deactivate the message if it has the authority to delete the message, and if there is no authority, the server may transmit information indicating that the message is duplicated to the receiver terminal <NUM>.

<FIG> is a flowchart illustrating a method for obtaining reception-available channel information according to an embodiment.

In operation S110, the server <NUM> may obtain information on one or more channels that the receiver can receive.

For example, the channel that the receiver can receive may be determined based on whether the receiver has subscribed to each site or application.

In operation S111, the server <NUM> may obtain information on whether the receiver allows reception on one or more channels that the receiver can receive.

For example, even if the receiver technically receives a channel, the receiver may have refused reception based on the channel. In this case, since it is not possible to transmit a message, and thus, the server <NUM> obtains in advance information on whether the user allows reception.

In operation S112, the server <NUM> may receive information on one or more reception-available channels that the receiver can receive and allows reception.

That is, the server <NUM> may increase a transmission probability of the message by selecting a channel that the receiver technically receives and that the receiver allows reception and transmitting the message therethrough.

In an embodiment, the server <NUM> may obtain information on one or more reception-available channels that can be received by the receiver's device, based on information on the type of the receiver's device and an application installed in the receiver's device.

For example, the server <NUM> may obtain information on available channels according to the type of the receiver's device, i.e., the type of the receiver terminal <NUM>.

For example, the device information may include types of devices such as feature phones and smartphones, network information that devices may use, such as <NUM>, <NUM>, <NUM>, and <NUM>, operating system information of devices such as Android, ios, and Windows, and an application (program) installed in each device, but is not limited thereto.

<FIG> is a flowchart illustrating a method for obtaining reception-available channel information according to a claimed embodiment.

In operation S113, the server <NUM> may obtain information on a state of an application installed in the receiver's device.

For example, the server <NUM> may obtain information on an application installed in the receiver's device, as well as the receiver's device itself, and obtain information on the state of each application.

For example, the application may be installed in the receiver terminal <NUM> but may be deactivated, and push notification may not be allowed.

For example, even when a specific messenger application is installed and activated, a notification setting may be turned off. The server <NUM> may collect the corresponding information from the receiver terminal <NUM>.

In addition, the application may not only be installed in the receiver terminal <NUM> but also push notification may be allowed. However, when a push notification request is received in a state in which the corresponding application operates at least one process in a background in the receiver terminal <NUM>, it is necessary to additionally check whether or not the push notification can be provided.

For example, there may be a case where the background process of the corresponding application is forcibly terminated to save a battery in the receiver terminal <NUM>. In this case, the push notification may not be provided even when a message is transmitted.

Therefore, the server <NUM> may determine whether the receiver terminal <NUM> is in a state in which it can provide a notification through the corresponding channel through communication with the receiver terminal <NUM> (e.g., the server <NUM> may first transmit a signal for determining whether a push message can be transmitted, for a test).

In operation S115, the server <NUM> may obtain information on one or more reception-available channels through which the receiver's device may provide a notification to the receiver, based on the information on the state of the application.

In the case of transmitting a message to the receiver's device, i.e., the receiver terminal <NUM>, through a specific channel based on the obtained information, the server <NUM> may transmit the message through the channel determined for the receiver terminal <NUM> to provide a notification.

Accordingly, the server <NUM> may increase the probability that the transmitted message is checked by the receiver, and may increase a speed of checking the message.

<FIG> is a block diagram of an apparatus according to an embodiment.

A processor <NUM> may include one or more cores (not shown), a graphic processor (not shown), and/or a connection passage (e.g., a bus, etc.) that transmits and receives signals with other components.

The processor <NUM> according to an embodiment executes one or more instructions stored in a memory <NUM> to thereby perform the method described above with reference to <FIG>.

For example, by executing the one or more instructions stored in the memory <NUM>, the processor <NUM> obtains message information on a transmission target message, obtains receiver information including at least one of information on a receiver of the message and information on the receiver's device, obtains information on one or more reception-available channels based on the message information and the receiver information, selects at least one channel among the one or more reception-available channels, and transmits the message through the selected channel.

Meanwhile, the processor <NUM> may further include random access memory (RAM) and read-only memory (ROM) for temporarily and/or permanently storing a signal (or data) processed in the processor <NUM>. In addition, the processor <NUM> may be implemented in the form of a system-on-chip (SoC) including at least one of a graphic processor, a RAM, and a ROM.

The memory <NUM> may store programs (one or more instructions) for processing and controlling of the processor <NUM>. The programs stored in the memory <NUM> may be divided into a plurality of modules according to functions.

The steps of the method or algorithm described in connection with the embodiment of the present disclosure may be implemented directly in hardware, in a software module executed by hardware, or by a combination thereof. The software module may reside in a random access memory (RAM), read-only memory (ROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, hard disk, removable disk, CD-ROM, or any form of computer-readable recording medium well known in the art to which the present disclosure pertains.

Claim 1:
A method of automatically selecting a message transport channel and transmitting a message, which is performed by a computing device, the method comprising:
obtaining message information on a transmission target message;
obtaining receiver information including at least one of information on a receiver of the message and information on a device of the message;
obtaining information on one or more reception-available channels based on the message information and receiver information; and
selecting, by the computing device, at least one of the one or more reception-available channels based on the information on the one or more reception-available channels; and
transmitting the message via the selected channel;
characterized in that
the obtaining of the information on the reception-available channel further comprises
obtaining information on at least one reception-available channel that can be received by a receiver's device based on information on a type of the receiver's device and on a state of an application installed in the receiver's device; and
obtaining information on one or more reception-available channels that can provide notification to the receiver in the receiver's device; and
the method further comprises
additionally checking whether or not the push notification can be provided when a push notification request is received in a state in which the application operates at least one process in a background in the receiver.