Reply back mechanism within a messaging system

Systems, devices, methods and instructions are described for generating and displaying a reply menu within a graphical user interface (GUI). One embodiment involves receiving a selection of messages received at a client device, detecting a reply message generated by the first client device in response to selected messages, generating a reply menu comprising an ordered list of user account identifiers, the user account identifiers representing user accounts, each user account associated with a corresponding selected message, causing display of the reply menu within a GUI, receiving a selection of a subset of user account identifiers from the reply menu, initiating independent communication sessions with the selected subset of user account identifiers and transmitting the reply message via independent communication sessions.

TECHNICAL FIELD

Embodiments of the present disclosure relate generally to mobile computing technology, and, but not by way of limitation, to systems for generating and displaying a reply back menu within a messaging system at a client device.

BACKGROUND

Social media applications allow users to communicate quickly and efficiently.

DETAILED DESCRIPTION

Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present subject matter. Thus, the appearances of the phrase “in one embodiment” or “in an embodiment” appearing in various places throughout the specification are not necessarily all referring to the same embodiment.

For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the present subject matter. However, it will be apparent to one of ordinary skill in the art that embodiments of the subject matter described may be practiced without the specific details presented herein, or in various combinations, as described herein. Furthermore, well-known features may be omitted or simplified in order not to obscure the described embodiments. Various examples may be given throughout this description. These are merely descriptions of specific embodiments. The scope or meaning of the claims is not limited to the examples given.

In some cases, users may be overwhelmed by the number of interactions or messages from friends or followers. Thus, there is a need to provide users with an efficient mechanism within social media applications which allow users to reply to large numbers of interactions or messages while providing users with a positive social media experience.

Aspects of the present disclosure describe a reply menu generation system for generating and displaying a reply menu within a messaging system at a client device. For example, the reply menu generation system receives messages from user accounts of a social media application at a client device. A user of the reply menu generation system selects the received messages for viewing at the client device. The system accesses a reply message in response to the received message from the client device. In response to accessing the reply message, the reply menu generation system causes display of a send page user interface. The send page user interface includes a reply menu, which consists of an ordered list of usernames. The usernames correspond to user accounts that sent the previously received messages. In some examples, the usernames are qualified to be listed within the reply menu only if they were selected for display within a pre-determined time period. For example, if a received message was seen and left on “read” (e.g., a user has not responded to the received message within a pre-determined amount of time), then the username associated with that received message is listed within the reply menu. Thus, the reply menu lists users whose messages have been left on “read” by a user of the reply menu generation system (e.g., the user who has viewed the received messages, but not yet replied).

The reply menu may be displayed within a portion of the send page. In some embodiments the placement of the reply menu within the send page is based on the number of usernames qualified to be listed within the reply menu. The system receives a selection of one or more usernames within the reply menu. In response to the selection, the system transmits the reply message to user accounts associated with the selected usernames. In some examples, the user accounts are social media accounts. Transmitting the reply message may cause the system to initiate independent communication sessions between the client device and client devices associated with each of the selected user accounts.

FIG.1is a block diagram showing an example messaging system100for exchanging data (e.g., messages and associated content) over a network. The messaging system100includes multiple instances of a Client device102, each of which hosts a number of applications including a messaging client application104. Each messaging client application104is communicatively coupled to other instances of the messaging client application104and a messaging server system108via a network106(e.g., the Internet).

A messaging client application104is able to communicate and exchange data with another messaging client application104and with the messaging server system108via the network106. The data exchanged between messaging client application104, and between a messaging client application104and the messaging server system108, includes functions (e.g., commands to invoke functions) as well as payload data (e.g., text, audio, video or other multimedia data).

The messaging server system108provides server-side functionality via the network106to a particular messaging client application104. While certain functions of the messaging system100are described herein as being performed by either a messaging client application104or by the messaging server system108, the location of certain functionality either within the messaging client application104or the messaging server system108is a design choice. For example, it may be technically preferable to initially deploy certain technology and functionality within the messaging server system108, but to later migrate this technology and functionality to the messaging client application104where a Client device102has a sufficient processing capacity.

