Disclosed in some examples are methods, systems, machine-readable mediums that provide for multiple concurrent message input elements in a messaging application to allow for saved draft messages. The improved interfaces allow a user to compose separate, respective responses to multiple incoming messages of a same messaging thread. As noted, the current messaging user interface (UI) only allows users to compose a response to a single message of a same messaging thread. In the present disclosed interface, if during composition of a “reply” to message A, and a user decides to first reply to message B, the in-process reply message is saved in a separate selectable input element. The user may edit and send the reply to message A at a later time—e.g., once they are done replying to message B. In some examples, the separate selectable input element may be positioned in the thread in a manner to indicate that it is a draft reply message and to which message it is a reply.

TECHNICAL FIELD

Embodiments pertain to communication systems. Some embodiments relate to messaging communication systems.

BACKGROUND

Network-based messaging tools such as instant messaging (IM) allow users to communicate using one or more persistent asynchronous conversations between two or more users or groups of users. These conversations may be organized into threads by users. A thread, also known as a message thread, conversation thread, or chat thread is a sequence of related messages or posts within a messaging application that are grouped together to form a single ongoing conversation. Messages of a thread may pertain to a particular topic and may include a defined group of participants.

These messaging tools may be found as stand-alone communications applications or integrated into other applications such as unified communication applications. A unified communication application is a software platform that integrates various communication tools, such as messaging, voice and video calls, file sharing, and collaboration features, into a single, cohesive interface. It enables users to streamline their communication efforts by utilizing all these tools from one place, improving productivity and collaboration. Additionally, the unified communication applications may include features like presence indicators, calendar scheduling, and integrations with other productivity apps to enhance a user's communications.

DETAILED DESCRIPTION

Traditional messaging applications do not provide a specific way to “reply” to a particular message as new messages are simply posted to the end of the conversation. In response to this limitation, users developed a custom in which a user would copy the contents of an already posted message and paste it into the body of their message to indicate that the user's message is a reply to the already posted message. Recent communication applications have adopted this strategy and provided a “reply” functionality that automatically copies the message that the user is replying to in the message composition input element. The reply is then posted at the end of the thread.

FIG.1illustrates a Graphical User Interface (GUI)100of a messaging application according to some examples of the present disclosure. The GUI illustrates a messaging thread with a title “Client Team Chat A” in a title area105of a title bar110of the messaging thread. Title bar110may include a number of controls115, such as controls to launch a video call with thread members, an audio call with thread members, content sharing with thread members, adding additional thread members, a control to pop-out the messaging to an external interface and the like. A first message in the thread from James Nelson arrives at 10:01 AM and is displayed in a message display element120. Message display element120may be a bubble, a box, or other UI element that demarcates the message from other messages in a message thread.

Message composition input element125allows users to enter and edit messages for posting into the currently displayed messaging thread where it would be displayed in a message display element. Posting a message in a message thread makes the message available to participants of the message thread. The message is made available by either sending it to the participants for display in their communication applications or by updating a data structure at a communication server which may then be propagated to the communication applications to display the message. As used herein, an input element, such as the message composition input element or a selectable draft reply message composition input element may encompass user interface components that allow users to create and/or edit a message by providing user input. Example input elements may include text boxes, dropdown menus, checkboxes, radio buttons, and the like.

Message sent by the user of the GUI100may be displayed on the GUI100of that user in a position to indicate that it was sent by the user. That is, a message sent by the user may be shown differently than messages from other users. For example, rather than being left-justified or aligned like messages sent from other users, the messages posted to the conversation by the user of GUI100may be right-justified or aligned in a fashion that visually represents a back-and-forth conversation. Message composition input element125may include a toolbar130with message formatting options, such as text formatting tools, emoji insertion options, content insertion options, and the like. Send button135posts the message to the conversation thread.

