System for push service notification based on user history

Disclosed herein is a framework for pushing service notifications to users via selected channels that are chosen based on user history. In accordance with one aspect, the framework determines if a notification is to be sent to a particular user. The framework may further determine if the notification requires an action. If the notification requires no action, the framework may choose, from multiple channels, a channel with lowest receive time duration. The framework may then send the notification via the chosen channel.

TECHNICAL FIELD

The present disclosure relates generally to providing push service notifications to users.

BACKGROUND

Notifications may be sent to users via numerous systems and devices. Such notifications include various messages (e.g., email, SMS, text, etc.), data, and the like. The notifications are considered “pushed”, since they are sent without initiation or request from a user.

The notifications may be sent from a central location. The central location or center may send the notifications via multiple channels. In many cases, there may be redundant notifications sent to a user, and/or there may be notifications that are needed. In certain instances, there may be notifications that may require an action by the user. It is desirable to efficiently send notifications to users.

SUMMARY

Disclosed herein is a framework for pushing service notifications to users via selected channels that are chosen based on user history. In accordance with one aspect, the framework determines if a notification is to be sent to a particular user. The framework may further determine if the notification requires an action. If the notification requires no action, the framework may choose, from multiple channels, a channel with lowest receive time duration. The framework may then send the notification via the chosen channel.

In accordance with another aspect, the framework initiates a push notification to a particular user. The framework may determine if the push notification is for information only. If the push notification is for information only, the framework chooses a channel based on lowest receive time duration as determined by prior user history over multiple channels. The notification may then be sent via the chosen channel.

In accordance with yet another aspect, a push center is provided. The push center may send service notifications to multiple users. The push center may be configured to connect to multiple channels. The push center may determine which channels to send the service notifications based on trend analysis regarding user and channel history.

This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the following detailed description. It is not intended to identify features or essential features of the claimed subject matter, nor is it intended that it be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure.

The Detailed Description references the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The same numbers are used throughout the drawings to reference like features and components.

DETAILED DESCRIPTION

Disclosed herein are technologies for providing push service notification based on user history. Examples of users include individuals, business or corporate entities, etc. Channels used to provide notifications are chosen based on the efficiency, where efficiency of channels is determined based on user history and trend analysis of channels to send notifications to users.

FIG. 1shows an example system100that may be used to provide push notifications to users. System100includes a central notification push center102. Multiple notification push channels104may be used to provide the notifications. Notification push channels104may include various subsystems106, such as a mail106-1, social network106-2, short message (i.e., SMS)106-3, enterprise106-4up to and including system N106-N. Notification push channels104may also include devices, such as device1108-1to device M108-M. Devices108may include a mobile phone, personal computer, tablet, etc. Individual multiple connections may be used by notification push center102to directly connect to notification push channels104. The individual multiple connections are represented by connections110.

Various target users112receiving notifications are shown in this example as user1114-1, user2114-2, up to user Z114-Z. The target users112may receive notifications, by directly connecting via individual multiple connections. The individual multiple connections are represented by connections116.

If the push center is to send a notification using all the channels to all the users, the number of push times or count of number of sent notifications is represented as follows:
Push times=number of push channels*number of target users  (1)

In this example, the number of push times, will be:
Push times=[N(i.e., number of systems)+M(i.e., number of devices)]*Z(i.e., number of users)

It is to be understood that not all users will be active, or receive notifications, on all the channels that are provided. For example, users may be active only on certain systems or access only particular devices.

FIG. 2illustrates an example of different users and their access to different channels, receipt of notifications and effect of the notifications. This example is illustrated in table200. In this example, there are three (3) users, and the central push center uses five (5) push channels. Therefore, using equation (1) above, the push times equals 3*5 or 15.

Table200includes column heading/categories of target user202, which identifies a user; received204, which are actual received notification; useful206, which are number of notifications that are useful to the user; duplicate208, which are the number of redundant notifications; and purposeless210, which are the number of channels that are not used.

In this example, there are three target users212represented by user1, user2, and user3. Three associated entries212-1,212-2, and212-3respectively represent user1, user2, and user3.

As an example, user1is active on three channels; therefore, user1receives three notifications, represented under the received204heading. However, only one notification is useful, as represented under useful206heading. Of the three notifications, two notifications are determined to be redundant, as represented under the duplicate208heading. Because user1only is active on only three channels of the five channels, or receives notifications on three of the five available channels from the push center, two of the five channels are of no purpose to user1, as represented by purposeless heading210.

Continuing with the example, user2is active on only one channel. User2receives only one notification. User2has no duplicate channels. User2has no need for four of the available five channels, as represented by purposeless heading210.

User3is active on all five channels. User3receives five notifications. Only one notification is useful to user3. Four notifications are duplicate or redundant. Since all five channels are used, there are no purposeless channels.