The Application Program Interface (API) server110receives and transmits message data (e.g., commands and message payloads) between the Client device102and the application server112. Specifically, the Application Program Interface (API) server110provides a set of interfaces (e.g., routines and protocols) that can be called or queried by the messaging client application104in order to invoke functionality of the application server112. The Application Program Interface (API) server110exposes various functions supported by the application server112, including account registration, login functionality, the sending of messages, via the application server112, from a particular messaging client application104to another messaging client application104, the sending of media files (e.g., images or video) from a messaging client application104to the messaging server application114, and for possible access by another messaging client application104, the setting of a collection of media data (e.g., story), the retrieval of a list of friends of a user of a Client device102, the retrieval of such collections, the retrieval of messages and content, the adding and deletion of friends to a social graph, the location of friends within a social graph, and opening an application event (e.g., relating to the messaging client application104).

The application server112also includes an image processing system116that is dedicated to performing various image processing operations, typically with respect to images or video received within the payload of a message at the messaging server application114.

The social network system122supports various social networking functions services and makes these functions and services available to the messaging server application114. To this end, the social network system122maintains and accesses an entity graph304(as shown inFIG.3) within the database120. Examples of functions and services supported by the social network system122include the identification of other users of the messaging system100with which a particular user has relationships or is “following”, and also the identification of other entities and interests of a particular user.

The reply menu generation system124is configured to generate and cause display of a reply menu within the messaging server application114on a client device. The reply menu generation system124consists of an ordering system for determining the order of usernames listed in the reply menu and a menu placement system for determining the placement of the reply menu within a send page user interface. The reply menu generation system124is communicatively coupled to the messaging server application114and the social network system122, which facilitates transmission of a reply message to selected user accounts. Further details regarding the reply menu generation system124are described below in connection withFIGS.6-10.

The application server112is communicatively coupled to a database server118, which facilitates access to a database120in which is stored data associated with messages processed by the messaging server application114.

FIG.2is block diagram illustrating further details regarding the messaging system100, according to example embodiments. Specifically, the messaging system100is shown to comprise the messaging client application104and the application server112, which in turn embody a number of some subsystems, namely an ephemeral timer system202, a collection management system204and an annotation system206.

The ephemeral timer system202is responsible for enforcing the temporary access to content permitted by the messaging client application104and the messaging server application114. To this end, the ephemeral timer system202incorporates a number of timers that, based on duration and display parameters associated with a message, or collection of messages (e.g., a story), selectively display and enable access to messages and associated content via the messaging client application104. Further details regarding the operation of the ephemeral timer system202are provided below.

The collection management system204furthermore includes a curation interface208that allows a collection manager to manage and curate a particular collection of content. For example, the curation interface208enables an event organizer to curate a collection of content relating to a specific event (e.g., delete inappropriate content or redundant messages). Additionally, the collection management system204employs machine vision (or image recognition technology) and content rules to automatically curate a content collection. In certain embodiments, compensation may be paid to a user for inclusion of user-generated content into a collection. In such cases, the curation interface208operates to automatically make payments to such users for the use of their content.

In one example embodiment, the annotation system206provides a user-based publication platform that enables users to select a geolocation on a map, and upload content associated with the selected geolocation. The user may also specify circumstances under which a particular media overlay should be offered to other users. The annotation system206generates a media overlay that includes the uploaded content and associates the uploaded content with the selected geolocation.

In another example embodiment, the annotation system206provides a merchant-based publication platform that enables merchants to select a particular media overlay associated with a geolocation via a bidding process. For example, the annotation system206associates the media overlay of a highest bidding merchant with a corresponding geolocation for a predefined amount of time.

FIG.3is a schematic diagram illustrating data structures300which may be stored in the database120of the messaging server system108, according to certain example embodiments. While the content of the database120is shown to comprise a number of tables, it will be appreciated that the data could be stored in other types of data structures (e.g., as an object-oriented database).