To reply to a message, a user may hover their cursor or otherwise select the message display element120to show a reaction toolbar140where users may leave a reaction such as a like, love, or other reaction. Reactions in a message thread are brief, expressive interactions where users use icons, emojis, or emoticons to convey their emotional responses or opinions to a message. Reactions may be shown as icons to other users above, below, or near the message. Reactions enable users to provide quick feedback or show their sentiments in a visually succinct manner. In addition, the reaction toolbar may include an ellipses, which when selected, displays another menu145with an option to reply150. In other examples, the reply button may be on the reaction toolbar140itself. In still other examples, the reply button may be within the message display element120(e.g., at the right hand side).

FIG.2illustrates a GUI200that is the GUI100ofFIG.1after the selection of the option to reply is selected according to some examples of the present disclosure. A copy of the message from message display element120is placed in the message composition input element225inline to the reply. Upon posting the reply, the reply message entered into the message composition input element225, along with the copy of the message from the message display element120may be posted at the end of the conversation thread as a new message.

While a user is articulating a reply to a first message shown in message display element120, other messages may be posted into the messaging thread. This is illustrated inFIG.2with the posting of a message from Diane Jennings as depicted in the message display element240. The user may decide that it may be beneficial to reply to this message first, such as to correct a misconception with the third user's message before other users jump into the conversation.FIGS.3and4show GUIs300and400that illustrate what happens if the user, in the middle of formulating a first reply, such as a reply to the message shown in message display element120, again engages the reaction toolbar340, and selects the ellipses to bring up menu345and selects option350to reply while a reply is already in progress.FIG.4illustrates the message composition input element425with a copy of the first message230, a draft reply415, a copy of the second message435, and a draft440of a reply to the second message. If the user posts the message, it is posted at the end of the messaging thread as shown in the message composition input element425.

Another option for the above situation is to delete the first draft reply and then reply to the new message. This means that the first user may have to start over by re-drafting the message or else copy and paste the draft message into another application such as a notepad or word processing application and then copy and paste the draft back into the message send box.

Disclosed in some examples are methods, systems, machine-readable mediums that provide for multiple concurrent message input elements in a messaging application to allow for saved draft messages. The improved interfaces allow a user to compose separate, respective responses to multiple incoming messages of a same messaging thread. As noted, the current messaging user interface (UI) only allows users to compose a response to a single message of a same messaging thread. In the present disclosed interface, if during composition of a “reply” to message A, and a user decides to first reply to message B, the in-process reply message is saved in a separate selectable input element. The user may edit and send the reply to message A at a later time—e.g., once they are done replying to message B. In some examples, the separate selectable input element may be positioned in the thread in a manner to indicate that it is a draft reply message and to which message it is a reply.

FIG.5illustrates an improved messaging GUI500according to some examples of the present disclosure. A user, having started a reply to message shown in message display element120, as inFIG.3, may then, prior to posting the reply, reply to another message, such as a message shown in message display element240. Instead of having both messages inside a same message as inFIG.4, the system recognizes that a draft of a pending message is ongoing when the system senses the reply to the second message and instead of concatenating both replies inside a same message, the system saves the draft of the pending message and then creates a new draft of the later, second reply message. The saved draft reply message may be displayed in a selectable draft reply message composition input element520. The selectable draft reply message composition input element may include the same functionality as the message composition input element that may allow users to draft, edit, and format a response; attach media; attach emojis; and post messages. The selectable draft reply message composition input element520may be displayed in a fashion that indicates it is related to the message to which it is a reply—that is the message represented by message display element120. In the example ofFIG.5, the selectable draft reply message composition input element520is put immediately below and offset of the original message in the message display element120. Other example layouts may be utilized, for example, one or more icons may be appended to, or included in the message display element120that may be selected to show or hide the selectable draft reply message composition input element520. For example, a bubble belown the message may indicate “1 pending draft reply” with an arrow that shows or hides the draft reply. Selectable draft reply message composition input element520may be selected by a user in which case the UI focus is directed toward the selectable draft reply message composition input element and entered text of the user is directed toward the draft reply message allowing a user to create and/or edit the reply message.