In this example scenario, for the three users, there are 15 notifications sent. Three notifications are determined to be useful, as represented by the total value of three (3) in box214. Six notifications are determined to be duplicate, as represented by the total value of six (6) in box216. Six channels are determined to be purposeless, as represented by the total value of six (6) in box218. Therefore, there are 12 notifications that are not needed, because of duplication or no access/use (i.e., purposeless) to particular channels. Considering there are 15 notifications, the 12 not needed notifications are significant. As the number of users and channels increase, the number of redundant/not needed notifications is expected to increase. Therefore, a goal is to provide for a more efficient system and process for push service notifications.

FIG. 3illustrates an exemplary timeline300for implementing, at least in part, the technology described herein. The timeline300includes various relative time points T0302, which may be considered zero time; T1304; T2306; and T3308.

Receive Time Duration (RTD)310is defined as the time duration for receiving the push notification after the push notification has been sent from the push center102, which is the value T2306minus T1304. In this example, T1304is the time that notification push center102sends the notification, and T2306is the time the user receives the notification and a confirmed read receipt is sent back to the push center102. When a user reads the notification, the read receipt may be sent back to the push center to confirm that the notification is received by the user.

Action Time Duration (ATD)312is defined as the time duration for a user to take action after notification is received, which is the value T3308minus T2306. In this example, T3308is the time at which the user takes action on the system regarding the received notification. The action is engaged with the business context in the push notification. Examples of the actions can include: reply the notification, send command, directly take action in the system (e.g., system100).

Actions may be logged into the push center with user ID (name) and the related notifications. The push center or notification push center102may record all RTD and ATD values for all users. Particular examples of such records are discussed below. Such records may be used to determine trend analysis and efficiently determine channels to use in providing push notifications.

FIG. 4illustrates an exemplary table400for implementing, at least in part, the technology described herein. Table400may be considered as a log entry record of notifications. In particular, table400includes the following headings: notification reference ID402identifying a particular push notification; user reference ID404identifying a user; push channel ID406identifying a channel; receive time duration408providing a RTD value; and action time duration410providing an ATD value. Values are recorded for a number of entries412-1to412-N.

FIG. 5illustrates another exemplary table500for implementing, at least in part, the technology described herein. Table500may be considered as a listing of notifications. In particular, table500includes the following headings: ID502identifying a particular notification; notification type504identifying the type of notification (e.g., action to be taken, no action/informational, etc.); content506identifying content in notification (e.g., general information regarding notification content); and action context508, which may be information regarding system, subsystem and channels. Values are recorded for a number of notification entries510-1to510-N.

FIG. 6illustrates an exemplary table600for implementing, at least in part, the technology described herein. Table600may be considered as a record or listing for trend analysis. In particular, table600includes the following headings: user ID602identifying a user; notification type604identifying the type of notification (e.g., action to be taken, no action/informational, etc.); channel ID606identifying a channel; average receive time duration608, and average action time duration610. Values are recorded for a number of entries612-1to612-N. To analyze the RTD and ATD for each user, notification type and channel, table600may be used to timely update the average RTD and ATD for each combination of user, notification type, and channel. For example, for a certain user and a specific channel, notifications determined as the same notification type may be calculated for average RTD and ATD per the following:
Average RTD=sum(RTD of all notification)/notification count  (2)
Average ATD=sum(ATD of all notification)/notification count  (3)

FIG. 7illustrates an exemplary process700for implementing, at least in part, the technology described herein. In particular, process700depicts a flow to determine channels for push notification messages. The process700may be performed by a computing device or devices. An example architecture of such a computer device is described below with reference toFIG. 8. In this particular example, the process700describes that certain acts may be performed at or by a user or a system.

At702, a notification is to be sent to a user. As discussed above, a push center102through multiple channels104may send or push the notification to the user.

At704, a determination is made if the pushed notification requires an action by the user. If no action is needed, following the “NO” branch of704, the step of706is performed. At706, the notification is determined to be for “information only” to the user.

If action is needed, following the “YES” branch of704, the step of708is performed. At708, based on the user, a channel with the lowest sum of the “average RTD” and the “average ATD” is chosen.

At710, based on the user, the channel with the lowest average RTD is chosen based on trend analysis (i.e., records) as discussed above. This is particularly true if the notification is just for information only (i.e., following706).

At712, the notification is sent/pushed to the user via the selected channel or channels as determined at708and710.

FIG. 8illustrates an exemplary system800that may implement, at least in part, the technologies described herein. The computer system800includes one or more processors, such as processor804. Processor804can be a special-purpose processor or a general-purpose processor. Processor804is connected to a communication infrastructure802(for example, a bus or a network). Depending upon the context, the computer system800may also be called a client device.

Computer system800also includes a main memory806, preferably Random Access Memory (RAM), containing possibly inter alia computer software and/or data808.