The database120includes message data stored within a message table314. The entity table302stores entity data, including an entity graph304. Entities for which records are maintained within the entity table302may include individuals, corporate entities, organizations, objects, places, events, etc. Regardless of type, any entity regarding which the messaging server system108stores data may be a recognized entity. Each entity is provided with a unique identifier, as well as an entity type identifier (not shown).

The entity graph304furthermore stores information regarding relationships and associations between entities. Such relationships may be social, professional (e.g., work at a common corporation or organization) interested-based or activity-based, merely for example.

The database120also stores annotation data, in the example form of filters, in an annotation table312. Filters for which data is stored within the annotation table312are associated with and applied to videos (for which data is stored in a video table310) or images (for which data is stored in an image table308) or both videos and images. Filters, in one example, are overlays that are displayed as overlaid on an image or video during presentation to a recipient user. Filters may be of varies types, including user-selected filters from a gallery of filters presented to a sending user by the messaging client application104when the sending user is composing a message. Other types of filters include geolocation filters (also known as geo-filters) which may be presented to a sending user based on geographic location. For example, geolocation filters specific to a neighborhood or special location may be presented within a user interface by the messaging client application104, based on geolocation information determined by a GPS unit of the Client device102. Another type of filer is a data filer, which may be selectively presented to a sending user by the messaging client application104, based on other inputs or information gathered by the Client device102during the message creation process. Example of data filters include current temperature at a specific location, a current speed at which a sending user is traveling, battery life for a Client device102, or the current time.

Other annotation data that may be stored within the image table308are augmented reality content items (e.g., corresponding to applying Lenses or augmented reality experiences). An augmented reality content item may be a real-time special effect and sound that may be added to an image or a video.

As described above, augmented reality content items, overlays, image transformations, AR images and similar terms refer to modifications that may be made to videos or images. This includes real-time modification which modifies an image as it is captured using a device sensor and then displayed on a screen of the device with the modifications. This also includes modifications to stored content, such as video clips in a gallery that may be modified. For example, in a device with access to multiple augmented reality content items, a user can use a single video clip with multiple augmented reality content items to see how the different augmented reality content items will modify the stored clip. For example, multiple augmented reality content items that apply different pseudorandom movement models can be applied to the same content by selecting different augmented reality content items for the content. Similarly, real-time video capture may be used with an illustrated modification to show how video images currently being captured by sensors of a device would modify the captured data. Such data may simply be displayed on the screen and not stored in memory, or the content captured by the device sensors may be recorded and stored in memory with or without the modifications (or both). In some systems, a preview feature can show how different augmented reality content items will look within different windows in a display at the same time. This can, for example, enable multiple windows with different pseudorandom animations to be viewed on a display at the same time.

Data and various systems using augmented reality content items or other such transform systems to modify content using this data can thus involve detection of objects (e.g., faces, hands, bodies, cats, dogs, surfaces, objects, etc.), tracking of such objects as they leave, enter, and move around the field of view in video frames, and the modification or transformation of such objects as they are tracked. In various embodiments, different methods for achieving such transformations may be used. For example, some embodiments may involve generating a three-dimensional mesh model of the object or objects and using transformations and animated textures of the model within the video to achieve the transformation. In other embodiments, tracking of points on an object may be used to place an image or texture (which may be two dimensional or three dimensional) at the tracked position. In still further embodiments, neural network analysis of video frames may be used to place images, models, or textures in content (e.g., images or frames of video). Augmented reality content items thus refer both to the images, models, and textures used to create transformations in content, as well as to additional modeling and analysis information needed to achieve such transformations with object detection, tracking, and placement.

As mentioned above, the video table310stores video data which, in one embodiment, is associated with messages for which records are maintained within the message table314. Similarly, the image table308stores image data associated with messages for which message data is stored in the entity table302. The entity table302may associate various annotations from the annotation table312with various images and videos stored in the image table308and the video table310.