Selectable draft reply message composition input element520may include the toolbar540and the send button545, which may be a same toolbar and send button functionality as provided in toolbar530and535of the message composition input element525(as described inFIG.1). In some examples, the message composition input element525is still used for entering the reply messages as inFIG.2, however, the selectable draft reply message composition input element:520stores uncompleted draft reply messages that are ongoing when the user enters a new reply. That is, the ongoing reply is moved from the message composition input element525to a selectable draft reply message composition input element520when the user replies to another message. In further examples, additional selectable draft reply message composition input elements may be created as the user selects additional messages to reply to before sending one of the previous replies. In some examples, an additional button may be added to the message composition input element525to save a message as a draft. For reply messages, the draft reply message composition input element520may store the draft. For regular draft messages that are not replies, a draft reply message composition input element may be utilized to save a draft message that is not a reply to a specific message, but simply a new message to the thread.

Users may switch between editing messages in either the message composition input element525and the various selectable draft reply message composition input elements by clicking on, tapping on, or otherwise selecting the desired composition input area. This allows users to switch back and forth between draft messages.

The present disclosure thus solves a technical problem whereby users wishing to reply to a later delivered message whilst replying to a previous message must utilize a separate application to temporarily store the first draft reply message. This usage wastes computing resources as the application utilizes memory and processing resources. This technical problem is solved with the technical solution of storing multiple reply messages that a user may come back to later. This has the technical effect of reducing the processor load and decreasing the amount of memory required by removing the necessity of another application to save the intermediate draft. In addition, it achieves the technical effect of improved user efficiency and usability and increased user interaction performance.

In other examples, rather than utilizing the message composition input element to reply to the message, and then generating a selectable draft reply message composition input element if another reply is started prior to posting the first reply, the system may utilize selectable draft reply message composition input elements directly. That is, a selectable draft reply message composition input element may be created upon replying to a message in the first instance and any reply message may be entered into selectable draft reply message composition input elements. The message composition input element may be limited to posting of new messages (not reply messages) in the thread.

FIG.6shows an example GUI600where a user has started a first reply to a message shown in message display element120. This reply is contained in a selectable draft reply message composition input element620, which includes a copy of the message the user is replying to as well as a toolbar640for formatting the message, inserting emojis, and the like. In addition a post button645may post the reply message to the thread. In addition inFIG.6, the user has additionally started a reply to a second message shown in message display element240and that reply is contained in a second selectable draft reply message composition input element622. Second selectable draft reply message composition input element622may also include the toolbar648, which is a same toolbar as640, but only operating on the second draft reply. Similarly, post button650may be selectable to post the second reply message to the communication thread. Users may select the selectable draft reply message composition input element620to edit the draft reply to the message shown in message display element120and select the second selectable draft reply message composition input element622to edit the draft reply to the message shown in message display element240. Users may go back and forth editing each message at their leisure by selecting each element.

As noted, the reply messages may be posted at the end of the communication thread. In other examples, the reply messages may be posted after the message that they are replying to. In these examples, the reply message may be indented from the message that they are replying to.

FIG.7illustrates a schematic700of a communication system according to some examples of the present disclosure. Client devices710,712, and714execute client communication applications that, along with a communication service application that executes on communication server718provides a communication service, such as a unified communication service, whereby client devices710,712, and714may communicate, over network716, with one another and with other devices not shown inFIG.7. Communications may include messaging communications in which text messages, files, videos, and other content may be shared. Such content may be posted as described with respect to the GUIs shown inFIGS.1-6. In some examples, the communications service may be a unified communications service that also provides voice and/or video calling and online meetings. Network716may be or include a Local Area Network (LAN), Wide Area Network (WAN), the Internet, an Intranet, or the like.

FIG.8illustrates an example communication application and data structures for one or more communication threads according to some examples of the present disclosure. Communication application810may include a variety of components, implementing a variety of functionality to provide network-based communication capability such as text messaging, file sharing, video calling, video communications, audio communications, and the like. Communication application810may provide user interfaces for message viewing and composition; provide for user authentication; notification management, and message storage. Communication application810may communicate with a messaging server, which may provide for message routing, message delivery, user management, message storage, encryption, and other functions. In some examples, the communication application includes a communication control component814which provides for sending and receiving communications, such as messages, files, video, audio, screensharing, and the like. For example, using one or more communication protocols such as Session Initiation Protocol, HyperText Transfer Protocol (HTTP), Real-Time Transport Protocol (RTP) and the like.

