Suggesting related groups and individuals in message replies
By intelligently analyzing users' group membership and message content, the system automatically suggests relevant groups and individual recipients, solving the problem of low efficiency in group message selection in existing technologies and improving user experience.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-09-12
- Publication Date
- 2026-04-14
AI Technical Summary
In existing messaging applications, selecting group message recipients requires manual selection, resulting in inefficiency and a poor user experience.
By analyzing users' group memberships and message content, the system intelligently suggests relevant groups and individuals based on context, and automatically identifies and displays selectable group and individual recipients using advanced machine learning algorithms and natural language processing techniques.
It improves the efficiency of sending and receiving group messages and enhances the user experience, enabling users to select recipients more quickly and easily, reducing the hassle of manual selection.
Smart Images

Figure CN121866577A_ABST
Abstract
Description
[0001] Priority requirements
[0002] This patent application claims the benefit of priority to U.S. Application Serial No. 18 / 468,276, filed September 15, 2023, which is incorporated herein by reference in its entirety. Background Technology
[0003] Electronic messaging platforms have become common communication tools, offering services such as email, SMS, and social media used daily by billions of users. Group messaging involving multiple recipients is a common user need. However, existing messaging applications require senders to manually select each intended recipient when composing a message.
[0004] For group messaging, this can be time-consuming because the sender must remember each relevant contact and select them individually. The burden of recalling and selecting recipients reduces the efficiency of group messaging interactions. Some messaging platforms recommend that contacts be selected based solely on the characters entered, rather than the context.
[0005] Therefore, there is a need to improve the group messaging experience to make recipient selection faster and easier. Specifically, messaging applications that understand context and suggest relevant potential recipients can provide a better user experience. More efficient group messaging and recipient selection can lead to increased engagement with group messaging features.
[0006] While current solutions rely solely on manual recipient selection by the sender, there is an opportunity to explore alternative methods for suggesting potential message recipients. Intelligent and context-based suggestions could significantly improve group messaging workflows. Attached Figure Description
[0007] In the accompanying drawings (which are not necessarily drawn to scale), similar numbers may describe similar parts in different views. For ease of identification of any particular element or action being discussed, one or more of the most significant digits in the reference numerals refer to the drawing number in which that element was first introduced. Some embodiments are shown in the accompanying drawings by way of example rather than limitation, in which:
[0008] Figure 1 It is a diagrammatic representation of a networked environment in which the content of this disclosure can be deployed, based on some examples.
[0009] Figure 2 It is a graphical representation of a messaging system with both client-side and server-side functionalities, based on some examples.
[0010] Figure 3This is a flowchart depicting a method, according to one embodiment, for suggesting the inclusion of one or more user groups in a response to a message.
[0011] Figure 4 It is an interface diagram depicting the interface presented by a group suggestion system according to one implementation.
[0012] Figure 5 It is an interface diagram depicting the interface displayed by a group suggestion system according to one embodiment.
[0013] Figure 6 It is a graphical representation of a machine in the form of a computer system, based on some examples, within which a set of instructions can be executed to cause the machine to perform any or more of the methods discussed herein.
[0014] Figure 7 It is a block diagram illustrating an example of a software architecture that can be implemented therein.
[0015] Figure 8 It is a graphical representation of the processing environment based on some examples. Detailed Implementation
[0016] Electronic messaging platforms enable users to easily communicate with each other. Group messaging, or sending messages to multiple people, is very common. However, selecting who to send group messages to can be cumbersome and time-consuming. Users must manually select everyone they want to message each time.
[0017] The technology described here makes sending and receiving messages in groups faster and easier. When a user replies to a message, the system automatically suggests relevant groups and people to send messages to based on the context. For example, if both the sender and the replyer belong to group A, the suggestions provided may include group A. Or, if the message is about topic Z, groups related to topic Z may be recommended.
[0018] Users can easily view suggestions and tap to add relevant groups and contacts. This eliminates the hassle of manually remembering and selecting each recipient. Personalized, intelligent suggestions make group messaging seamless. Users can respond to conversations faster with less effort.
[0019] A method for suggesting relevant recipients when a user replies to a received message includes the following steps: A messaging application installed on a user's client device receives a first message from a first user account, directed to one or more recipient users. When a second user account associated with the client device requests to compose a reply message in response to the received first message, the messaging application detects the composition of that reply message.
[0020] The messaging application then identifies one or more groups of members, including the first user who sent the original message and the second user who created the reply message. These groups represent shared connections and relationships between the two users. The application can identify these shared groups by analyzing group membership data associated with user accounts on the messaging platform.
[0021] To identify related groups with shared membership, messaging applications can search and analyze groups associated with a second user's account and profile. Many messaging platforms allow users to create and participate in multiple groups reflecting social circles, topics, chats, and more. The messaging application analyzes these multiple groups within the second user's account to find groups that include both the first and second users. In some implementations, as a user account participates in more and more groups over time, advanced matching algorithms and optimization techniques such as heuristics and caching can be used to efficiently identify shared groups.
[0022] When composing a reply message, present selectable interface elements to the second user, representing one or more identified common groups. These elements can be displayed as part of the recipient selection interface as the second user types their reply message. Selectable elements make it easy to add suggested groups as recipients of the reply message. The second user can simply tap on the displayed group representation to select it. Visual design factors such as color, layout, and saturation can be used to highlight suggested groups to the user. Interactivity can be optimized to minimize the gestures and taps required to add groups.
[0023] In some implementations, messaging applications determine the order or ranking of identified groups before displaying them. This allows for the initial suggestion of the most relevant information based on context. The order can be determined based on factors such as the number of recent or frequent interactions between a second user and a group, the number of connections between two users in each group, and analysis of the content of received messages.
[0024] Advanced machine learning algorithms, such as neural networks, can be implemented to train predictive models on historical message sending and receiving data. These models can be personalized to accurately rank suggested groups based on each user's unique communication patterns and relationships.
[0025] For example, identified groups can be ranked based on the recentity or frequency of interactions such as sending / receiving messages and content. Groups with more recent or frequent interactions may be considered more relevant to the recommendations. The number of bidirectional connections between the first and second users within each group can also be used to infer relevance and priority. Furthermore, natural language processing techniques can be used to analyze the content of received messages to identify topics and keywords. The identified groups can then be ranked based on similarity to these message topics and keywords.
[0026] Topic modeling, sentiment analysis, named entity recognition, and other NLP techniques can extract meaning from sent and received messages to match groups. Useful metadata such as timestamps, geolocation, and platform events can also inform ranking predictions.
[0027] In some implementations, individual member accounts within the group can also be suggested. These member accounts represent contacts relevant to the conversation, whom a second user might wish to include in the group. Displaying individuals alongside groups provides additional context and shows more potential recipients tailored to the response scenario.
[0028] Advanced segmentation and filtering techniques can be applied to identify the most relevant subset of group members based on past interactions, interests, and other attributes for recommendations.
[0029] The selectable interface elements for suggested groups can display helpful identifying information. These elements can display the group's name, avatar, description, or other identifiers. They can also display the number of member accounts in the group to provide additional context when selecting suggested groups.
[0030] Networked computing environment
[0031] Figure 1 This is a block diagram illustrating an example messaging system 100 for exchanging data (e.g., messages and associated content) over a network. The messaging system 100 includes multiple instances of client devices 106, each hosting multiple applications, and each client device 106 includes messaging clients 108. Each messaging client 108 is communicatively coupled to other instances of messaging client 108 and a messaging server system 104 via a network 102 (e.g., the Internet).
[0032] The messaging client 108 is able to communicate and exchange data with another messaging client 108 and the messaging server system 104 via the network 102. The data exchanged between messaging clients 108 and between messaging client 108 and messaging server system 104 includes functions (e.g., commands to activate functions) and payload data (e.g., text, audio, video, or other multimedia data).
[0033] Message transceiver server system 104 provides server-side functionality to specific message transceiver clients 108 via network 102. While some functions of message transceiver system 100 are described herein as being performed by message transceiver client 108 or message transceiver server system 104, the location of certain functions—whether within message transceiver client 108 or message transceiver server system 104—may be a design choice. For example, it might be technically preferred that certain technologies and functions are initially deployed within message transceiver server system 104, but later migrated to message transceiver client 108 on client device 106 with sufficient processing capabilities.
[0034] The messaging server system 104 supports various services and operations provided to the messaging client 108. Such operations include sending data to and receiving data from the messaging client 108, and processing data generated by the messaging client 108. As an example, this data may include message content, client device information, geolocation information, media enhancements and overlays, message content persistence conditions, social network information, and on-site event information. Data exchange within the messaging system 100 is invoked and controlled via functions available through the user interface (UI) of the messaging client 108.
[0035] Specifically, turning to message transceiver server system 104, application programming interface (API) server 112 is coupled to application server 110 and provides a programming interface to application server 110. Application server 110 is communicatively coupled to database server 116, which facilitates access to database 122, which stores data associated with messages processed by application server 110. Similarly, web server 124 is coupled to application server 110 and provides a web-based interface to application server 110. For this purpose, web server 124 processes incoming network requests via Hypertext Transfer Protocol (HTTP) and several other related protocols. In some embodiments, database 122 may include a decentralized database.
[0036] Application Programming Interface (API) server 112 receives and sends message data (e.g., commands and message payloads) between client device 106 and application server 110. Specifically, API server 112 provides a set of interfaces (e.g., routines and protocols) that can be invoked or queried by messaging client 108 to activate the functionality of application server 110. Application Programming Interface (API) server 112 exposes various functions supported by application server 110, including: account registration, login function, sending messages from a specific messaging client 108 to another messaging client 108 via application server 110; sending media files (e.g., images or videos) from messaging client 108 to messaging server 114 and for possible access by another messaging client 108; setting a collection of media data (e.g., stories); retrieving a user's friend list for client device 106; retrieving such a collection; retrieving messages and content; adding and deleting entities (e.g., friends) in an entity graph (e.g., a social graph); locating friends in the social graph; and opening (e.g., application events associated with messaging client 108).
[0037] Application server 110 hosts multiple server applications and subsystems, including, for example, messaging server 114, image processing server 118, and social networking server 120. Messaging server 114 implements multiple messaging technologies and functions, particularly those related to the aggregation and other processing of content (e.g., text and multimedia content) included in messages received from multiple instances of messaging client 108. As will be described in further detail, text and media content from multiple sources can be aggregated into collections of content (e.g., referred to as stories or galleries). These collections are then made available to messaging client 108. Given the hardware requirements for other processor- and memory-intensive data processing, such data processing can also be performed on the server side by messaging server 114.
[0038] Application server 110 also includes image processing server 118, which is dedicated to performing various image processing operations, typically relative to the images or videos in the payload of messages sent from or received at message transceiver server 114.
[0039] Social networking server 120 supports various social networking functions and services and makes these functions and services available to messaging server 114. Examples of functions and services supported by social networking server 120 include identifying other users of messaging system 100 who are related to a particular user or who are being "followed" by that particular user, as well as identifying the interests and other entities of a particular user.
[0040] System Architecture
[0041] Figure 2 This is a block diagram illustrating further details of a messaging system 100 according to some examples. Specifically, the messaging system 100 is shown as including a messaging client 108 and an application server 110. The messaging system 100 includes multiple subsystems supported on the client side by the messaging client 108 and on the server side by the application server 110. These subsystems include, for example, a short-lived timer system 202, a collection management system 204, an enhancement system 206, a map system 210, a game system 212, and a group suggestion system 214.
[0042] The short-lived timer system 202 is responsible for enabling temporary or time-limited access to content by the message sending client 108 and the message sending server 114. The short-lived timer system 202 includes multiple timers that selectively enable access to messages and associated content (e.g., for rendering and display) via the message sending client 108 based on duration and display parameters associated with a message or set of messages (e.g., a story). Further details regarding the operation of the short-lived timer system 202 are provided below.
[0043] The collection management system 204 is responsible for managing collections or sets of media (e.g., collections of text, images, video, and audio data). Collections of content (e.g., messages, including images, videos, text, and audio) can be organized into "event libraries" or "event stories." Such collections can be made available for a specified time period (e.g., the duration of an event related to the content). For example, content related to a concert can be made available as a "story" for the duration of the concert. The collection management system 204 can also be responsible for publishing icons that notify the user interface of the messaging client 108 of the existence of a specific collection.
[0044] The collection management system 204 also includes a curation interface 208, which allows collection managers to manage and curate specific content collections. For example, the curation interface 208 enables event organizers to curate content collections related to a specific event (e.g., removing inappropriate content or redundant messages). Additionally, the collection management system 204 employs machine vision (or image recognition technology) and content rules to automatically curate content collections. In some examples, users may be paid compensation for including user-generated content in the collection. In such cases, the collection management system 204 operates to automatically pay such users for using their content.
[0045] Enhancement system 206 provides various functionalities that enable users to enhance (e.g., annotate or otherwise modify or edit) media content associated with messages. For example, enhancement system 206 provides functionality related to generating and publishing media overlays for messages processed by messaging system 100. Enhancement system 206 can operable to provide media overlays or enhancements (e.g., image filters) to messaging client 108 based on the geographic location of client device 106. In another example, enhancement system 206 can operable to provide media overlays to messaging client 108 based on other information such as the social network information of the user of client device 106. Media overlays can include audio as well as visual content and visual effects. Examples of audio and visual content include images, text, logos, animations, and sound effects. Examples of visual effects include color overlays. Audio and visual content or visual effects can be applied to media content items (e.g., photographs) at client device 106. For example, media overlays can include text or images that can be overlaid on photographs taken by client device 106. In another example, media overlays include location identifier overlays (e.g., Venice Beach), names of on-site events, or business names overlays (e.g., Beach Cafe). In yet another example, enhancement system 206 uses the geolocation of client device 106 to identify media overlays that include the business name at the location of client device 106. Media overlays may include additional identifiers associated with the business. Media overlays may be stored in database 122 and accessed via database server 116.
[0046] In some examples, enhancement system 206 provides a user-based publishing platform that allows users to select geographic locations on a map and upload content associated with those locations. Users can also specify when particular media overlays should be offered to other users. Enhancement system 206 generates a media overlay that includes the uploaded content and associates the uploaded content with the selected geographic location.
[0047] In other examples, enhancement system 206 provides a merchant-based publishing platform that enables merchants to select specific media overlays associated with geographic locations via a bidding process. For example, enhancement system 206 associates the media overlay of the highest bidder with a corresponding geographic location for a predefined amount of time.
[0048] Map system 210 provides various geolocation functions and supports the presentation of map-based media content and messages by messaging client 108. For example, map system 210 enables the display of user icons or avatars on the map to indicate the current or past locations of the user's "friends" within the context of the map, as well as media content generated by such friends (e.g., a collection of messages including photos and videos). For example, a message posted by a user from a specific geolocation to messaging system 100 can be displayed to a specific user's "friends" on the map interface of messaging client 108 within the context of that specific location on the map. The user can also share his or her location and status information with other users of messaging system 100 (e.g., using appropriate status avatars) via messaging client 108, where the location and status information is similarly displayed to selected users within the context of the map interface of messaging client 108.
[0049] The game system 212 provides various game functions within the context of the messaging client 108. The messaging client 108 provides a game interface that offers a list of available games that can be started by a user within the context of the messaging client 108 and played with other users of the messaging system 100. The messaging system 100 also enables specific users to invite other users to participate in specific games by sending invitations from the messaging client 108. The messaging client 108 also supports both voice and text messaging (e.g., chat) within the game context, provides leaderboards for games, and supports providing in-game rewards (e.g., game currency and items).
[0050] When a user replies to a received message in a messaging application, the group suggestion system 214 enables intelligent suggestion of relevant groups. When the system detects that a user is composing a reply to a message, it identifies one or more groups that include both the original sender and the replying user and that user have memberships in those groups. According to some example implementations, to identify these related common groups, the system analyzes group membership data associated with the user's account on the messaging platform. Advanced algorithms can efficiently match groups across multiple groups associated with the replying user's account.
[0051] Once relevant groups are identified, the system displays selectable interface elements representing these groups to the responding user composing the reply message. The system can determine the ranking or order of groups based on factors such as the number of recent / frequent interactions and two-way communication. Selectable elements allow the responding user to easily add suggested groups as recipients to their reply message. When a group is selected, the system includes that group as a recipient of the reply message.
[0052] In some implementations, when a group is selected, the system also suggests including potentially relevant individual member accounts from that group in the response. Sophisticated segmentation techniques can identify the most relevant subset of members to display.
[0053] Figure 3 This is a flowchart illustrating the operation of a group suggestion system 214 according to one embodiment when performing a method 300 for suggesting the inclusion of one or more user groups in a response to a message. The operation of method 300 can be seen from the above reference. Figure 2 One or more subsystems of the described messaging system 100 (such as group suggestion system 214) are executed. Figure 3 As shown, method 300 includes one or more operations 302, 304, 306, 308, 310, and 312.
[0054] At operation 302, a messaging application running on the client device receives messages from a first user that are directed to one or more recipients. Messages may include media content such as images, video, or audio.
[0055] At operation 304, group suggestion system 214 receives a request from a second user associated with the client device to compose a response to the received message. This request may be initiated by the second user selecting a reply button or entering text to respond to the message. Group suggestion system 214 may determine the recommended recipient of the response message based on factors such as the content of the original message, the text of the response being composed, and the second user's recent messaging activity. Message content analysis may employ natural language processing or machine learning to extract keywords, topics, and other relevant information from the received message, or in some implementations, from the content of the response to the received message composed by the second user associated with the client device.
[0056] At operation 306, group suggestion system 214 identifies one or more groups with membership, including both the first sending user and the second replying user, from among multiple groups associated with the second user of the client device. According to some implementations, a "group" can refer to a collection of user accounts with shared membership or association on a messaging platform. For example, a group can represent: a formal organization or club with limited membership; a friends group created by a user for messaging a specific set of friends; a chat group with limited membership for group messaging; a social media group that a user joins based on shared interests or affiliations; a professional networking group for colleagues in similar industries; or any collection of user accounts with common associations based on factors including user attributes and preferences, and the ability to message as a group. Therefore, a "group" includes multiple member user accounts on a messaging platform, and a message can be sent to a group such that the message is received by all members belonging to that group.
[0057] Various techniques can be used to identify these shared groups with common memberships. In one implementation, the system queries account group membership data to efficiently find groups associated with two users. Advanced algorithms can match across multiple groups associated with each user account.
[0058] At operation 308, the messaging application displays selectable interface elements representing identified common groups to the second user on the client device. These selectable elements allow for convenient selection of suggested groups to add to the reply. In some implementations, groups are ranked and sorted based on relevance factors such as the recent / frequent interactions between one or more of the first and second users and the groups, the recentity of interactions between one or more of the first and second users and the groups, and the number of bidirectional connections between one or more groups and the first and second users. Selectable interface elements may include identifiers associated with groups, one or more identifiers associated with common group members shared between the first and second users, and a group member count.
[0059] At operation 310, the system receives a selection from at least one suggested group by a second user from the displayed groups. The user can select a group to include as a recipient of a reply message. The interface may allow horizontal scrolling to view additional groups beyond the initially visible portion. In some implementations, the second user can provide input to hover over a group before selection to preview its members. Partial input of the group name may also trigger autocomplete.
[0060] In some implementations, the group suggestion system 214 can enable a second user to create new groups using suggested groups and individuals. For example, after the second user selects one or more suggested groups or individuals at operation 310, the group suggestion system 214 can present a "Create New Group" option based on the selection. When the user selects this option, they may be prompted to provide a name for the new group. The group suggestion system 214 can then generate a new group that includes members of the selected suggested groups as well as any other designated recipients. Additional users can also be manually added to the new group by the second user. Interface elements such as a contact list selector can facilitate finding and adding individual user accounts. Once completed, the new user group will be stored in the second user's account on the messaging platform and can appear as a suggested group in future conversations related to their member set.
[0061] At operation 312, the messaging application includes at least one selected group as a recipient in the written reply message. When the user finally sends a reply message, the reply message will also be directed to the selected group, in addition to any other designated recipient. In some implementations, when a group is selected, individual member accounts from that group are also suggested based on relevance.
[0062] In some implementations, a visual indicator may display the number of included groups and recipients. For clarity, selected groups may be highlighted, marked, or annotated. A confirmation screen may summarize the total number of recipients. Analytics may track group recommendations.
[0063] Figure 4 This is an interface diagram 400 depicting an interface presented by a group suggestion system 214 according to one embodiment. As seen in interface diagram 400, interface 402 includes the display of message content 404, which includes image features and user tags 418, which include identifiers of one or more user accounts. Interface diagram 400 also depicts the display of a message composition menu 406 and the presentation of suggestions 408, where suggestions 408 include one or more user or group identifiers.
[0064] In response to displaying message content 404, the group suggestion system 214 may present a message composition menu 406 to allow the receiving user (i.e., the second user) to compose a reply. This corresponds to the operation 304 of receiving a reply request.
[0065] The composing menu 406 can include options for adding text, media, attachments, and other content to reply messages. Input methods can include typing, voice, and gestures. The interface can also allow for the selection of additional individual recipients.
[0066] Based on the sender, tagged user, and message content, the system identifies shared groups between the sender and responding users, as in operation 306. Advanced algorithms, heuristics, and machine learning techniques can be used to determine the most relevant groups for recommendations based on past interactions, interests, relationships, and other factors.
[0067] The presentation of suggestion 408 is shown to represent the common groups of these identifications. The suggestion corresponds to the selectable interface elements described in operation 308. Visual formats may include horizontally scrolling lists, vertically stacked cards, drop-down menus, or radial dials.
[0068] In some implementations, presentation 408 can display additional suggested individual recipients and groups based on relevance. Suggestions can be ranked and sorted based on factors such as recent interactions, number of two-way contacts, interests, and past message sending and receiving. The user can select one or more suggested groups and individuals, as in operation 310, and then include one or more suggested groups and individuals in the response message composition. Input modalities can involve taps, clicks, keyboard shortcuts, voice commands, or drag-and-drop gestures.
[0069] Figure 5 This is an interface diagram 500 depicting an interface presented by a group suggestion system 214 according to one embodiment. As seen in interface diagram 500, interface 502 may include multiple menu elements to display user identifiers associated with user contacts within the messaging application. Interface 502 allows a user (i.e., a second user) to select suggested group and individual recipients when composing a reply message.
[0070] The interface includes address line 504 to display the identifiers of any currently selected users and groups for receiving response messages. For example, address line 504 may include text input fields to display one or more user or group identifiers selected by the user of client device 106.
[0071] Near address line 504 is one or more display areas presenting different types of suggested recipients. Display area 508 (i.e., "mentioned") shows the users mentioned or tagged in the received message (i.e., Figure 4 The message content 404 depicts user tag 418.
[0072] Display area 510 (i.e., "Recent Groups") shows common groups containing both the replying user and the user who sent the original message, from which both recently sent or received messages. These common groups are identified by the system as relevant suggestions.
[0073] Display area 512 (i.e., "Recent") shows the most recent personal connection corresponding to the responding user. This is particularly true in some implementations (especially those using bidirectional communication with the original sender).
[0074] Groups and individual users can be ranked and sorted within the display areas 508, 510, and 512 based on factors such as proximity, frequency, and the number of two-way contacts.
[0075] When a user selects a suggested user identifier 506 and a group, the group suggestion system 214 displays the selected identifier in address line 504, and in some embodiments, a selection indicator (i.e., a check mark) may be displayed near the selected identifier in the relevant display area.
[0076] Interface 502 also includes a "Create Group" icon 514. Selecting this allows users to create a new group using suggested members, which can then appear as suggestions in future conversations.
[0077] Machine architecture
[0078] Figure 6This is a schematic representation of machine 600, within which instructions 610 (e.g., software, programs, applications, applets, or other executable code) can be executed to cause machine 600 to perform any or more of the methods discussed herein. For example, instructions 610 can cause machine 600 to perform any or more of the methods described herein. Instructions 610 transform a general, unprogrammed machine 600 into a specific machine 600 programmed to perform the described and illustrated functions in the described manner. Machine 600 can operate as a standalone device or can be coupled (e.g., networked) to other machines. In a networked deployment, machine 600 can operate as 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. Machine 600 may include, but is not limited to: server computers, client computers, personal computers (PCs), tablet computers, laptop computers, netbooks, set-top boxes (STBs), personal digital assistants (PDAs), entertainment media systems, cellular phones, smartphones, mobile devices, wearable devices (e.g., smartwatches), smart home devices (e.g., smart appliances), other smart devices, web devices, network routers, network switches, network bridges, or any machine capable of sequentially or otherwise executing instructions 610 specifying actions to be taken by machine 600. Furthermore, although only a single machine 600 is shown, the term "machine" should also be considered to include a collection of machines that individually or jointly execute instructions 610 to perform any one or more of the methods discussed herein. For example, machine 600 may include client device 106 or any one of a plurality of server devices forming part of message transceiver server system 104. In some examples, machine 600 may also include both a client system and a server system, wherein certain operations of a particular method or algorithm are performed on the server side and certain operations of a particular method or algorithm are performed on the client side.
[0079] Machine 600 may include a processor 604, a memory 606, and input / output (I / O) components 638 that can be configured to communicate with each other via a bus 640. In the example, processor 604 (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 application-specific integrated circuit (ASIC), a radio frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, processors 608 and 612 that execute instruction 610. The term "processor" is intended to include multi-core processors, which may include two or more independent processors (sometimes referred to as "cores") capable of executing instructions simultaneously. Although...Figure 6 Multiple processors 604 are shown, but machine 600 may 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 multiple cores, or any combination thereof.
[0080] Memory 606 includes main memory 614, static memory 616, and memory cell 618, all accessible by processor 604 via bus 640. Main memory 606, static memory 616, and memory cell 618 store instructions 610 embodying any one or more of the methods or functions described herein. Instructions 610 may also reside wholly or partially in main memory 614, in static memory 616, in machine-readable medium 620 within memory cell 618, in at least one processor of processor 604 (e.g., in the processor's cache memory), or in any suitable combination thereof during execution by machine 600.
[0081] I / O component 602 may include various components for receiving input, providing output, generating output, sending information, exchanging information, capturing measurement results, etc. The specific I / O component 602 included in a particular machine will depend on the type of machine. For example, a portable machine (e.g., a mobile phone) may include a touch input device or other such input mechanism, while a headless server machine may not include such a touch input device. It should be understood that I / O component 602 may include... Figure 6 Many other components are not shown. In various examples, I / O component 602 may include user output component 626 and user input component 628. User output component 626 may include visual components (e.g., displays such as plasma display panels (PDPs), light-emitting diode (LED) displays, liquid crystal displays (LCDs), projectors, or cathode ray tube (CRT) displays), acoustic components (e.g., speakers), haptic components (e.g., vibration motors, resistance mechanisms), other signal generators, etc. User input component 628 may include alphanumeric input components (e.g., keyboards, touchscreens configured to receive alphanumeric input, photoelectric keyboards, or other alphanumeric input components), point-based input components (e.g., mice, touchpads, trackballs, joysticks, motion sensors, or other pointing instruments), haptic input components (e.g., physical buttons, touchscreens or other haptic input components that provide the position and force of a touch or touch gesture), audio input components (e.g., microphones), etc.
[0082] In other examples, I / O component 602 may include biometric component 630, motion component 632, environmental component 634, or position component 636, as well as various other components. For example, biometric component 630 includes components for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body posture, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), and identifying people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition). Motion component 632 includes accelerometer components (e.g., accelerometers), gravity sensor components, and rotation sensor components (e.g., gyroscopes).
[0083] The environmental component 634 includes, for example, one or more camera devices (with still image / photograph and video capabilities), lighting sensor components (e.g., photometers), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometers), 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 that detect the concentration of hazardous gases for safety purposes or measure pollutants in the atmosphere), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment.
[0084] Regarding the camera device, client device 106 may have a camera device system including, for example, a front-facing camera on the front surface of client device 106 and a rear-facing camera on the rear surface of client device 106. The front-facing camera may be used, for example, to capture still images and videos (e.g., "selfies") of the user of client device 106, and then the still images and videos may be enhanced using the aforementioned enhancement data (e.g., filters). The rear-facing camera may be used, for example, to capture still images and videos in a more conventional camera device mode, wherein these images are similarly enhanced using enhancement data. In addition to the front-facing and rear-facing cameras, client device 106 may also include a 360° camera for capturing 360° photos and videos.
[0085] Furthermore, the camera system of the client device 106 may include dual rear cameras (e.g., a main camera and a depth-sensing camera), or even include triple, quadruple, or quintuple rear camera configurations on the front and rear sides of the client device 106. For example, these multi-camera systems may include wide-angle cameras, ultra-wide-angle cameras, telephoto cameras, macro cameras, and depth sensors.
[0086] The position component 636 includes a position sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer that detects air pressure and from which altitude can be obtained), an orientation sensor component (e.g., a magnetometer), and the like.
[0087] A wide variety of technologies can be used to implement communication. I / O component 602 also includes a communication component 638 operable to couple machine 600 to network 622 or device 624 via a suitable coupling or connection. For example, communication component 638 may include a network interface component or another suitable device that interfaces with network 622. In other examples, communication component 638 may include a wired communication component, a wireless communication component, a cellular communication component, a near field communication (NFC) component, etc. Components (e.g.) (low energy consumption) Components and other communication components for providing communication via other means. Device 624 can be any peripheral device from another machine or various peripheral devices (e.g., a peripheral device coupled via USB).
[0088] Furthermore, communication component 638 may detect identifiers or include components operable to detect identifiers. For example, communication component 638 may include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional barcodes such as Universal Product Code (UPC) barcodes, multi-dimensional barcodes such as Quick Response (QR) codes, Aztec codes, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D barcodes, and other optical codes), or an acoustic detection component (e.g., a microphone for identifying audio signals from the tag). Additionally, various information can be derived via communication component 638, such as location via Internet Protocol (IP) geolocation, etc. Location can be determined by signal triangulation or by detecting NFC beacon signals that indicate a specific location.
[0089] Various memories (e.g., main memory 614, static storage 616, and the memory of processor 604) and storage units 618 may store one or more sets of instructions and data structures (e.g., software) used to implement or by any or more of the methods or functions described herein. When executed by processor 604, these instructions (e.g., instruction 610) enable various operations to implement the disclosed examples.
[0090] Instructions 610 can be sent or received over network 622 using a transmission medium via a network interface device (e.g., a network interface component included in communication component 638) and using any of several known transmission protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, instructions 610 can be sent or received using a transmission medium via coupling to device 624 (e.g., peer-to-peer coupling).
[0091] Software Architecture
[0092] Figure 7 This is a block diagram 700 illustrating a software architecture 704, which can be installed on any one or more of the devices described herein. The software architecture 704 is supported by hardware, such as a machine 702 including a processor 720, memory 726, and I / O components 738. In this example, the software architecture 704 can be conceptualized as a stack of layers, where each layer provides specific functionality. The software architecture 704 includes layers such as an operating system 712, libraries 710, frameworks 708, and applications 706. Operationally, application 706 activates API calls 750 via the software stack and receives messages 752 in response to API calls 750.
[0093] Operating system 712 manages hardware resources and provides public services. Operating system 712 includes, for example, a kernel 714, services 716, and drivers 722. Kernel 714 serves as an abstraction layer between hardware and other software layers. For example, kernel 714 provides functions such as memory management, processor management (e.g., scheduling), component management, networking, and security settings. Service 716 can provide other public services to other software layers. Driver 722 is responsible for controlling or interfacing with the underlying hardware. For example, driver 722 may include a display driver, a camera driver, etc. or Low-power drives, flash drives, serial communication drives (e.g., USB drives), Drivers, audio drivers, power management drivers, etc.
[0094] Library 710 provides a common low-level infrastructure used by application 706. Library 710 may include system libraries 718 (e.g., the C standard library) that provide functions such as memory allocation, string manipulation, and mathematical functions. Furthermore, library 710 may include API libraries 724, such as media libraries (e.g., libraries for supporting the rendering 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 codecs, Joint Picture Experts Group (JPEG or JPG), or Portable Web Graphics (PNG)), graphics libraries (e.g., the OpenGL framework for rendering graphic content on a display in two-dimensional (2D) and three-dimensional (3D) formats), database libraries (e.g., SQLite, which provides various relational database functions), web libraries (e.g., WebKit, which provides web browsing capabilities), etc. Library 710 may also include various other libraries 728 to provide many other APIs to application 706.
[0095] Framework 708 provides a common high-level infrastructure used by application 706. For example, framework 708 provides various graphical user interface (GUI) functions, advanced resource management, and advanced location services. Framework 708 can provide a wide range of other APIs that can be used by application 706, some of which may be specific to a particular operating system or platform.
[0096] In the example, application 706 may include a home application 736, a contacts application 730, a browser application 732, a book reader application 734, a location application 742, a media application 744, a messaging application 746, a game application 748, and a variety of other applications such as third-party applications 740. Application 706 is a program that performs the functions defined in the program. Various programming languages can be used to create one or more applications 706 constructed in various ways; these programming languages are 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 particular example, third-party application 740 (e.g., used by an entity other than a vendor of a specific platform). or Applications developed using a Software Development Kit (SDK) can be mobile operating systems, for example... , , Alternatively, mobile software running on another mobile operating system. In this example, a third-party application 740 can activate API calls 750 provided by the operating system 712 to facilitate the functionality described herein.
[0097] Processing components
[0098] Now turn to Figure 8 The diagram shows a schematic representation of a processing environment 800, which includes a processor 802, a processor 806, and a processor 808 (e.g., a GPU, a CPU, or a combination thereof).
[0099] According to the embodiments discussed herein, processor 802 is shown as coupled to power supply 804 and includes being operatively configured to perform, as Figure 3 Method 300 and Figure 4 The modules (permanently configured or temporarily instantiated) discussed in the interface flowchart 400 are the user group module 810, the UI module 712, and the ranking module 814.
[0100] Glossary
[0101] "Carrier signal" refers to any intangible medium or other intangible medium capable of storing, encoding, or carrying machine-executable instructions and including digital or analog communication signals. Instructions can be sent or received over a network using a transmission medium via a network interface device.
[0102] "Client device" refers to any machine that interfaces with a communication network to obtain resources from one or more server systems or other client devices. Client devices can be, but are not limited to, mobile phones, desktop computers, laptop computers, portable digital assistants (PDAs), smartphones, tablet computers, ultrabooks, netbooks, laptop computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, game consoles, set-top boxes, or any other communication device that a user can use to access the network.
[0103] "Communication network" refers to one or more parts of a network, which can be an ad hoc network, intranet, extranet, virtual private network (VPN), local area network (LAN), wireless LAN (WLAN), wide area network (WAN), wireless WAN (WWAN), metropolitan area network (MAN), the Internet, a part of the Internet, a part of the Public Switched Telephone Network (PSTN), a POTS (Plain Old-Style Telephone Service) network, a cellular telephone network, a wireless network, etc. A network, another type of network, or a combination of two or more such networks. For example, a network or part of a network may include a wireless network or a cellular network, and the coupling may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile Communications (GSM) connection, or other types of cellular or wireless coupling. In this example, the coupling can implement any data transmission technology of various types, such as Single Carrier Radio Transmission (1xRTT), Evolved Data Optimization (EVDO), General Packet Radio Service (GPRS), Enhanced Data Rate Evolution of GSM (EDGE), the 3rd Generation Partnership Project (3GPP) including 3G, fourth-generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High-Speed Packet Access (HSPA), Global Microwave Access Interoperability (WiMAX), Long Term Evolution (LTE) standards, other data transmission technologies defined by various standards setting organizations, other long-distance protocols, or other data transmission technologies.
[0104] A “component” refers to a device, physical entity, or logic with boundaries defined by functional or subroutine calls, branch points, APIs, or other technical definitions that provide partitioning or modularity for specific processing or control functions. Components can be combined with other components via their interfaces to perform machine processing. A component can be an encapsulated functional hardware unit designed for use with other components and part of a program that typically performs a specific function in a related function. Components can constitute software components (e.g., code implemented on a machine-readable medium) or hardware components. A “hardware component” is a tangible unit capable of performing certain operations and which can be configured or arranged in some physical manner. In various example implementations, one or more computer systems (e.g., standalone computer systems, client computer systems, or server computer systems) or one or more hardware components (e.g., processors or processor groups) of a computer system can be configured by software (e.g., an application or application portion) to operate to perform certain operations as described herein. Hardware components can also be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware component may include a dedicated circuit system or logic permanently configured to perform certain operations. Hardware components can be dedicated processors, such as field-programmable gate arrays (FPGAs) or application-specific integrated circuits (ASICs). Hardware components can also include programmable logic or circuitry systems that are temporarily configured by software to perform certain operations. For example, a hardware component may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware component becomes a specific machine (or a specific part of a machine) uniquely tailored to perform the configured function, and no longer a general-purpose processor. It should be recognized that the decision to implement hardware components mechanically in a dedicated and permanently configured circuitry system or in a temporarily configured (e.g., software-configured) circuitry system can be made for cost and time considerations. Therefore, the phrase "hardware component" (or "hardware-implemented component") should be understood to include tangible entities, i.e., entities physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate or perform certain operations described herein. Considering the implementation where hardware components are temporarily configured (e.g., programmed), it is not necessary to configure or instantiate each hardware component at any given time. For example, in cases where the hardware components include a general-purpose processor that is configured as a dedicated processor via software, this general-purpose processor can be configured at different times as its respective dedicated processor (e.g., including different hardware components). The software accordingly configures one or more specific processors to constitute a specific hardware component at one time and different hardware components at different times. Hardware components can provide information to and receive information from other hardware components. Therefore, the described hardware components can be considered communicatively coupled.In the presence of multiple hardware components, communication can be achieved through signal transmission between or among two or more hardware components (e.g., via appropriate circuitry and buses). In embodiments where multiple hardware components are configured or instantiated at different times, such communication between hardware components can be achieved, for example, by storing information in a memory structure accessible to the multiple hardware components and retrieving information from that memory structure. For example, a hardware component can perform an operation and store the output of that operation in a memory device communicatively coupled to it. Another hardware component can then access the memory device at a subsequent time to retrieve the stored output and process it. Hardware components can also initiate communication with input or output devices and can operate on resources (e.g., collections of information). The various operations of the example methods described herein can be performed at least in part by one or more processors configured, either temporarily (e.g., by software) or permanently, to perform the relevant operations. Whether temporarily or permanently configured, such processors can constitute processor-implemented components that operate to perform one or more operations or functions described herein. As used herein, "processor-implemented component" refers to a hardware component implemented using one or more processors. Similarly, the methods described herein can be implemented at least in part by processors, wherein a particular processor or one or more processors are examples of hardware. For example, at least some operations of the method can be performed by one or more processors 1004 or processor-implemented components. Furthermore, the one or more processors can also operate to support the execution of related operations in a “cloud computing” environment or as “Software as a Service” (SaaS) operations. For example, at least some operations can be performed by a group of computers (as an example of a machine including a processor), wherein these operations are accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., APIs). The execution of some operations can be distributed across processors, not residing within a single machine, but deployed across multiple machines. In some example implementations, the processor or processor-implemented component can be located in a single geographic location (e.g., within a home environment, office environment, or server cluster). In other example implementations, the processor or processor-implemented component can be distributed across multiple geographic locations.
[0105] "Computer-readable storage medium" refers to both machine-readable storage media and transmission media. Therefore, the term includes both storage devices / media and carrier / modulated data signals. The terms "machine-readable medium," "computer-readable medium," and "device-readable medium" refer to the same thing and can be used interchangeably in this disclosure.
[0106] A "brief message" is a message that is accessible for a limited time. Brief messages can be text, images, videos, etc. The access time for a brief message can be set by the message sender. Alternatively, the access time can be a default setting or a setting specified by the recipient. Regardless of the setting method, the message is transient.
[0107] "Machine storage medium" refers to one or more storage devices and media (e.g., centralized or distributed databases, and associated caches and servers) that store executable instructions, routines, and data. Therefore, the term should be considered to include, but is not limited to, solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage media, computer storage media, and device storage media include: non-volatile memory, including, by way of example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGAs, and flash memory devices; disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROMs and DVD-ROMs. The terms "machine storage medium," "device storage medium," and "computer storage medium" mean the same thing and may be used interchangeably in this disclosure. The terms "machine storage medium," "computer storage medium," and "device storage medium" expressly exclude carrier waves, modulated data signals, and other such media, at least some of which are covered by the term "signal medium."
[0108] "Non-transitory computer-readable storage medium" refers to a tangible medium capable of storing, encoding, or carrying instructions that can be executed by a machine.
[0109] "Signal medium" means a medium capable of storing, encoding, or carrying machine-executable instructions and including digital or analog communication signals or other intangible media that facilitates the communication of software or data. The term "signal medium" should be considered to include any form of modulated data signal, carrier wave, etc. The term "modulated data signal" means a signal in which one or more characteristics of its characteristic set are set or altered to encode information. The terms "transmission medium" and "signal medium" mean the same thing and may be used interchangeably in this disclosure.
Claims
1. A method comprising: The messaging application on the client device receives messages from the first user that are directed to one or more receivers; Receive a request to compose a response to the message from a second user associated with the client device; Identify one or more groups that include both the first user and the second user and have membership; This causes the presentation of one or more selectable interface elements representing the one or more groups to be displayed on the client device; Receive selection by the second user from one or more of the suggested groups for at least one suggested group; as well as The response to the message includes the selected group of at least one of the suggested groups.
2. The method according to claim 1, wherein, The method further includes determining one or more suggested recipients of the message based on one or more of the following: The content of the message; The response to the message; and The second user's recent message sending and receiving activities.
3. The method according to claim 2, wherein, The content of the message includes one or more user identifiers.
4. The method according to claim 1, wherein, The presentation of the one or more selectable interface elements includes: Determine the ranking of each of the one or more groups; and This enables the presentation of one or more selectable interface elements to be displayed based on the ranking.
5. The method according to claim 1, wherein, The ranking of each of the one or more groups is based on one or more of the following: The frequency of interactions associated with each of the one or more groups; The proximity of interactions associated with each of the one or more groups; as well as The number of bidirectional connections between the first user, the second user, and users in each of the one or more groups.
6. The method according to claim 1, wherein, The one or more selectable interface elements representing the one or more groups include identifiers and group member counts.
7. The method according to claim 1, wherein, The presentation of the one or more selectable interface elements includes: The one or more interface elements are presented in a horizontal arrangement, which enables scrolling to view additional interface elements beyond the initially visible portion of the one or more interface elements.
8. A system comprising: One or more processors; as well as The memory includes instructions that, when executed by the one or more processors, cause the one or more processors to perform operations, the operations including: The messaging application on the client device receives messages from the first user that are directed to one or more receivers; Receive a request to compose a response to the message from a second user associated with the client device; Identify one or more groups that include both the first user and the second user and have membership; This causes the presentation of one or more selectable interface elements representing the one or more groups to be displayed on the client device; Receive the selection of at least one suggested group from the one or more groups by the second user; and The response to the message includes the selected group of at least one of the suggested groups.
9. The system according to claim 8, wherein, The method further includes determining one or more suggested recipients of the message based on one or more of the following: The content of the message; The response to the message; and The second user's recent message sending and receiving activities.
10. The system according to claim 9, wherein, The content of the message includes one or more user identifiers.
11. The system according to claim 8, wherein, The presentation of the one or more selectable interface elements includes: Determine the ranking of each of the one or more groups; and This enables the presentation of one or more selectable interface elements to be displayed based on the ranking.
12. The system according to claim 8, wherein, The ranking of each of the one or more groups is based on one or more of the following: The frequency of interactions associated with each of the one or more groups; The proximity of interactions associated with each of the one or more groups; as well as The number of bidirectional connections between the first user, the second user, and users in each of the one or more groups.
13. The system according to claim 8, wherein, The one or more selectable interface elements representing the one or more groups include identifiers and group member counts.
14. Wherein, according to the subject matter of claim 8, wherein, The message includes media content.
15. A machine-readable storage medium including instructions that, when executed by one or more processors of the machine, cause the machine to perform operations, the operations including: The messaging application on the client device receives messages from the first user that are directed to one or more receivers; Receive a request to compose a response to the message from a second user associated with the client device; Identify one or more groups that include both the first user and the second user and have membership; This causes the presentation of one or more selectable interface elements representing the one or more groups to be displayed on the client device; Receive selection by the second user from one or more of the suggested groups for at least one suggested group; as well as The response to the message includes the selected group of at least one of the suggested groups.
16. The machine-readable storage medium according to claim 15, wherein, The method further includes determining one or more suggested recipients of the message based on one or more of the following: The content of the message; The response to the message; and The second user's recent message sending and receiving activities.
17. The machine-readable storage medium of claim 16, wherein, The content of the message includes one or more user identifiers.
18. The machine-readable storage medium according to claim 15, wherein, The presentation of the one or more selectable interface elements includes: Determine the ranking of each of the one or more groups; and This enables the presentation of one or more selectable interface elements to be displayed based on the ranking.
19. The machine-readable storage medium according to claim 15, wherein, The ranking of each of the one or more groups is based on one or more of the following: The frequency of interactions associated with each of the one or more groups; The proximity of interactions associated with each of the one or more groups; as well as The number of bidirectional connections between the first user, the second user, and users in each of the one or more groups.
20. The machine-readable storage medium of claim 15, wherein, The one or more selectable interface elements representing the one or more groups include identifiers and group member counts.