FIG.4is a schematic diagram illustrating a structure of a message400, according to some in some embodiments, generated by a messaging client application104for communication to a further messaging client application104or the messaging server application114. The content of a particular message400is used to populate the message table314stored within the database120, accessible by the messaging server application114. Similarly, the content of a message400is stored in memory as “in-transit” or “in-flight” data of the client device102or the application server112. The message400is shown to include the following components:A message identifier402: a unique identifier that identifies the message400.A message text payload404: text, to be generated by a user via a user interface of the Client device102and that is included in the message400.A message image payload406: image data, captured by a camera component of a Client device102or retrieved from a memory component of a Client device102, and that is included in the message400.A message video payload408: video data, captured by a camera component or retrieved from a memory component of the client device102and that is included in the message400.A message audio payload410: audio data, captured by a microphone or retrieved from a memory component of the client device102, and that is included in the message400.A message annotations412: annotation data (e.g., filters, stickers or other enhancements) that represents annotations to be applied to message image payload406, message video payload408, or message audio payload410of the message400.A message duration parameter414: parameter value indicating, in seconds, the amount of time for which content of the message (e.g., the message image payload406, message video payload408, message audio payload410) is to be presented or made accessible to a user via the messaging client application104.A message geolocation parameter416: geolocation data (e.g., latitudinal and longitudinal coordinates) associated with the content payload of the message. Multiple message geolocation parameter416values may be included in the payload, each of these parameter values being associated with respect to content items included in the content (e.g., a specific image into within the message image payload406, or a specific video in the message video payload408).A message story identifier418: identifier values identifying one or more content collections (e.g., “stories”) with which a particular content item in the message image payload406of the message400is associated. For example, multiple images within the message image payload406may each be associated with multiple content collections using identifier values.A message tag420: each message400may be tagged with multiple tags, each of which is indicative of the subject matter of content included in the message payload. For example, where a particular image included in the message image payload406depicts an animal (e.g., a lion), a tag value may be included within the message tag420that is indicative of the relevant animal. Tag values may be generated manually, based on user input, or may be automatically generated using, for example, image recognition.A message sender identifier422: an identifier (e.g., a messaging system identifier, email address, or device identifier) indicative of a user of the Client device102on which the message400was generated and from which the message400was sentA message receiver identifier424: an identifier (e.g., a messaging system identifier, email address, or device identifier) indicative of a user of the Client device102to which the message400is addressed.

The contents (e.g., values) of the various components of message400may be pointers to locations in tables within which content data values are stored. For example, an image value in the message image payload406may be a pointer to (or address of) a location within an image table308. Similarly, values within the message video payload408may point to data stored within a video table310, values stored within the message annotations412may point to data stored in an annotation table312, values stored within the message story identifier418may point to data stored in a story table306, and values stored within the message sender identifier422and the message receiver identifier424may point to user records stored within an entity table302.

FIG.5is a schematic diagram illustrating an access-limiting process500, in terms of which access to content (e.g., an ephemeral message502, and associated multimedia payload of data) or a content collection (e.g., an ephemeral message group504) may be time-limited (e.g., made ephemeral).

An ephemeral message502is shown to be associated with a message duration parameter506, the value of which determines an amount of time that the ephemeral message502will be displayed to a receiving user of the ephemeral message502by the messaging client application104. In one embodiment, an ephemeral message502is viewable by a receiving user for up to a maximum of 10 seconds, depending on the amount of time that the sending user specifies using the message duration parameter506.

The ephemeral message5022is shown inFIG.5to be included within an ephemeral message group504(e.g., a collection of messages in a personal story, or an event story). The ephemeral message group504has an associated group duration parameter508, a value of which determines a time-duration for which the ephemeral message group504is presented and accessible to users of the messaging system100. The group duration parameter508, for example, may be the duration of a music concert, where the ephemeral message group504is a collection of content pertaining to that concert. Alternatively, a user (either the owning user or a curator user) may specify the value for the group duration parameter508when performing the setup and creation of the ephemeral message group504.