Communication application810may include a graphical user interface component816, which may provide one or more GUIs that allow a user to interface with the communication application810, including sending and receiving communications and displaying the communications. GUI component may implement one or more GUIs such as those shown inFIGS.1-6.

The communications control component814may utilize one or more memory data structures in providing messaging communications. One such data structure may be a message thread pointer812that identifies a location of a plurality of data structures that store information on message threads of the user, such as message threads data structure818. As used herein a pointer may identify the location of a data structure or other variable in volatile memory, non-volatile memory, a network location (e.g., such as a URL), and the like. In some examples, the message threads data structures may be arranged as a linked list, an array, or the like. In examples in which the data structures are arranged as linked lists, the various pointers of the list are not shown for clarity and ease of description. Each message threads data structure818may identify (e.g., contain, point to, or otherwise provide a means to locate) a message list822of one or more message data structures—one for each message in the thread, such as message data structure824. Message data structure824may include message content826, a message identifier828, and message metadata830. Message metadata830may include the sender, the time it was sent, reactions to the message entered by users, and the like. Message threads data structure818may also include a draft message list820which may be a list or other data structure with in-progress draft messages. The list may have zero or more message draft data structures. An example message draft data structure832is shown with draft content834—which may include the content of the original message and an identifier836(e.g., message id) of the message that the draft is replying to. In some examples, although not shown, the message draft structure832may include metadata such as the sender, the time the draft was started, a time the draft was last edited, and the like. The message structures shown inFIG.8may be stored locally, and updated by the communications server using one or more commands, or may be stored in the communications server.

In some examples, when a reply message to an existing message is created, a message draft data structure832may be created. When a second reply to an existing message is created, another message draft data structure832is allocated. The first message draft data structure832is maintained and displayed by the GUI component816. When a draft message is sent, a message data structure824may be allocated and filled in, with the draft content834being copied to the message content826. A message identifier828may be allocated that uniquely identifies the new message. Message metadata830may also be determined and recorded. The message draft data structure832may then be deleted once the message draft is sent, or otherwise deleted (e.g., using a delete button or control on the UI).

FIG.9illustrates a flowchart of a method900of providing a messaging thread according to some examples of the present disclosure. At910, the system may provide a GUI of a network-based communication session, such as a messaging application. In some examples, the graphical user interface comprises a first message display element visually presenting a first message of a first communication thread and a message composition input element for entering and posting messages to the first communication thread. For example, message composition input element125,225,425,525; message display element120,240, selectable draft reply message composition input element520, and620.

At operation912, the system may receive an input to reply to a first message in a first communication thread. For example, an input directed at the message display element, such as shown inFIG.1. At operation914, the system may display the first message in the message composition input element, such as shown inFIG.2. In some examples the system may activate message entry in the message composition input element, such as by enabling input on the message composition input element such that text input is directed to the message composition input element.

At operation916, the system may receive a draft reply message, such as a partial reply message, into the message composition input element. The draft reply may be entered using a keyboard, mouse, touchscreen or other input entry mechanism. At operation918, the system may receive an input to reply to a second message of the first communication thread. For example, as shown inFIG.3. In response to the input at operation918, the operations of920,922may be performed. At operation920, the system creates, in the GUI, a first selectable draft message composition input element displaying a representation of the first message and the draft reply message, the first selectable draft message composition input element displayed at a location different than the message composition input element. In some examples the system creates a message draft data structure (e.g., message draft data structure832) with the message contents of the message the user is replying to copied to the draft content. At operation922, the system may replace the display of the representation of the first message and the draft reply message in the message composition input element with a representation of the second message and activate message entry in the message composition input element. Operations920and922are shown, for example, inFIG.5.