Computer system800may also include a secondary memory810. Secondary memory810may include, for example, a hard disk drive812, a removable storage drive814, a memory stick, etc. A removable storage drive814may include a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, or the like. A removable storage drive814reads from and/or writes to a removable storage unit816in a well-known manner. A removable storage unit816may include a floppy disk, a magnetic tape, an optical disk, etc. which is read by and written to by removable storage drive814. As will be appreciated by persons skilled in the relevant art(s) removable storage unit816includes a computer usable storage medium818having stored therein possibly inter alia computer software and/or data820.

In alternative implementations, secondary memory810may include other similar means for allowing computer programs or other instructions to be loaded into computer system800. Such means may include, for example, a removable storage unit824and an interface822. Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an Erasable Programmable Read-Only Memory (EPROM), or Programmable Read-Only Memory (PROM)) and associated socket, and other removable storage units824and interfaces822which allow software and data to be transferred from the removable storage unit824to computer system800.

Computer system800may also include an input interface826and a range of input devices828such as, possibly inter alia, a keyboard, a mouse, etc.

Computer system800may also include an output interface830and a range of output devices832such as, possibly inter alia, a display, one or more speakers, etc.

Computer system800may also include a communications interface834. Communications interface834allows software and/or data838to be transferred between computer system800and external devices.

Communications interface834may include a modem, a network interface (such as an Ethernet card), a communications port, a Personal Computer Memory Card International Association (PCMCIA) slot and card, or the like. Software and/or data838transferred via communications interface834are in the form of signals836which may be electronic, electromagnetic, optical, or other signals capable of being received by communications interface834. These signals836are provided to communications interface834via a communications path840. Communications path840carries signals and may be implemented using a wire or cable, fiber optics, a phone line, a cellular phone link, a Radio Frequency (RF) link or other communication channels.

As used in this document, the terms “computer-program medium,” “computer-usable medium,” and “computer-readable medium” generally refer to media such as removable storage unit816, removable storage unit824, and a hard disk installed in hard disk drive812. Computer program medium and computer usable medium can also refer to memories, such as main memory806and secondary memory810, which can be memory semiconductors (e.g. Dynamic Random Access Memory (DRAM) elements, etc.). These computer program products are means for providing software to computer system800.

Computer programs (also called computer control logic) are stored in main memory806and/or secondary memory810. Such computer programs, when executed, enable computer system800to implement the present technology described herein. In particular, the computer programs, when executed, enable processor804to implement the processes of aspects of the above. Accordingly, such computer programs represent controllers of the computer system800. Where the technology described herein is implemented, at least in part, using software, the software may be stored in a computer program product and loaded into computer system800using removable storage drive814, interface822, hard disk drive812or communications interface834.

The technology described herein may be implemented as computer program products comprising software stored on any computer useable medium. Such software, when executed in one or more data processing devices, causes data processing device(s) to operate as described herein. Embodiments of the technology described herein may employ any computer useable or readable medium, known now or in the future. Examples of computer useable mediums include, but are not limited to, primary storage devices (e.g., any type of random access memory), secondary storage devices (e.g., hard drives, floppy disks, Compact Disc Read-Only Memory (CD-ROM) disks, Zip disks, tapes, magnetic storage devices, optical storage devices, Microelectromechanical Systems (MEMS), and nanotechnological storage device, etc.).

A computing system may take the form of any combination of one or more of inter alia a wired device, a wireless device, a mobile phone, a feature phone, a smartphone, a tablet computer (such as for example an iPad™), a mobile computer, a handheld computer, a desktop computer, a laptop computer, a server computer, an in-vehicle (e.g., audio, navigation, etc.) device, an in-appliance device, a Personal Digital Assistant (PDA), a game console, a Digital Video Recorder (DVR) or Personal Video Recorder (PVR), a cable system or other set-top-box, an entertainment system component such as a television set, etc.

In the above description of exemplary implementations, for purposes of explanation, specific numbers, materials configurations, and other details are set forth in order to better explain the present invention, as claimed. However, it will be apparent to one skilled in the art that the claimed invention may be practiced using different details than the exemplary ones described herein. In other instances, well-known features are omitted or simplified to clarify the description of the exemplary implementations.

The inventors intend the described exemplary implementations to be primarily examples. The inventors do not intend these exemplary implementations to limit the scope of the appended claims. Rather, the inventor has contemplated that the claimed invention might also be embodied and implemented in other ways, in conjunction with other present or future technologies.

Moreover, the word “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as exemplary is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word “exemplary” is intended to present concepts and techniques in a concrete fashion. The term “technology,” for instance, may refer to one or more devices, apparatuses, systems, methods, articles of manufacture, and/or computer-readable instructions as indicated by the context described herein.

Note that the order in which the processes are described is not intended to be construed as a limitation, and any number of the described process blocks can be combined in any order to implement the processes or an alternate process. Additionally, individual blocks may be deleted from the processes without departing from the spirit and scope of the subject matter described herein.