Additionally, each ephemeral message502within the ephemeral message group504has an associated group participation parameter510, a value of which determines the duration of time for which the ephemeral message502will be accessible within the context of the ephemeral message group504. Accordingly, a particular ephemeral message group504may “expire” and become inaccessible within the context of the ephemeral message group504, prior to the ephemeral message group504itself expiring in terms of the group duration parameter508. The group duration parameter508, group participation parameter510, and message receiver identifier424each provide input to a group timer514, which operationally determines, firstly, whether a particular ephemeral message502of the ephemeral message group504will be displayed to a particular receiving user and, if so, for how long. Note that the ephemeral message group504is also aware of the identity of the particular receiving user as a result of the message receiver identifier424.

Accordingly, the group timer514operationally controls the overall lifespan of an associated ephemeral message group504, as well as an individual ephemeral message502included in the ephemeral message group504. In one embodiment, each and every ephemeral message502within the ephemeral message group504remains viewable and accessible for a time-period specified by the group duration parameter508. In a further embodiment, a certain ephemeral message502may expire, within the context of ephemeral message group504, based on a group participation parameter510. Note that a message duration parameter506may still determine the duration of time for which a particular ephemeral message502is displayed to a receiving user, even within the context of the ephemeral message group504. Accordingly, the message duration parameter506determines the duration of time that a particular ephemeral message502is displayed to a receiving user, regardless of whether the receiving user is viewing that ephemeral message502inside or outside the context of an ephemeral message group504.

The ephemeral timer system202may furthermore operationally remove a particular ephemeral message502from the ephemeral message group504based on a determination that it has exceeded an associated group participation parameter510. For example, when a sending user has established a group participation parameter510of 24 hours from posting, the ephemeral timer system202will remove the relevant ephemeral message502from the ephemeral message group504after the specified 24 hours. The ephemeral timer system202also operates to remove an ephemeral message group504either when the group participation parameter510for each and every ephemeral message502within the ephemeral message group504has expired, or when the ephemeral message group504itself has expired in terms of the group duration parameter508.

Responsive to the ephemeral timer system202determining that an ephemeral message group504has expired (e.g., is no longer accessible), the ephemeral timer system202communicates with the messaging system100(and, for example, specifically the messaging client application104) to cause an indicium (e.g., an icon) associated with the relevant ephemeral message group504to no longer be displayed within a user interface of the messaging client application104. Similarly, when the ephemeral timer system202determines that the message duration parameter506for a particular ephemeral message502has expired, the ephemeral timer system202causes the messaging client application104to no longer display an indicium (e.g., an icon or textual identification) associated with the ephemeral message502.

FIG.6is a block diagram illustrating components of a reply menu generation system124. The reply menu generation system124is shown as including an ordering system602and a menu placement system604, all configured to communicate with each other (e.g., via bus, shared memory or a switch). Any one or more of these systems may be implemented using one or more processors (e.g., by configuring such one or more processors to preform functions described for that system).

Any one or more of the systems described may be implemented using hardware alone (e.g., one or more of the processors of a machine) or a combination of hardware and software. For example, the reply menu generation system124may physically include an arrangement of one or more of the processors (e.g., a subset of or among the one or more processors of the machine) configured to perform the operations described herein for that system. As another example, the reply menu generation system124may include software, hardware, or both, that configure an arrangement of one or more processors (e.g., among the one or more processors of the machine) to perform the operations described herein. Further, the reply menu generation system124may comprises one or more sub-systems that may include and configure different arrangements of such processors or a single arrangement of such processors at different points in time. Moreover, any two or more systems of the reply menu generation system124may be combined into a single system, and the functions described herein for a single system may be subdivided among multiple systems. Furthermore, according to various example embodiments, systems described herein as being implemented within a single machine, database, or device may be distributed across multiple machines, databases, or devices.

FIG.7is a flowchart depicting a method700of generating and causing display of a reply menu on a user interface at a client device102, according to certain example embodiments. Operations of the method700are described as being performed by the systems described above with respect toFIG.1andFIG.6. It is to be understood that operations of the method700can be performed by other systems.

At operation702, the reply menu generation system124receives, by one or more processors of a computing system (e.g., server system108or client device102), a selection of one or more messages of a plurality of messages received at a first client device associated with a first user account. For example, a user may provide tactile input at a client device102to select a message in a graphical user interface displayed on the client device102. In response to a selection of a message, the client device102causes message content to be displayed within the graphical user interface of the client device102.