At operation924, the system may receive a second draft reply message entered into the message composition input element (e.g., using a keyboard, mouse, touchscreen, or the like), the first selectable draft message composition input element may still be displayed in the GUI as the second draft reply message is entered. At operation926, the system may receive a command selecting the first selectable draft message composition input element, and in response, activating message entry in the first selectable draft message composition input element. In some examples, the draft entered at operation924may be maintained in the message composition input element. For example, the activation of the message entry may be an enabling of input on the draft message composition input element such that text input is directed to the draft message composition input element. For example, enabling of input on element520ofFIG.5. At operation928, the system may receive a command to post the draft reply message and in response, posting the draft reply message in the first communication thread as a reply message to the first message.

FIG.9may be performed by a client communication application, a communication service application on a server of a communication service, or some operations may be performed by the client communication application and some operations may be performed by a communication service application on a server of a communication service.

Examples, as described herein, may include, or may operate on one or more logic units, components, or mechanisms (hereinafter “components”). Components are tangible entities (e.g., hardware) capable of performing specified operations and may be configured or arranged in a certain manner. In an example, circuits may be arranged (e.g., internally or with respect to external entities such as other circuits) in a specified manner as a component. In an example, the whole or part of one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware processors may be configured by firmware or software (e.g., instructions, an application portion, or an application) as a component that operates to perform specified operations. In an example, the software may reside on a machine readable medium. In an example, the software, when executed by the underlying hardware of the component, causes the hardware to perform the specified operations of the component.

Accordingly, the term “component” is understood to encompass a tangible entity, be that an entity that is physically constructed, specifically configured (e.g., hardwired), or temporarily (e.g., transitorily) configured (e.g., programmed) to operate in a specified manner or to perform part or all of any operation described herein. Considering examples in which component are temporarily configured, each of the components need not be instantiated at any one moment in time. For example, where the components comprise a general-purpose hardware processor configured using software, the general-purpose hardware processor may be configured as respective different components at different times. Software may accordingly configure a hardware processor, for example, to constitute a particular module at one instance of time and to constitute a different component at a different instance of time.

Machine (e.g., computer system)1000may include one or more hardware processors, such as processor1002. Processor1002may be a central processing unit (CPU), a graphics processing unit (GPU), a hardware processor core, or any combination thereof. Machine1000may include a main memory1004and a static memory1006, some or all of which may communicate with each other via an interlink (e.g., bus)1008. Examples of main memory1004may include Synchronous Dynamic Random-Access Memory (SDRAM), such as Double Data Rate memory, such as DDR4 or DDR5. Interlink1008may be one or more different types of interlinks such that one or more components may be connected using a first type of interlink and one or more components may be connected using a second type of interlink. Example interlinks may include a memory bus, a peripheral component interconnect (PCI), a peripheral component interconnect express (PCIe) bus, a universal serial bus (USB), or the like.

The machine1000may further include a display unit1010, an alphanumeric input device1012(e.g., a keyboard), and a user interface (UI) navigation device1014(e.g., a mouse). In an example, the display unit1010, input device1012and UI navigation device1014may be a touch screen display. The machine1000may additionally include a storage device (e.g., drive unit)1016, a signal generation device1018(e.g., a speaker), a network interface device1020, and one or more sensors1021, such as a global positioning system (GPS) sensor, compass, accelerometer, or other sensor. The machine1000may include an output controller1028, such as a serial (e.g., universal serial bus (USB), parallel, or other wired or wireless (e.g., infrared (IR), near field communication (NFC), etc.) connection to communicate or control one or more peripheral devices (e.g., a printer, card reader, etc.).

The storage device1016may include a machine readable medium1022on which is stored one or more sets of data structures or instructions1024(e.g., software) embodying or utilized by any one or more of the techniques or functions described herein. The instructions1024may also reside, completely or at least partially, within the main memory1004, within static memory1006, or within the hardware processor1002during execution thereof by the machine1000. In an example, one or any combination of the hardware processor1002, the main memory1004, the static memory1006, or the storage device1016may constitute machine readable media.

OTHER NOTES AND EXAMPLES