This disclosure relates generally to apparatuses, methods, and computer readable media for integrating communications for computing devices across multiple communications formats and protocols.
The proliferation of personal computing devices in recent years, especially mobile personal computing devices, combined with a growth in the number of widely-used communications formats (e.g., text, voice, video, image) and protocols (e.g., SMTP, IMAP/POP, SMS/MMS, XMPP, etc.) has led to a communications experience that many users find fragmented and restrictive. Users desire the freedom to communicate anything with anyone, anytime and in any format or protocol they desire.
With current communications technologies, conversations remain “siloed” within particular communications formats or protocols, leading to users having to keep up with multiple conversations in multiple places and across multiple applications on their computing devices, often resulting in inefficient communications and even lost business or personal opportunities. For example, a conversation between two people may begin over text messages (e.g., SMS) while the people are away from their work computers, and then transition to email once they have arrived at their offices. At that point, the entire conversation can no longer be tracked, reviewed, searched, or archived by any single source since it had ‘crossed over’ protocols.
Further, current communications inboxes are typically either subject-people-centric (i.e., grouped by both subject line and sender), subject-centric (i.e., grouped by subject line only), or format-centric (i.e., grouped together by message format). What is needed is a multi-protocol, person-centric, multi-format in box feed system for integrating multi-format communications. Such a solution may provide various potential benefits to users of such a system, including: presenting email, text, voice, video, and social messages all grouped/categorized by contact (i.e., ‘person-centric’); providing several potential filtering options to allow for traditional sorting of communications (e.g., an ‘email’ view for displaying only emails); displaying such information in a screen-optimized feed format; and allowing a user to control how, when, and who they interact with—on a message-, message group-, channel-, device-, or even contact-level basis, (e.g., by intelligently suppressing or “snoozing” such interactions via direct user action and/or via learned behavior patterns determined by the communication system itself). Importantly, centralization of messages by contact may be employed to better help users manage the volume (and rate) of incoming messages in any format and via any protocol—and to save precious screen space on mobile devices (e.g., such a display has empirically been found to be up to six to seven times more efficient that a traditional in box format). Further, in similar measure, such an in box feed makes it easier for a user to delete, block, delay, or take other actions on messages or groups of messages (e.g., all messages from a particular contact or person, spam, or graymail).
The subject matter of the present disclosure is directed to overcoming, or at least reducing the effects of, one or more of the problems set forth above. To address these and other issues, techniques that enable seamless, multi-format, multi-protocol communications via a single user interface are described herein.
Disclosed are apparatuses, methods, and computer readable media for integrating communications for computing devices across multiple formats and multiple protocols. More particularly, but not by way of limitation, this disclosure relates to apparatuses, methods, and computer readable media to permit computing devices, e.g., smartphones, tablets, lappets, wearable devices, and the like, to present users with a multi-protocol, person-centric, multi-format in box feed system for integrating multiple formats and protocols of communication.
Use of a person-centric, e.g., sender-specific, in box feed allows users to view/preview all their messages in a single feed. Grouping messages by sender also conveniently allows the user to stay on the same user interface screen while reviewing messages and allows for quick visual filtering of messages. Such a multi-format communication feed may also include one or more of a variety of communication formats including text, voice, video, and/or images. Further, the use of certain gestures and icon features may help the user with the decision-making process regarding the choice to reply, delay replying (including the time delaying of replies across multiple protocols), delay the receipt of incoming communication notifications, delete, mark as spam, see a full message, translate, read, or flag a message as being unread.
Referring now to
Server 106 in the server-entry point network architecture infrastructure 100 of
Referring now to
Referring now to
System unit 205 may be programmed to perform methods in accordance with this disclosure. System unit 205 comprises one or more processing units, input-output (I/O) bus 225 and memory 215. Access to memory 215 can be accomplished using the communication bus 225. Processing unit 210 may include any programmable controller device including, for example, a mainframe processor, a mobile phone processor, or, as examples, one or more members of the INTEL® ATOM™, INTEL® XEON™, and INTEL® CORE™ processor families from Intel Corporation and the Cortex and ARM processor families from ARM. (INTEL, INTEL ATOM, XEON, and CORE are trademarks of the Intel Corporation. CORTEX is a registered trademark of the ARM Limited Corporation. ARM is a registered trademark of the ARM Limited Company). Memory 215 may include one or more memory modules and comprise random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), programmable read-write memory, and solid-state memory. As also shown in
Referring now to
The processing unit core 210 is shown including execution logic 280 having a set of execution units 285-1 through 285-N. Some embodiments may include a number of execution units dedicated to specific functions or sets of functions. Other embodiments may include only one execution unit or one execution unit that can perform a particular function. The execution logic 280 performs the operations specified by code instructions.
After completion of execution of the operations specified by the code instructions, back end logic 290 retires the instructions of the code 250. In one embodiment, the processing unit core 210 allows out of order execution but requires in order retirement of instructions. Retirement logic 295 may take a variety of forms as known to those of skill in the art (e.g., re-order buffers or the like). In this manner, the processing unit core 210 is transformed during execution of the code 250, at least in terms of the output generated by the decoder, the hardware registers and tables utilized by the register renaming logic 262, and any registers (not shown) modified by the execution logic 280.
Although not illustrated in
Multi-Protocol, Multi-Format In box Feed
As is shown across the top row of the interface 302, the multi-format, multi-protocol messages received by a user of the system may be grouped by protocol (e.g., Email, IM/SMS, Video, Voice, etc.), or all messages may be combined together into a single, unified in box feed, as is shown in
Moving down to row 308 of in box feed 300, messages from a second user, Peter Ehrmanntraut, have also been aggregated into a single row of the feed. As is displayed on the right hand side of row 308 is reveal arrow 310. Selection of reveal arrow 310 may provide additional options to the user such as to reply, delay reply/delay send, forward, return a call, favorite, archive, or delete certain message from a particular sender. Further, the reveal action may conveniently keep the user on the same screen and allows for quick visual filtering of messages. Gestures and icon features may help the user with the decision-making process regarding the choice to reply, delay replying (including the time delaying of response across multiple protocols), delete, mark as spam, see a full message, translate, read, or flag a message as being unread. With respect to the “delay reply/delay send” option, the multi-protocol, multi-format communication system may determine, based on the determined outgoing message format and protocol, that a particular communication in a particular format (or that is being sent via a particular protocol) should be delayed before being sent to the recipient. For example, a video or voice message may not be appropriate to send at midnight, and so the system may delay sending the message until such time as the recipient is more likely to be awake, e.g., 9:00 am. On the other hand, the outgoing message is in text format and being delivered via the SMS protocol, sending the message at midnight may be more socially-appropriate. Delay reply/delay send may also take into account the time zone of the recipient and choose a more socially-appropriate delivery time for a message based on the recipient's local time.
Finally, moving down to row 312, the ‘grayed-out’ characteristic of the row may be used to indicate that there are no remaining unread/unopened messages of any format or protocol type remaining from a particular sender. Alternately, each message type may be individually grayed out, indicating that there are no new messages of a particular type. It is to be understood that the use of a grayed out row is merely exemplary, and that any number of visual indicators may be used to inform the user of the device that no unread messages remain.
As may now be appreciated, the multi-protocol, person-centric, multi-format in box feed 300 of
In other embodiments, users may also select their preferred delivery method for incoming messages of all types. For example, they can choose to receive their email messages in voice format or voice messages in text, etc.
Referring now to
Referring now to
Referring now to
Multi-Protocol, Multi-Format Communication Composition User Interface
Referring now to
Message box 396 may be used by the user to enter his or her message any desired communications format or protocol that the system is capable of handling. For example, a text message may be entered by activating icon 397 and using an on-screen keyboard or the like. Alternately, an audio message or a video message may be recorded by activating the other icons across the top row of message box 396. Once the message has been composed in the desired format, the user may utilize the row of icons 398 across the bottom of message box 396 to select the desired delivery protocol for the outgoing communication. As shown in
The selection of the “Optimal” delivery option may have several possible implementations. The selection of output message format and protocol may be based on, e.g., the format of the incoming communication, the preferred format or protocol of the recipient and/or sender of the communication (e.g., if the recipient is an ‘on-network’ user who has set up a user profile specifying preferred communications formats and/or protocols), an optimal format or protocol for a given communication session/message (e.g., if the recipient is in an area with a poor service signal, lower bit-rate communication formats, such as text, may be favored over higher bit-rate communications formats, such as video or voice), and/or economic considerations of format/protocol choice to the recipient and/or sender (e.g., if SMS messages would charge the recipient an additional fee from his or her provider, other protocols, such as email, may be chosen instead).
Other considerations may also go into the determination of an optimal delivery option, such as analysis of recent communication volume, analysis of past communication patterns with a particular recipient, analysis of recipient calendar entries, and/or geo-position analysis. Other embodiments of the system may employ a ‘content-based’ determination of delivery format and/or protocol. For example, if an outgoing message is recorded as a video message, SMS may be de-prioritized as a sending protocol, given that text is not an ideal protocol for transmitting video content. Further, natural language processing (NLP) techniques may be employed to determine the overall nature of the message (e.g., a condolence note) and, thereby, assess an appropriate delivery format and/or protocol. For example, the system may determine that a condolence note should not be sent via SMS, but rather translated into email or converted into a voice message. Thus, the techniques disclosed herein allow communications systems to become ‘message-first,’ as opposed to ‘protocol-first,’ eventually allowing consideration of message protocol to fall away entirely for the sender of the communication.
Another beneficial aspect of the multi-protocol, multi-format communication composition system described herein is the ability to allow the user to send one message to the same recipient in multiple formats and/or via multiple protocols at the same time (or with certain formats/protocols time delayed). Likewise, the multi-protocol, multi-format communication composition system also allows the user the ability to send one message to multiple recipients in multiple formats and/or via multiple protocols. The choice of format/protocol for the outgoing message may be made by either the system (i.e., programmatically) or by the user, e.g., by selecting the desired formats/protocols via the user interface of the multi-protocol, multi-format communication composition system.
When the user desires to transmit a user-generated message, e.g., via the exemplary user interface of
User Interface-Driven Search Query Generation
After some amount of time, the client device may poll the in box feed application to determine whether there is a new UI displaying on the client device (Step 525). If there is a new UI being displayed on the client device, the process 500 may return to Step 505 so that the client application may create and send a new query to the central communications system server based on the currently-displayed UI. If, instead, there is not a new UI being displayed on the client device, the client application may determine whether a given time interval, t, has passed since the last query that was sent to the central communications system server (Step 530). If the time interval, t, has not passed since the last time the UI was updated, the client application may simply return to Step 525 and continue to poll the in box feed application to determine whether there is a new UI displaying on the client device. If, instead, the time interval, t, has passed since the last time the UI was updated, the client application may simply return to Step 505 so that the client application may create and send a new query to the central communications system server based on the currently-displayed UI. It is to be understood that the exemplary method shown in flowchart 500 may also be achieved by use of a “push-based” system, too, wherein the in box feed application may push information to the client device periodically without the need for the client device to poll the server.
Intelligent Suppression or “Intelligent Snoozing” of Incoming Communication Notifications
Often, a user of a communication system may receive one (or a plurality) of new messages from a Sender or Senders. Sometimes, the user may not wish to view, reply, or otherwise act on that message at the time of receipt and, therefore, may select to “snooze” that message (or all communications from a particular Sender or Senders), so as to remove messages(s) from active in box view until a particular condition or conditions is met. The condition may be, e.g., a simple time-based delay, such as a delayed viewing after ten minutes have passed since the message was sent. The condition may also be based on the user's location. For example, a user may wish to snooze all messages (e.g. SMS text, voice, email, etc.) from a sender, until the user is no longer driving, has arrived at home or work, etc. Yet, another example may be device-specific. For example, messages from a particular Sender(s) may be “snoozed” until the user connects to the communication system using a different device, e.g., a device that may be more appropriate for responding to the Sender's messages.
Participant 710 objects represent an “on-network” or “off-network” users. Participant 710 objects correspond to any people identified in the traditional email format fields of “To,” “From,” “Cc,” and “Bcc.” However, the Participant 710 objects are not limited to this, as a Participant 710 may be any user engaged in the conversation, and is relational to the service being used as the underlying communication protocol.
Service Identifier 705 object represents the service utilized by a single Participant 710 object in the delivery of a format over a communication protocol. For each “To”, “From,” “Cc,” and “Bcc” associated with a message, there is a Participant 705 object containing a Service Identifier 705 indicating which service was used as the underlying format and communication protocol. The Service Identifier include data related to the delivery of the message, including the type of the service, and the address. In the case of an SMS text message, a Service Identifier 705 object would have the type of “sms” and the address would be respective telephone number. The Service Identifier 705 object implies a format and communication protocol unique to that indicated service.
Message Unique 715 is the representation format and communication protocol specific format for a message. For every message sent using the Optimal delivery method, one or more Message Unique 715 objects may be instantiated. Message Unique 715 objects contain the format and communication protocol specific data gathered during the Optimal delivery process. For example, time stamps of sent and received, based on the communication protocol are stored in the object. Additionally, in instances where the format and communication protocol are limited in some fundamental way, e.g. TWITTER® messages limited to 140 characters and SMS text message 160 character limit, it may be necessary to send multiple messages across these communication protocols to fully convey the Sender's intended message. For this purpose, multiple Message Unique 715 objects would be instantiated to track the transmitted content.
The Message Common 720 object is the message that an “on-network” user views in their in box feed. For every user message sent, there are common components present in all formats and communication protocols. For efficiency, these common components are extracted and contained in one object. Because of this efficiency, there is one Message Common 720 object for every message sent by the Sender. For example, the Message Common 720 object may store the body of the message, as well as the time sent at the moment the Sender selects ‘send,’ not the ‘sent time’ as reported by the underlying communication protocol. This has the advantage of presenting one view to the Sender and recipient(s), while resolving minor discrepancies from the underlying communication protocol.
The Message Source 725 object is a representation of the Message Unique 715 object in a Javascript object notation (JSON) format. The Message Source 725 object has a one to one relationship with the Message Unique 715 object.
Message Group 730 object is a representative identifier that coordinates a Message Common 720 object. The purpose of a Message Group 730 object is to enable multi-protocol communication and establish a relationship between those messages. There is a one to one relationship between the Message Group 730 object and the Message Common 720 object.
As multiple multi-protocol communication messages are being represented in this data model, it enables the system to truly facilitate a multi-protocol multi-format communication system. The system tracks each conversation by the Message Group 730 object relating to the Message Common 720 and then all the individual Message Unique 715 objects that relate to the Message Common 720.
The flowchart 800 begins with the receiving a message 805 from a sender. The message is format-agnostic and may, e.g., be received as text, voice, image, or video. Upon reception, the message may be converted into a UMO Message Unique 715 for processing. Generally, the conversion of the message would result in a Message Common 720, as well as at least one Message Unique 715 initially. Additionally, at least two Participant 710 objects, i.e., the sender and receiver, would be extracted from this received message as well. Additional Participant 710 objects may be instantiated based on whom the message was delivered.
Upon receiving the message 805, it is determined if there is already a rule in place 810 to handle the message from that specific sender, e.g., a rule to suppress the notification of the incoming message from the specific sender to the user. As implemented, this may be a lookup for a rule set in a table or other data storage representation. A rule, as used herein, comprises a representation of conditional expressions pertaining to an individual sender or group of senders. A rule may pertain to an identified individual sender or group of senders, and may be evaluated at the point when any incoming communication from any protocol is received. Additionally, the conditional expression may comprise a conditional syntax, including, e.g., a Boolean condition. In higher level pseudocode, a conditional syntax could comprise “if-then-else” keywords. The Boolean conditions may be a single Boolean expression or multiple Boolean expressions that may be joined together by logical operators such as ‘AND’ ‘OR,’ or ‘XOR.’
If a rule pertaining to that specific sender is in place, the message notifications for that sender may be suppressed 815. When the rule pertains to a group of senders, for example, in an ongoing multi-party conversation, the Message Group 730 Object may be utilized to correlate all relevant Participant 710 objects for which the rule applies. This allows the suppression of any messages in a group communication from one or more senders in a chain or “thread” of communications.
If a rule is not in place, a message notification may be presented to the user, including the option to input a conditional expression. Upon selection, a conditional expression is received 820 by the system. Alternatively, the system may automatically generate a conditional expression. However, the conditional expression need not always be based on the received message. In UMO terms from
Once a new conditional expression has been received, it may be added to the rules 825. This allows for the storage of new rules and for rule sets to be conveniently stored and evaluated—without prompting the user or repeated system generation of possibly duplicate conditional expressions.
Once the conditional expression has been added to the rules, to the process may then evaluate whether the condition has been met 830. This is the application of the rule to verify if the “Intelligent Snooze” of the user's notifications regarding incoming messages from Sender(s) has been lifted. This evaluation may be done with a single conditional expression or combinatory conditional expressions. For example, a Sender may be Intelligently Snoozed until the user is geo-located at home, and the time is after 9 P.M.
If the conditional expressions in the rule are not met, the flow repeats, returning to 805. In other words, when the conditional expressions in the rules have not been met, incoming messages from that Sender may continue to be “snoozed.”
If the conditional expressions in the rule have been met, on the other hand, the flow may then release all suppressed notifications 835 from that sender to the user. Effectively, the “snooze” has been lifted, and the user may again begin to receive messages and/or notifications from the sender in his in box feed. Alternatively, the flow may releases one notification that is an aggregate of some or all of the previously-suppressed messages and/or notifications.
The following examples pertain to further embodiments. Example 1 is a non-transitory computer readable medium comprising computer executable instructions stored thereon to cause one or more processing units to receive a first message from a sender; apply a conditional expression to the first message; suppress a notification of the receipt of the first message based, at least in part, on the conditional expression not being met for the first message; and for each subsequently received message from the sender: apply the conditional expression to the respective subsequently received message from the sender; and suppress a notification of the receipt of the respective subsequently received message based, at least in part, on the conditional expression not being met for the respective subsequently received message; and release a notification of the receipt of the first message and each subsequently received message based, at least in part, on the conditional expression being met for a first subsequently received message from the sender.
Example 2 includes the subject matter of example 1, the conditional expression pertains to the sender.
Example 3 includes the subject matter of example 2, wherein the conditional expression comprises requirements based on at least one of the following: geo-location, time, calendar entries, device usage, and device activation.
Example 4 includes the subject matter of example 1, wherein the release of the notification of the receipt of the first message and each subsequently received message further comprises at least one of the following: displaying a notification of the receipt of the first message; displaying an aggregate notification for each subsequently received message; and displaying a separate notification for each subsequently received message.
Example 5 includes the subject matter of example 1, wherein the instructions to apply the conditional expression further comprise instructions to apply a predictive time-based data model.
Example 6 includes the subject matter of example 1, wherein the instructions to apply the conditional expression further comprise instructions to evaluate the conditional expression against one or more senders or recipients in a group communication.
Example 7 includes the subject matter of example 2, wherein the conditional expression comprises at least one of the following: a single Boolean expression; and multiple Boolean expressions joined together by logical operators.
Example 8 is an apparatus, comprising: a display; a memory; and one or more processing units, communicatively coupled to the memory, wherein the memory stores instructions to configure the one or more processing units to receive a first message from a sender; apply a conditional expression to the first message; suppress a notification of the receipt of the first message based, at least in part, on the conditional expression not being met for the first message; and for each subsequently received message from the sender: apply the conditional expression to the respective subsequently received message from the sender; suppress a notification of the receipt of the respective subsequently received message based, at least in part, on the conditional expression not being met for the respective subsequently received message; and release a notification of the receipt of the first message and each subsequently received message based, at least in part, on the conditional expression being met for a first subsequently received message from the sender.
Example 9 includes the subject matter of example 8, wherein the conditional expression pertains to the sender.
Example 10 includes the subject matter of example 9, wherein the conditional expression comprises requirements based on at least one of the following: geo-location, time, calendar entries, device usage, and device activation.
Example 11 includes the subject matter of example 8, wherein the release of the notification of the receipt of the first message and each subsequently received message further comprises at least one of the following: displaying a notification of receipt for the first message; displaying an aggregate notification for each subsequently received messages; and displaying a separate notification for each subsequent received message.
Example 12 includes the subject matter of example 8, wherein the instructions to apply the conditional expression further comprise instructions to apply a predictive time-based data model.
Example 13 includes the subject matter of example 12, wherein the instructions to apply the conditional expression further comprise instructions to evaluate the conditional expression against one or more senders or recipients in a group communication.
Example 14 includes the subject matter of example 8, wherein the conditional expression comprises at least one of the following: a single Boolean expression; and multiple Boolean expressions joined together by logical operators.
Example 15 is a computer-implemented method of communicating digital information, comprising: receiving a first message from a sender; applying a conditional expression to the first message; suppressing a notification of the receipt of the first message based, at least in part, on the conditional expression not being met for the first message; and for each subsequently received message from the sender: applying the conditional expression to the respective subsequently received message from the sender; and suppressing a notification of the receipt of the respective subsequently received message based, at least in part, on the conditional expression not being met for the respective subsequently received message; and releasing a notification of the receipt of the first message and each subsequently received message based, at least in part, on the conditional expression being met for a first subsequently received message from the sender.
Example 16 includes the subject matter of example 15, wherein the conditional expression pertains to the sender.
Example 17 includes the subject matter of example 16, wherein the conditional expression comprises requirements based on at least one of the following: geo-location, time, calendar entries, device usage, and device activation.
Example 18 includes the subject matter of example 16, wherein the releasing of the notification of the receipt of the first message and each subsequently received message further comprises at least one of the following: displaying a notification of the receipt of the first message; displaying an aggregate notification for each subsequently received message; and displaying a separate notification for each subsequently received message.
Example 19 includes the subject matter of example 15, wherein the act of applying the conditional expression further comprises evaluating the conditional expression against one or more senders or recipients in a group communication.
Example 20 includes the subject matter of example 16, wherein the conditional expression comprises at least one of the following: a single Boolean expression; and multiple Boolean expressions joined together by logical operators.
In the foregoing description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the disclosed embodiments. It will be apparent, however, to one skilled in the art that the disclosed embodiments may be practiced without these specific details. In other instances, structure and devices are shown in block diagram form in order to avoid obscuring the disclosed embodiments. References to numbers without subscripts or suffixes are understood to reference all instance of subscripts and suffixes corresponding to the referenced number. Moreover, the language used in this disclosure has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter, resort to the claims being necessary to determine such inventive subject matter. Reference in the specification to “one embodiment” or to “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least one disclosed embodiment, and multiple references to “one embodiment” or “an embodiment” should not be understood as necessarily all referring to the same embodiment.
It is also to be understood that the above description is intended to be illustrative, and not restrictive. For example, above-described embodiments may be used in combination with each other and illustrative process steps may be performed in an order different than shown. Many other embodiments will be apparent to those of skill in the art upon reviewing the above description. The scope of the invention therefore should be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. In the appended claims, terms “including” and “in which” are used as plain-English equivalents of the respective terms “comprising” and “wherein.”
This application is a continuation-in-part to the commonly-assigned and co-pending nonprovisional patent application having U.S. patent application Ser. No. 14/168,815, filed Jan. 30, 2014, and entitled, “Apparatus and Method for Multi-Format Communication Integration” (“the '815 application”). The '815 application is also hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
Parent | 14168815 | Jan 2014 | US |
Child | 14985820 | US |