At operation704, the reply menu generation system124detects, by the one or more processors of the computing system, a reply message generated by the first client device in response to the selected one or more messages. In some examples the reply menu generation system124receives a notification that the reply message has been generated. For example, the reply message may be received from the client device (e.g., from a database120). In some examples, the reply message is generated by the client device. For example, the reply message may be generated on a camera device that is physically coupled to the client device and sent to the reply menu generation system124. The reply message comprises any suitable message content (e.g., photographs, videos, text or any combination of the aforementioned).

At operation706, the reply menu generation system124generates a reply menu comprising of an ordered list of user account identifiers, the user account identifiers representing user accounts, each user account associated with a corresponding selected one or more messages. For example, the user accounts may be social media user accounts. For example the user accounts may correspond to a user accounts of a messaging system or social network system such as social network system122Each user account may be represented using a user account identifier. The user account identifier may comprise of a profile picture and a username associated with the user account. In one example embodiment, the user account identifiers comprise interactive user interface elements (e.g., touchpoints for the user to navigate the user interface including but not limited to buttons, scrollbars, menu items and checkboxes).

In some examples, the reply menu generation system124generates a reply menu in response to determining that a pre-determined time period has lapsed between operation702and operation704. For example, the reply menu generation system124receives a selection of a message at time A (e.g., the message is viewed by the first user account at the first client device at time A). The reply menu generation system124detects a reply message at time B. If a pre-determined time period has lapsed (e.g., 3 minutes or less) between time A and time B, then the reply menu generation system124generates the reply menu including a user account identifier associated with the user account that sent the message. However, if time B is greater than 3 minutes after time A, the reply menu generation system124does not generate a reply menu. It is to be understood that the pre-determined time period may be any suitable amount of time. In some examples, the pre-determined time period may be configured by a user.

In one example embodiment, the user account identifiers further comprise a timestamp. The timestamp indicates the time at which the selection of the message was received (e.g., the time at which the message was selected by the user for viewing). For example, if the message was selected at time A, the user account identifier for the message would comprise a timestamp corresponding to time A.

In some example embodiments, the ordered list is ordered based on the timestamp. For example, if the first user account viewed message A associated with user account A at 5:00 PM and then viewed message B associated with user account B at 5:02 PM, then the ordering system602may order user account identifiers for user account A and user account B from most recent to oldest (e.g., user account identifier for user account B corresponding to message B followed by user account identifier for user account A corresponding to message A). It is to be understood that any suitable ordering scheme may be used by the ordering system602.

At operation708, the reply menu generation system124causes display of the generated reply menu in a graphical user interface of the client device. In one example embodiment, the generated reply menu is displayed in a portion of the graphical user interface. For example, the portion of the graphical user interface is determined based on the size of the ordered list of user account identifiers. In some examples the size of the ordered list is determined by the menu placement system604and then is provided to the client device. In some examples, the client device determines the size of the ordered list.

At operation710, the reply menu generation system124receives, by the one or more processors of the computing system, a selection of a subset of user account identifiers selected from the reply menu. For example, a user of the client device102can select one or more user account identifiers in the reply menu displayed on the graphical user interface of the client device102. The client device102sends the selection of user account identifiers to the reply menu generation system124.

In response to receiving the selection at operation710, at operation712the reply menu generation system124, identifies, by the one or more processors, a plurality of independent communication sessions initiated by the first user account, each of the plurality of independent communication sessions corresponding to a selected user account identifier. For example, the first user account may have initiated an independent communication session with a second user account.

At operation714, the reply menu generation system124transmits the reply message via each of the plurality of independent communication sessions. Further details regarding the independent communication sessions can be found below in connection withFIG.8.

FIG.8is a diagrammatic illustration of independent communication sessions initiated by the first user account. For example, origin account802is the first user account transmitting the reply message. The user of the origin account802selects account identifiers from the reply menu. In the example inFIG.8, the user has selected four account identifiers corresponding to Account A804, Account B806, Account C808, and Account D810. Each user account804-810is associated with at least one client device. In this example, since the user of the origin account802selected Account A804, Account B806, Account C808and Account D810, the reply menu generation system124creates four independent communication sessions (e.g., session1, session2, session3, session4). Each communication session may be initiated sequentially based on the timestamps associated with the corresponding received message. The following paragraphs describe an example workflow of the reply menu generation system124.

FIG.9is a diagrammatic illustration of a user interface of a messaging client application104. A user typically receives many messages within a messaging client application104. Example embodiments provide a reply menu generation system124that allows the user to efficiently respond to a large quantity of unread messages. For example, the user selects one or more messages (e.g., message902, message904), sequentially. For instance, the user selects message902and upon selection, the message content associated with message902will be presented on the user interface. In one example embodiment, the message content is ephemeral message content (e.g., multimedia messages that automatically disappear from the recipient's screen after the message has been viewed). The user may choose to generate a reply message in response to message902and904. After generating the reply message, the user may be redirected to a send page to transmit the message. The send page includes a reply menu, described below.

FIG.10andFIG.11each illustrate a reply menu displayed on a graphical user interface of a client device, according to some example embodiments. The reply menu1002consists of a first user account identifier1006and a second user account identifier1008. Each user account identifier is shown to include a profile picture, a username and an associated timestamp. In some examples, the reply menu generation system124orders user account identifiers based on the associated timestamps, as described above. The user account identifiers may be selectable user interface elements. The user may select one or both user account identifiers within the reply menu to transmit the reply message. InFIG.10the reply menu1002is displayed in a first location of the portion of the user interface1004(e.g., below the Best Friends menu1010).

InFIG.11the reply menu1002is in a second location of the portion of the user interface1004. In some examples the reply menu generation system124determines the portion of the interface based on the number of the user account identifiers within the reply menu and provides the determination to the client device. In some examples, the portion of the interface is determined based on user preferences or user engagement statistics. In some examples the client device102determines the portion of the user interface1004in which to display the reply menu.

FIG.12is a diagrammatic representation of the machine1200within which instructions1208(e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine1200to perform any one or more of the methodologies discussed herein may be executed. For example, the instructions1208may cause the machine1200to execute any one or more of the methods described herein. The instructions1208transform the general, non-programmed machine1200into a particular machine1200programmed to carry out the described and illustrated functions in the manner described. The machine1200may operate as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine1200may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine1200may comprise, but not be limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a PDA, an entertainment media system, a cellular telephone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing the instructions1208, sequentially or otherwise, that specify actions to be taken by the machine1200. Further, while only a single machine1200is illustrated, the term “machine” shall also be taken to include a collection of machines that individually or jointly execute the instructions1208to perform any one or more of the methodologies discussed herein.

The machine1200may include processors1202, memory1204, and I/O components1238, which may be configured to communicate with each other via a bus1240. In an example embodiment, the processors1202(e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) Processor, a Complex Instruction Set Computing (CISC) Processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an ASIC, a Radio-Frequency Integrated Circuit (RFIC), another Processor, or any suitable combination thereof) may include, for example, a Processor1206and a Processor1210that execute the instructions1208. The term “Processor” is intended to include multi-core processors that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions contemporaneously. AlthoughFIG.12shows multiple processors1202, the machine1200may include a single Processor with a single core, a single Processor with multiple cores (e.g., a multi-core Processor), multiple processors with a single core, multiple processors with multiples cores, or any combination thereof.

The memory1204includes a main memory1212, a static memory1214, and a storage unit1216, both accessible to the processors1202via the bus1240. The main memory1204, the static memory1214, and storage unit1216store the instructions1208embodying any one or more of the methodologies or functions described herein. The instructions1208may also reside, completely or partially, within the main memory1212, within the static memory1214, within machine-readable medium1218within the storage unit1216, within at least one of the processors1202(e.g., within the Processor's cache memory), or any suitable combination thereof, during execution thereof by the machine1200.

In further example embodiments, the I/O components1238may include biometric components1228, motion components1230, environmental components1232, or position components1234, among a wide array of other components. For example, the biometric components1228include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye-tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identification, retinal identification, facial identification, fingerprint identification, or electroencephalogram-based identification), and the like. The motion components1230include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope). The environmental components1232include, for example, one or cameras (with still image/photograph and video capabilities), illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors to detection concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to a surrounding physical environment. The position components1234include location sensor components (e.g., a GPS receiver Component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and the like.

Communication may be implemented using a wide variety of technologies. The I/O components1238further include communication components1236operable to couple the machine1200to a network1220or devices1222via respective coupling or connections. For example, the communication components1236may include a network interface Component or another suitable device to interface with the network1220. In further examples, the communication components1236may include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and other communication components to provide communication via other modalities. The devices1222may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a USB).

The various memories (e.g., main memory1212, static memory1214, memory of the processors1202) and storage unit1216may store one or more sets of instructions and data structures (e.g., software) embodying or used by any one or more of the methodologies or functions described herein. These instructions (e.g., the instructions1208), when executed by processors1202, cause various operations to implement the disclosed embodiments.

The instructions1208may be transmitted or received over the network1220, using a transmission medium, via a network interface device (e.g., a network interface Component included in the communication components1236) and using any one of several well-known transfer protocols (e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions1208may be transmitted or received using a transmission medium via a coupling (e.g., a peer-to-peer coupling) to the devices1222.

FIG.13is a block diagram1300illustrating a software architecture1304, which can be installed on any one or more of the devices described herein. The software architecture1304is supported by hardware such as a machine1302that includes processors1320, memory1326, and I/O components1338. In this example, the software architecture1304can be conceptualized as a stack of layers, where each layer provides a particular functionality. The software architecture1304includes layers such as an operating system1312, libraries1310, frameworks1308, and applications1306. Operationally, the applications1306invoke API calls1350through the software stack and receive messages1352in response to the API calls1350.

The operating system1312manages hardware resources and provides common services. The operating system1312includes, for example, a kernel1314, services1316, and drivers1322. The kernel1314acts as an abstraction layer between the hardware and the other software layers. For example, the kernel1314provides memory management, Processor management (e.g., scheduling), Component management, networking, and security settings, among other functionality. The services1316can provide other common services for the other software layers. The drivers1322are responsible for controlling or interfacing with the underlying hardware. For instance, the drivers1322can include display drivers, camera drivers, BLUETOOTH® or BLUETOOTH® Low Energy drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), WI-FI® drivers, audio drivers, power management drivers, and so forth.

The libraries1310provide a low-level common infrastructure used by the applications1306. The libraries1310can include system libraries1318(e.g., C standard library) that provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, the libraries1310can include API libraries1324such as media libraries (e.g., libraries to support presentation and manipulation of various media formats such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries (e.g., an OpenGL framework used to render in two dimensions (2D) and three dimensions (3D) in a graphic content on a display), database libraries (e.g., SQLite to provide various relational database functions), web libraries (e.g., WebKit to provide web browsing functionality), and the like. The libraries1310can also include a wide variety of other libraries1328to provide many other APIs to the applications1306.

The frameworks1308provide a high-level common infrastructure that is used by the applications1306. For example, the frameworks1308provide various graphical user interface (GUI) functions, high-level resource management, and high-level location services. The frameworks1308can provide a broad spectrum of other APIs that can be used by the applications1306, some of which may be specific to a particular operating system or platform.

In an example embodiment, the applications1306may include a home application1336, a contacts application1330, a browser application1332, a book reader application1334, a location application1342, a media application1344, a messaging application1346, a game application1348, and a broad assortment of other applications such as a third-party application1340. The e applications1306are programs that execute functions defined in the programs. Various programming languages can be employed to create one or more of the applications1306, structured in a variety of manners, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language). In a specific example, the third-party application1340(e.g., an application developed using the ANDROID™ or IOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as IOS™, ANDROID™, WINDOWS® Phone, or another mobile operating system. In this example, the third-party application1340can invoke the API calls1350provided by the operating system1312to facilitate functionality described herein.