Movatterモバイル変換


[0]ホーム

URL:


US8977607B1 - System and method for threading electronic messages - Google Patents

System and method for threading electronic messages
Download PDF

Info

Publication number
US8977607B1
US8977607B1US14/227,366US201414227366AUS8977607B1US 8977607 B1US8977607 B1US 8977607B1US 201414227366 AUS201414227366 AUS 201414227366AUS 8977607 B1US8977607 B1US 8977607B1
Authority
US
United States
Prior art keywords
database
thread
message
electronic
latest
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
US14/227,366
Inventor
Xiaobin Lu
Elaine Chien
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
LinkedIn Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LinkedIn CorpfiledCriticalLinkedIn Corp
Priority to US14/227,366priorityCriticalpatent/US8977607B1/en
Assigned to LINKEDIN CORPORATIONreassignmentLINKEDIN CORPORATIONASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: CHIEN, ELAINE, LU, XIAOBIN
Priority to US14/613,642prioritypatent/US10320731B2/en
Application grantedgrantedCritical
Publication of US8977607B1publicationCriticalpatent/US8977607B1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLCreassignmentMICROSOFT TECHNOLOGY LICENSING, LLCASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: LINKEDIN CORPORATION
Expired - Fee Relatedlegal-statusCriticalCurrent
Anticipated expirationlegal-statusCritical

Links

Images

Classifications

Definitions

Landscapes

Abstract

A system and method includes a network interface device to receive and retransmit electronic messages between a first user and a second user, an electronic data storage configured to store database entries related to electronic messages as received and retransmitted by the network interface device, at least some of the database entries including a latest message in thread flag identifying a latest electronic message in a thread of multiple electronic messages, and a processor. The processor may create a database entry corresponding to a first electronic message, the database entry including the latest message in thread flag indicating that the first electronic message is a latest electronic message of a thread, and change a status of a latest message in thread flag of a database entry corresponding to a second electronic message of the thread to indicate that the second electronic message is not a latest message in the thread.

Description

PRIORITY
This patent application claims the benefit of priority to U.S. Provisional Patent Application Ser. No. 61/946,163, filed on Feb. 28, 2014, which is incorporated herein by reference in its entirety.
TECHNICAL FIELD
The subject matter disclosed herein generally relates to threading electronic messages.
BACKGROUND
Computerized networking, such as computer networks, cellular networks, and the like, has long enabled electronic messages to be exchanged between users of various networks in various forms. Email, text message, personal messages, instant messages, simple mail transfer protocol (SMTP) messages, and the like, provide for one or more users of the computerized network to send text and/or files of various sorts to one another. Such electronic messages may be facilitated by any of a variety of platforms, such as dedicated messaging applications, applications in which electronic messaging may be ancillary to the primary function of the application, such as social networks, cellular telephones and other handheld electronic devices, and web-based interfaces.
BRIEF DESCRIPTION OF THE DRAWINGS
Some embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings.
FIG. 1 is a block diagram illustrating various components or functional modules of a social network, in an example embodiment.
FIGS. 2A-2D show an electronic message flow diagram between users of thesocial network100 and the development of accompanying databases that are based on the electronic message flow, in an example embodiment.
FIG. 3 is a user interface in which electronic messages are displayed according to thread, in an example embodiment.
FIG. 4 is a flowchart for threading electronic messages, in an example embodiment.
FIG. 5 is a block diagram illustrating components of a machine able to read instructions from a machine-readable medium.
DETAILED DESCRIPTION
Example methods and systems are directed to threading electronic messages. Examples merely typify possible variations. Unless explicitly stated otherwise, components and functions are optional and may be combined or subdivided, and operations may vary in sequence or be combined or subdivided. In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of example embodiments. It will be evident to one skilled in the art, however, that the present subject matter may be practiced without these specific details.
Electronic messages may be organized for presentation to parties to the messages, such as recipients and senders, according to a variety of criteria. Electronic messages may be displayed in the order in which they were received, according to the sender of the message, according to the recipient of the message, according to a message type, according to a file attachment to the message, and so forth. Electronic messages may further be organized according to a message thread that may develop as messages are interacted with by the parties to the messages, such as by replying to or forwarding messages. Thus, messages that are based on the same original message and that have been generated according to replies, forwards, and the like may be organized to provide ease of access to the messages that make up the thread.
Electronic messages may be organized in databases or other data storage formats. Such databases or data storage formats may include fields for storing both the data of the message, such as the text or files that make up the content of the message, as well as metadata of the message, such as a timestamp, an identity of the sender and recipient of the message, and so forth. The capabilities of the database in which the electronic messages are stored may impact how the electronic messages may be organized for presentation to the parties to the message. For instance, in the absence of a “group by” clause supported by certain databases, implementing data grouping for organizing threads may not be straightforward.
A system has been developed that utilizes a flag, such as a Boolean flag, and a sequence number to enable various groupings of electronic messages, such as according to a message thread. In the context of electronic message threading, all the messages belonging to the same thread may share the same thread identifier and a most recent message of the of the thread may have a flag that indicates that the message is the most recent message in time. When performing a query, only those messages that have a “true” flag, indicating that the message is most recent in time of a given thread, may be returned. Also, with sequence number, we can determine which message should have that flag to set when messages move between inbox and archive or trash folder.
FIG. 1 is a block diagram illustrating various components or functional modules of asocial network100, consistent with some examples. Thesocial network100 may be utilized to provide treaded electronic messages within the user interface of thesocial network100. While the threading of electronic messages are described with particular respect to thesocial network100, it is to be recognized and understood that the principles described with respect to threaded electronic messages may be applied to any of a variety of platforms and electronic messages beyond those directly applicable to a social network generally.
Afront end101 consists of a user interface module (e.g., a web server)102, which receives requests from various client-computing devices, and communicates appropriate responses to the requesting client devices. For example, the user interface module(s)102 may receive requests in the form of Hypertext Transport Protocol (HTTP) requests, or other web-based, application programming interface (API) requests. An application logic layer103 includes variousapplication server modules104, which, in conjunction with the user interface module(s)102, may generate various user interfaces (e.g., web pages, applications, etc.) with data retrieved from various data sources in a data layer105. In some examples, individualapplication server modules104 may be used to implement the functionality associated with various services and features of the social network service. For instance, the ability of an organization to establish a presence in the social graph of thesocial network100, including the ability to establish a customized web page on behalf of an organization, and to publish messages or status updates on behalf of an organization, may be services implemented in independentapplication server modules104. Similarly, a variety of other applications or services that are made available to members of the social network service may be embodied in their ownapplication server modules104. Alternatively, various applications may be embodied in a singleapplication server module104.
In some examples, thesocial network100 includes a contentitem publishing module106, such as may be utilized to receive content, such as electronic messages, posts, links, images, videos, and the like, and publish the content to the social network. The contentitem publishing module106, or thesocial network100 generally, may include anelectronic messages module108. As will be disclosed in detail herein, theelectronic messages module108 may manage electronic messages and organize and display such electronic messages according to a related thread.
As illustrated, the data layer105 includes, but is not necessarily limited to,several databases110,112,114, such as adatabase110 for storing profile data, including both member profile data as well as profile data for various organizations. Consistent with some examples, when a person initially registers to become a member of the social network service, the person may be prompted to provide some personal information, such as his or her name, age (e.g., birthdate), gender, interests, contact information, home town, address, the names of the member's spouse and/or family members, educational background (e.g., schools, majors, matriculation and/or graduation dates, etc.), employment history, skills, professional organizations, and so on. This information is stored, for example, in thedatabase110. Similarly, when a representative of an organization initially registers the organization with the social network service, the representative may be prompted to provide certain information about the organization. This information may be stored, for example, in thedatabase110, or another database (not shown). With some examples, the profile data may be processed (e.g., in the background or offline) to generate various derived profile data. For example, if a member has provided information about various job titles the member has held with the same or different companies, and for how long, this information can be used to infer or derive a member profile attribute indicating the member's overall seniority level, or seniority level within a particular company. With some examples, importing or otherwise accessing data from one or more externally hosted data sources may enhance profile data for both members and organizations. For instance, with companies in particular, financial data may be imported from one or more external data sources, and made part of a company's profile.
Once registered, a member may invite other members, or be invited by other members, to connect via the social network service. A “connection” may require a bi-lateral agreement by the members, such that both members acknowledge the establishment of the connection. Similarly, with some examples, a member may elect to “follow” another member. In contrast to establishing a connection, the concept of “following” another member typically is a unilateral operation, and at least with some examples, does not require acknowledgement or approval by the member that is being followed. When one member follows another, the member who is following may receive status updates or other messages published by the member being followed, or relating to various activities undertaken by the member being followed. Similarly, when a member follows an organization, the member becomes eligible to receive messages or status updates published on behalf of the organization. For instance, messages or status updates published on behalf of an organization that a member is following will appear in the member's personalized data feed or content stream. In any case, the various associations and relationships that the members establish with other members, or with other entities and objects, are stored and maintained within thesocial graph database112.
The social network service may provide a broad range of other applications and services that allow members the opportunity to share and receive information, often customized to the interests of the member. For example, with some examples, the social network service may include a photo sharing application that allows members to upload and share photos with other members. With some examples, members may be able to self-organize into groups, or interest groups, organized around a subject matter or topic of interest. With some examples, the social network service may host various job listings providing details of job openings with various organizations.
As members interact with the various applications, services and content made available via the social network service, information concerning content items interacted with, such as by viewing, playing, and the like, etc.) may be monitored and information concerning the interaction may be stored, for example, as indicated inFIG. 1 by thedatabase114. Thus, interactions with a content item by various users of thesocial network100 may be stored and utilized in determining a status of a user who posted the content item (i.e., an influence status or level of the user) and an overall popularity of the content item.
Theprofile data database110 and themember activity database114 may, among other sources in thesocial network100, include orstore events116. Such events include but are not necessarily limited to the posting of content items, birthdays, anniversaries, change of status (employment, location, etc.), a publication, and a previous interaction. Previous interactions may include electronic messages exchanged between members or users of thesocial network100. Consequently, themember activity database114 may be or may include database entries recording electronic messages exchanged over the social network, as disclosed herein. Events may be stored automatically and/or may be stored on the basis of a user selection or choice.
Although not shown, with some examples, thesocial network100 provides an application programming interface (API) module via which third-party applications can access various services and data provided by the social network service. For example, using an API, a third-party application may provide a user interface and logic that enables an authorized representative of an organization to publish messages from a third-party application to various content streams maintained by the social network service. Such third-party applications may be browser-based applications, or may be operating system-specific. In particular, some third-party applications may reside and execute on one or more mobile devices (e.g., phone, or tablet computing devices) having a mobile operating system.
FIGS. 2A-2D show an electronic message flow diagram between users of thesocial network100 and the development of accompanying databases that are based on the electronic message flow, in an example embodiment. The follow diagram200 (FIG. 2A) illustrates the exchange of electronic messages of a thread between afirst user202 and asecond user204 by way of thesocial network100 as managed by theelectronic messages module108. The first andsecond users202,204 may be understood to represent both the entity who is the user of thesocial network100 as well as the computing equipment with which the user is interacting with thesocial network100 and generating electronic messages.
A first user database206 (FIGS. 2B-2D) is stored in themember activity database114 to record the electronic messages as the electronic messages relate to thefirst user202. A second user database208 (FIGS. 2B-2D) is stored in themember activity database114 to record the electronic messages as the electronic messages relate to thesecond user204. While a single thread is illustrated, it is to be understood that multiple threads may exist between the first andsecond users200,202 concurrently and between the first andsecond users200,202 and other users of the social network.
In flow step (1), when thefirst user202 transmits a first electronic message M1 to thesecond user204, data related to the first electronic message M1 passes over anetwork connection210A to thesocial network100 and, in particular, to theelectronic messages module108. Theelectronic messages module108 extracts relevant data and metadata from the first electronic message M1 and stores the data and metadata as extracted in a first electronicmessage database entry212 in the first user database206.
In flow step (2), theelectronic messages module108 establishes a second electronicmessage database entry213 for the first electronic message M1 in the second user database208 with data and metadata consistent from the perspective of thesecond user204. Theelectronic message module108 then transmits the first electronic message M1 to thesecond user204. Thedatabases206B,208B illustrated inFIG. 2B reflect the state of the databases following the transmittal of the first electronic message M1 to thesecond user204.
As illustrated, the first user database206 includes amessage identification field214, anIS_IN_INBOX flag216, asubject field218, abody field220, arecipient field222, atimestamp field224, athread identification field226, aLAST_MESSAGE_IN_THREAD flag228, and a threadmessage sequence field230. Themessage identification field214 may store a unique identifier for the first electronic message M1 as generated by theelectronic messages module108. In an example, the unique identifier is globally unique to the first electronic message M1, though in alternative examples the identifier is locally unique according to any of a variety of criteria.
In an example, theIS_IN_INBOX flag216 may store metadata that indicates if the first electronic message M1 is currently included in the inbox of thefirst user202. An inbox is used in this context as the term is commonly understood, such as primarily including electronic messages that have been received by the owner of the account associated with the inbox and electronic messages deliberate transferred in to the inbox by the user. The inbox may not conventionally or automatically include electronic messages sent by the user of the associated electronic message account and may not include electronic messages that have been deleted or otherwise from the inbox, such as to be archived out of the inbox. The inbox may include folders into which electronic messages have been or may be stored for organizational purposes. TheIS_IN_INBOX flag216 may be static (e.g., upon being set may not be updated regardless of the current status of the associated electronic message) or may be updated based on the current status of the associated electronic message.
Thesubject field218 may store a subject line of the first electronic message M1. The subject line may be a subject line of the electronic as well understood in the art and as produced by thefirst user202. Thebody field220 similarly may store the body of the first electronic message M1 as well understood in the art, including text and file attachments to the first electronic message M1.
Therecipient field222 may denote the recipient of the first electronic message M1, in this case thesecond user204. Therecipient field222 may store an identifier of thesecond user204, such as a social network account identifier, a general networking identifier, or other identifier that may uniquely identify thesecond user204. In an example, thetimestamp field224 may denote a time theelectronic message module108 received or otherwise processed the first electronic message M1. Alternatively, thetimestamp field224 may be populated with a timestamp from the first electronic message M1, such as reflecting a time the first electronic message M1 was sent from thefirst user202.
Thethread identification field226 may include a unique identifier for the thread associated with the first electronic message M1. In an example, thethread identification field226 is populated with the message identifier of the first message of the thread, i.e., in the case of the first electronic message M1 thethread identification field226 is populated with the same entry as in themessage identification field214. Thus, in the illustrated example, themessage identification field214 and thethread identification field226 are both populated with the numeral “1000”. As such, while the first electronic message M1 of the thread have the same value in the identification fields214,226, subsequent electronic messages of the thread will include the same thread identifier in thethread identification field226 as the first electronic message M1 while having a unique message identifier in themessage identification field214.
TheLAST_MESSAGE_IN_THREAD flag228 denotes the last message in the thread in its respective database206,208 and that is in the inbox and not in the inbox for the respective database206,208. Thus, if there are both messages that are in the inbox and not in the inbox in a given database206,208 then potentially two electronic message may have theLAST_MESSAGE_IN_THREAD flag228 set to “true”. TheLAST_MESSAGE_IN_THREAD flag228 may be set based on thetimestamp field224, with the latest electronic message in time having theLAST_MESSAGE_IN_THREAD flag228 set as “true”, according to themessage identification field214, with the highest message identifier resulting in theLAST_MESSAGE_IN_THREAD flag228 being set to “true”, according to the threadmessage sequence field230, with the highest value (as discussed below) resulting in theLAST_MESSAGE_IN_THREAD flag228 being set to “true”, or according to any of a variety of criteria. The threadmessage sequence field230 may be set by providing a unique identifier for the first electronic message M1 in the thread, e.g., by starting at a value and incrementing the value with each new database entry, among various potential mechanisms.
It is noted and emphasized that, while, for instance, theIS_IN_INBOX flag216 may optionally be adjusted following a change of status of an electronic message to or from an inbox, theLAST_MESSAGE_IN_THREAD flag228 may be changed upon identification that the status of the electronic message in question has changed. Thus, as will be illustrated herein, if a given electronic message has theLAST_MESSAGE_IN_THREAD flag228 set to “true” but that status is no longer correct then theLAST_MESSAGE_IN_THREAD flag228 may be set to “false” for that electronic message.
In an example, a procedure may be established to identify one “true”LAST_MESSAGE_IN_THREAD flag228 that is the legitimate last message in the thread for the respective user database206,208. In an example, conflicting “true”flags228 may be resolved according to the highest threadmessage sequence field230 value. Additionally or alternatively, thetimestamp field224 ormessage identification field214 may be utilized, among various potential mechanisms for resolving the conflict between competing “true” flags.
In flow step (3) thesecond user204 replies to the first electronic message M1 by generating and transmitting a second electronic message M2. The reply message M2 may be generated according to any of a variety of mechanisms for responding to electronic messages known in the art, such as replying, forwarding, and the like. The second electronic message M2 is transmitted via thesecond network connection210B to theelectronic messages module108. Theelectronic messages module108 may then establish a third electronicmessage database entry232 in thesecond user database206C (FIG. 2C) consistent with the second electronic message M2 as received from thesecond user204.
In flow step (4) theelectronic messages module108 transmits the second electronic message M2 to thefirst user202. Theelectronic message module108 further creates a fourth electronicmessage database entry234 in thefirst user database206C (FIG. 2C) consistent with the second electronic message M2 as transmitted.
In flow step (5) thefirst user202 replies to the second electronic message M2 by generating and transmitting a third electronic message M3. The reply message M3 may be generated according to any of a variety of mechanisms for responding to electronic messages known in the art, such as replying, forwarding, and the like. The third electronic message M3 is transmitted via thesecond network connection210B to theelectronic messages module108. Theelectronic messages module108 may then establish a fifth electronicmessage database entry236 in thefirst user database206D (FIG. 2D) consistent with the third electronic message M3 as received from thefirst user204.
In flow step (6) theelectronic messages module108 transmits the third electronic message M3 to thesecond user204. Theelectronic message module108 further creates a sixth electronicmessage database entry238 in thesecond user database208D (FIG. 2D) consistent with the second electronic message M2 as transmitted.
As illustrated in the transitions of the contents of the first and second databases206,208, theLAST_MESSAGE_IN_THREAD flag228 may change as new electronic messages are added to the thread. Thus, for instance, when the third electronic message M3 is entered in thefirst user database202 as the fifth electronicmessage database entry238, the first electronicmessage database entry212 no longer corresponds to the latest electronic message in thefirst user database202. Thus, theLAST_MESSAGE_IN_THREAD flag228 of the first electronicmessage database entry212 is set from “true” to “false” and theLAST_MESSAGE_IN_THREAD flag228 of the fifth electronicmessage database entry238 is set to “true”.
The electronic messages may include fields that may not necessarily be included in thedatabase entries212,213,232,234,236,238 but which may be utilized in populating the database entries'212,213,232,234,236,238 fields. For instance, the first electronic message M1 is the originator of the illustrated thread is not related to a previous electronic message, and thus a relatedToID field of the first electronic message M1 may be “null”. While the relatedToID field of the first electronic message M1 may not be stored in the first user database206, the “null” status of the relatedToID field of the first electronic message M1 may provide the basis for setting thethread identification field226 of the first electronicmessage database entry212 the same as themessage identification field214, i.e., identify the first electronicmessage database entry212 as being the start of the thread.
In an example, if the relatedToID field of an electronic message is “null”, a new thread is created in the appropriate one of the first and second user databases206,208. If the relatedToID field is not null, the relatedToID may identify the preceding electronic message, e.g. M1, to which the current electronic message, e.g., M2, relates and retrieve the electronic message database entry that corresponds to the related message, e.g., the first electronicmessage database entry212. Upon retrieving the associated electronic database entry, thethread identification field226 corresponding to the reply message M2 may be set to thethread identification field226 of the original message M1. The thread identification may also be utilized to finds a database entry that corresponds to theLAST_MESSAGE_IN_THREAD flag228 being “true”. The “true” flag may be set to “false” for the previously-last electronic message while theLAST_MESSAGE_IN_THREAD flag228 may be set to “true” for new message, e.g., M2.
FIG. 3 is a user interface in which electronic messages are displayed according to thread, in an example embodiment.Electronic messages300 are displayed grouped according tothread302. A latest electronic message300(1) of eachthread302 is displayed in a more prominent position, such as on top of a stack ofelectronic messages300 of the thread or as the onlyelectronic message300 of thethread302 that is displayed unless thethread302 is selected, whereupon the otherelectronic messages300 of thethread302 may be displayed.
Flowchart
FIG. 4 is a flowchart for threading electronic messages, in an example embodiment. The flowchart may be performed with any of a variety of devices and systems disclosed herein, as well as with any suitable system known in the art.
Atoperation400, a database entry is created in an electronic data storage, the database entry corresponding to a first electronic message as received or retransmitted by a network interface device between a first user and a second user, the database entry including the latest message in thread flag indicating that the first electronic message is a latest electronic message of a thread corresponding to the first electronic message. In an example, the database entries further include a message identification field and a thread identification field, wherein each database entry corresponding to an electronic message of the thread includes a unique message identifier in its respective message identifier field and a common thread identifier in its respective thread identifier field. In an example, the thread includes an initial electronic message, wherein the common thread identifier of the thread is based, at least in part, on a message identifier of the initial electronic message. In an example, the common thread identifier is the same as the message identifier of the initial electronic message.
In an example, the electronic data storage is configured to store a first database corresponding to electronic messages received from and retransmitted to the first user and a second database corresponding to electronic messages received from and retransmitted to the second user, the common thread identifier being common to electronic messages corresponding to the thread in both the first and second databases. In an example, each of the first and second databases include at least one database entry having a latest message in thread flag indicating that a corresponding electronic message is the latest message in the thread.
Atoperation402, a status of a latest message in thread flag of a database entry corresponding to a second electronic message of the thread is changed to indicate that the second electronic message is not a latest message in the thread.
Atoperation404, the processor resolves conflicting latest message in thread flag statuses based, at least in part, on at least one of the timestamp field and the thread sequence field of the respective database entries. In an example, at least some of the database entries include at least one of a timestamp field and a thread sequence field.
System
FIG. 5 is a block diagram illustrating components of amachine500, according to some example embodiments, able to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any one or more of the methodologies discussed herein. Specifically,FIG. 5 shows a diagrammatic representation of themachine500 in the example form of a computer system and within which instructions524 (e.g., software) for causing themachine500 to perform any one or more of the methodologies discussed herein may be executed. In alternative embodiments, themachine500 operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, themachine500 may 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. Themachine500 may be a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a smartphone, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing theinstructions524, sequentially or otherwise, that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include a collection of machines that individually or jointly execute theinstructions524 to perform any one or more of the methodologies discussed herein.
Themachine500 includes a processor502 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio-frequency integrated circuit (RFIC), or any suitable combination thereof), amain memory504, and astatic memory506, which are configured to communicate with each other via abus508. Themachine500 may further include a graphics display510 (e.g., a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)). Themachine500 may also include an alphanumeric input device512 (e.g., a keyboard), a cursor control device514 (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instrument), astorage unit516, a signal generation device518 (e.g., a speaker), and anetwork interface device520.
Thestorage unit516 includes a machine-readable medium522 on which is stored the instructions524 (e.g., software) embodying any one or more of the methodologies or functions described herein. Theinstructions524 may also reside, completely or at least partially, within themain memory504, within the processor502 (e.g., within the processor's cache memory), or both, during execution thereof by themachine500. Accordingly, themain memory504 and theprocessor502 may be considered as machine-readable media. Theinstructions524 may be transmitted or received over anetwork526 via thenetwork interface device520.
As used herein, the term “memory” refers to a machine-readable medium able to store data temporarily or permanently and may be taken to include, but not be limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, and cache memory. While the machine-readable medium522 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store instructions. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, that is capable of storing instructions (e.g., software) for execution by a machine (e.g., machine500), such that the instructions, when executed by one or more processors of the machine (e.g., processor502), cause the machine to perform any one or more of the methodologies described herein. Accordingly, a “machine-readable medium” refers to a single storage apparatus or device, as well as “cloud-based” storage systems or storage networks that include multiple storage apparatus or devices. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, one or more data repositories in the form of a solid-state memory, an optical medium, a magnetic medium, or any suitable combination thereof.
Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules. A “hardware module” is a tangible unit capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
In some embodiments, a hardware module may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic that is permanently configured to perform certain operations. For example, a hardware module may be a special-purpose processor, such as a field programmable gate array (FPGA) or an ASIC. A hardware module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware module may include software encompassed within a general-purpose processor or other programmable processor. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the phrase “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where a hardware module comprises a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different special-purpose processors (e.g., comprising different hardware modules) at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) between or among two or more of the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions described herein. As used herein, “processor-implemented module” refers to a hardware module implemented using one or more processors.
Similarly, the methods described herein may be at least partially processor-implemented, a processor being an example of hardware. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. Moreover, the one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an application program interface (API)).
The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the one or more processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of geographic locations.
Some portions of this specification are presented in terms of algorithms or symbolic representations of operations on data stored as bits or binary digital signals within a machine memory (e.g., a computer memory). These algorithms or symbolic representations are examples of techniques used by those of ordinary skill in the data processing arts to convey the substance of their work to others skilled in the art. As used herein, an “algorithm” is a self-consistent sequence of operations or similar processing leading to a desired result. In this context, algorithms and operations involve physical manipulation of physical quantities. Typically, but not necessarily, such quantities may take the form of electrical, magnetic, or optical signals capable of being stored, accessed, transferred, combined, compared, or otherwise manipulated by a machine. It is convenient at times, principally for reasons of common usage, to refer to such signals using words such as “data,” “content,” “bits,” “values,” “elements,” “symbols,” “characters,” “terms,” “numbers,” “numerals,” or the like. These words, however, are merely convenient labels and are to be associated with appropriate physical quantities.
Unless specifically stated otherwise, discussions herein using words such as “processing,” “computing,” “calculating,” “determining,” “presenting,” “displaying,” or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or any suitable combination thereof), registers, or other machine components that receive, store, transmit, or display information. Furthermore, unless specifically stated otherwise, the terms “a” or “an” are herein used, as is common in patent documents, to include one or more than one instance. Finally, as used herein, the conjunction “or” refers to a non-exclusive “or,” unless specifically stated otherwise.

Claims (21)

What is claimed is:
1. A system, comprising:
a network interface device configured to receive and retransmit electronic messages between a first user and a second user;
an electronic data storage configured to store a first database and a second database, each database configured to store database entries related to electronic messages as received and retransmitted by the network interface device, at least some of the database entries including a binary latest message in thread flag identifying a latest electronic message in a thread of multiple electronic messages as stored in a respective one of the first database and the second database, wherein the first database corresponds to electronic messages received from the network interface device and retransmitted to the first user and the second database corresponds to electronic messages received from the network interface device and retransmitted to the second user; and
a processor, coupled to the electronic data storage, configured to:
create, in one of the first database and the second database, a database entry corresponding to a first electronic message as received or retransmitted to a respective one of the first user and the second user, the database entry including the latest message in thread flag indicating that the first electronic message is a latest electronic message of a thread corresponding to the first electronic message;
changing a status of a latest message in thread flag of a database entry in the one of the first database and the second database corresponding to a second electronic message of the thread to indicate that the second electronic message is not a latest message in the thread; and
cause a user interface to display data indicative of the first and second electronic messages based, at least in part, on the data base entries;
wherein the first electronic message is transmitted from the first user to the network interface and retransmitted from the network interface to the second user, wherein the database entry is a first database entry created in the first database, and wherein the processor is further configured to generate a second database entry corresponding to the first electronic message in the second database;
wherein the first database entry includes an inbox field having a false binary entry and the second database entry includes an inbox field having a true binary field; and
wherein, for each of the first database and the second database, the latest message in thread flag is set to true for a latest database entry in the thread that includes the inbox field having the false binary entry and is set to true for a latest database entry in the thread that has the inbox field having the true binary entry.
2. The system ofclaim 1, wherein the database entries further include a message identification field and a thread identification field, wherein each database entry corresponding to an electronic message of the thread includes a unique message identifier in its respective message identifier field and a common thread identifier in its respective thread identifier field.
3. The system ofclaim 2, wherein the thread includes an initial electronic message, wherein the common thread identifier of the thread is based, at least in part, on a message identifier of the initial electronic message.
4. The system ofclaim 3, wherein the common thread identifier is the same as the message identifier of the initial electronic message.
5. The system ofclaim 2, wherein the common thread identifier is common to electronic messages corresponding to the thread in both the first and second databases.
6. The system ofclaim 1, wherein the each of the first and second databases include at least one database entry having a latest message in thread flag indicating that a corresponding electronic message is the latest message in the thread.
7. The system ofclaim 1, wherein at least some of the database entries include at least one of a timestamp field and a thread sequence field, wherein processor is further configured to resolve conflicting latest message in thread flag statuses based, at least in part, on at least one of the timestamp field and the thread sequence field of the respective database entries.
8. A method, comprising:
creating, with a processor, a database entry in one of a first database and a second database stored in an electronic data storage, the database entry corresponding to a first electronic message as received or retransmitted by a network interface device between a first user and a second user, the database entry including a binary latest message in thread flag indicating that the first electronic message is a latest electronic message of a thread corresponding to the first electronic message as stored in a respective one of the first database and the second database, wherein the first database corresponds to electronic messages received from the network interface device and retransmitted to the first user and the second database corresponds to electronic messages received from the network interface device and retransmitted to the second user;
changing, with the processor, in the one of the first database and the second database, a status of a latest message in thread flag of a database entry corresponding to a second electronic message of the thread to indicate that the second electronic message is not a latest message in the thread; and
causing a user interface to display data indicative of the first and second electronic messages based, at least in part, on the data base entries;
wherein the first electronic message is transmitted from the first user to the network interface and retransmitted from the network interface to the second user, wherein the database entry is a first database entry created in the first database, and wherein the processor is further configured to generate a second database entry corresponding to the first electronic message in the second database;
wherein the first database entry includes an inbox field having a false binary entry and the second database entry includes an inbox field having a true binary field; and
wherein, for each of the first database and the second database, the latest message in thread flag is set to true for a latest database entry in the thread that includes the inbox field having the false binary entry and is set to true for a latest database entry in the thread that has the inbox field having the true binary entry.
9. The method ofclaim 8, wherein the database entries further include a message identification field and a thread identification field, wherein each database entry corresponding to an electronic message of the thread includes a unique message identifier in its respective message identifier field and a common thread identifier in its respective thread identifier field.
10. The method ofclaim 9, wherein the thread includes an initial electronic message, wherein the common thread identifier of the thread is based, at least in part, on a message identifier of the initial electronic message.
11. The method ofclaim 10, wherein the common thread identifier is the same as the message identifier of the initial electronic message.
12. The method ofclaim 9, wherein the common thread identifier is common to electronic messages corresponding to the thread in both the first and second databases.
13. The method ofclaim 9, wherein each of the first and second databases include at least one database entry having a latest message in thread flag indicating that a corresponding electronic message is the latest message in the thread.
14. The method ofclaim 8, wherein at least some of the database entries include at least one of a timestamp field and a thread sequence field, wherein processor is further configured to resolve conflicting latest message in thread flag statuses based, at least in part, on at least one of the timestamp field and the thread sequence field of the respective database entries.
15. A non-transitory computer readable storage medium, comprising:
a database entry creation module configured to create, in one of a first database and a second database stored in an electronic data storage, the database entry corresponding to a first electronic message as received or retransmitted by a network interface device between a first user and a second user, the database entry including a binary latest message in thread flag indicating that the first electronic message is a latest electronic message of a thread corresponding to the first electronic message as stored in a respective one of the first database and the second database, wherein the first database corresponds to electronic messages received from the network interface device and retransmitted to the first user and the second database corresponds to electronic messages received from the network interface device and retransmitted to the second user;
a database entry changing module configured to change, in the one of the first database and the second database, a status of a latest message in thread flag of a database entry corresponding to a second electronic message of the thread to indicate that the second electronic message is not a latest message in the thread; and
a user interface display module configured to cause a user interface to display data indicative of the first and second electronic messages based, at least in part, on the data base entries;
wherein the first electronic message is transmitted from the first user to the network interface and retransmitted from the network interface to the second user, wherein the database entry is a first database entry created in the first database, and wherein the processor is further configured to generate a second database entry corresponding to the first electronic message in the second database;
wherein the first database entry includes an inbox field having a false binary entry and the second database entry includes an inbox field having a true binary field; and
wherein, for each of the first database and the second database, the latest message in thread flag is set to true for a latest database entry in the thread that includes the inbox field having the false binary entry and is set to true for a latest database entry in the thread that has the inbox field having the true binary entry.
16. The non-transitory computer readable storage medium ofclaim 15, wherein the database entries further include a message identification field and a thread identification field, wherein each database entry corresponding to an electronic message of the thread includes a unique message identifier in its respective message identifier field and a common thread identifier in its respective thread identifier field.
17. The non-transitory computer readable storage medium ofclaim 16, wherein the thread includes an initial electronic message, wherein the common thread identifier of the thread is based, at least in part, on a message identifier of the initial electronic message.
18. The non-transitory computer readable storage medium ofclaim 17, wherein the common thread identifier is the same as the message identifier of the initial electronic message.
19. The non-transitory computer readable storage medium ofclaim 16, wherein the common thread identifier is common to electronic messages corresponding to the thread in both the first and second databases.
20. The non-transitory computer readable storage medium ofclaim 16, wherein each of the first and second databases include at least one database entry having a latest message in thread flag indicating that a corresponding electronic message is the latest message in the thread.
21. The non-transitory computer readable storage medium ofclaim 15, wherein at least some of the database entries include at least one of a timestamp field and a thread sequence field, wherein the database entry creation module and the database entry changing module are further configured to resolve conflicting latest message in thread flag statuses based, at least in part, on at least one of the timestamp field and the thread sequence field of the respective database entries.
US14/227,3662014-02-282014-03-27System and method for threading electronic messagesExpired - Fee RelatedUS8977607B1 (en)

Priority Applications (2)

Application NumberPriority DateFiling DateTitle
US14/227,366US8977607B1 (en)2014-02-282014-03-27System and method for threading electronic messages
US14/613,642US10320731B2 (en)2014-02-282015-02-04System and method for threading electronic messages

Applications Claiming Priority (2)

Application NumberPriority DateFiling DateTitle
US201461946163P2014-02-282014-02-28
US14/227,366US8977607B1 (en)2014-02-282014-03-27System and method for threading electronic messages

Related Child Applications (1)

Application NumberTitlePriority DateFiling Date
US14/613,642ContinuationUS10320731B2 (en)2014-02-282015-02-04System and method for threading electronic messages

Publications (1)

Publication NumberPublication Date
US8977607B1true US8977607B1 (en)2015-03-10

Family

ID=52597914

Family Applications (2)

Application NumberTitlePriority DateFiling Date
US14/227,366Expired - Fee RelatedUS8977607B1 (en)2014-02-282014-03-27System and method for threading electronic messages
US14/613,642Expired - Fee RelatedUS10320731B2 (en)2014-02-282015-02-04System and method for threading electronic messages

Family Applications After (1)

Application NumberTitlePriority DateFiling Date
US14/613,642Expired - Fee RelatedUS10320731B2 (en)2014-02-282015-02-04System and method for threading electronic messages

Country Status (1)

CountryLink
US (2)US8977607B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
WO2018030908A1 (en)*2016-08-102018-02-15Ringcentral, Ink., (A Delaware Corporation)Method and system for managing electronic message threads
US10320731B2 (en)2014-02-282019-06-11Microsoft Technology Licensing, LlcSystem and method for threading electronic messages
CN110262933A (en)*2015-09-102019-09-20阿里巴巴集团控股有限公司Test method, test device and storage medium

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US11222058B2 (en)*2017-12-132022-01-11International Business Machines CorporationFamiliarity-based text classification framework selection

Citations (5)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20040260701A1 (en)*2003-05-272004-12-23Juha LehikoinenSystem and method for weblog and sharing in a peer-to-peer environment
US20050108345A1 (en)*1999-09-072005-05-19Suzuki Roy S.System for categorizing and displaying reply messages in computer facilitated discussions
US20060212286A1 (en)*2004-03-012006-09-21Microsoft CorporationMessage data management
US20090070294A1 (en)*2007-09-112009-03-12Yahoo! Inc.Social Networking Site Including Conversation Thread Viewing Functionality
US20110207484A1 (en)*2008-08-142011-08-25Talisma Corporation Private Ltd.Unified view of short message service (sms) interaction history with other channel messages based on case identifier in a customer relationship management (crm) application

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US5937161A (en)*1996-04-121999-08-10Usa.Net, Inc.Electronic message forwarding system
US6920483B1 (en)*2000-08-312005-07-19International Business Machines CorporationNotification of automatically forwarded electronic mail messages in a data processing system
US6988129B2 (en)*2001-11-262006-01-17Pitney Bowes Inc.Method for providing address change notification in an electronic message forwarding system
US7698369B2 (en)*2004-05-272010-04-13Strongmail Systems, Inc.Email delivery system using metadata on emails to manage virtual storage
WO2009140022A2 (en)*2008-04-182009-11-19Ramsey Gary SMagnetic thrust bearing with integrated electronics
US10237223B2 (en)*2014-01-222019-03-19Dropbox, Inc.Deferring messages using control codes in messages
US8977607B1 (en)2014-02-282015-03-10Linkedin CorporationSystem and method for threading electronic messages

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20050108345A1 (en)*1999-09-072005-05-19Suzuki Roy S.System for categorizing and displaying reply messages in computer facilitated discussions
US20040260701A1 (en)*2003-05-272004-12-23Juha LehikoinenSystem and method for weblog and sharing in a peer-to-peer environment
US20060212286A1 (en)*2004-03-012006-09-21Microsoft CorporationMessage data management
US20090070294A1 (en)*2007-09-112009-03-12Yahoo! Inc.Social Networking Site Including Conversation Thread Viewing Functionality
US20110207484A1 (en)*2008-08-142011-08-25Talisma Corporation Private Ltd.Unified view of short message service (sms) interaction history with other channel messages based on case identifier in a customer relationship management (crm) application

Cited By (5)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US10320731B2 (en)2014-02-282019-06-11Microsoft Technology Licensing, LlcSystem and method for threading electronic messages
CN110262933A (en)*2015-09-102019-09-20阿里巴巴集团控股有限公司Test method, test device and storage medium
CN110262933B (en)*2015-09-102023-05-02阿里巴巴集团控股有限公司Test method, test device, and storage medium
WO2018030908A1 (en)*2016-08-102018-02-15Ringcentral, Ink., (A Delaware Corporation)Method and system for managing electronic message threads
US10917373B2 (en)2016-08-102021-02-09Ringcentral, Inc.Method and system for managing electronic message threads

Also Published As

Publication numberPublication date
US10320731B2 (en)2019-06-11
US20150249631A1 (en)2015-09-03

Similar Documents

PublicationPublication DateTitle
US20200296070A1 (en)Social profiling of electronic messages
US9665584B2 (en)System and method for recommending actions on a social network
US9137190B2 (en)System and method for content-based message distribution
US10375006B2 (en)Systems and methods of redactive messaging
US9619846B2 (en)System and method for relevance-based social network interaction recommendation
US10785183B2 (en)Composing social media messages referencing multiple messages
US10643226B2 (en)Techniques for expanding a target audience for messaging
US20240020305A1 (en)Systems and methods for automatic archiving, sorting, and/or indexing of secondary message content
US10320731B2 (en)System and method for threading electronic messages
US9954809B2 (en)Embedding and executing commands in messages
US10931615B1 (en)Organizing self-replying messages
WO2017059310A1 (en)Probabilistic message distribution
US20150347974A1 (en)Multi-objective recruiter search
US9137032B2 (en)Specifying desired list of recipients in electronic mails
US20180034764A1 (en)Selecting applications for message handling
US9882785B2 (en)Social network content spread visualization
US20110055175A1 (en)System, method, and apparatus for management of media objects
US10263943B2 (en)Automatic relevance-based information inclusion in electronic communication
US10476824B2 (en)Managing unprofessional media content
WO2024100437A1 (en)System and method for collaborative communication
US20180217988A1 (en)Electronic communication generation using separate system content

Legal Events

DateCodeTitleDescription
ASAssignment

Owner name:LINKEDIN CORPORATION, CALIFORNIA

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LU, XIAOBIN;CHIEN, ELAINE;REEL/FRAME:033412/0273

Effective date:20140327

FEPPFee payment procedure

Free format text:PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCFInformation on status: patent grant

Free format text:PATENTED CASE

CCCertificate of correction
ASAssignment

Owner name:MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LINKEDIN CORPORATION;REEL/FRAME:044746/0001

Effective date:20171018

MAFPMaintenance fee payment

Free format text:PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment:4

FEPPFee payment procedure

Free format text:MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

LAPSLapse for failure to pay maintenance fees

Free format text:PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCHInformation on status: patent discontinuation

Free format text:PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FPLapsed due to failure to pay maintenance fee

Effective date:20230310


[8]ページ先頭

©2009-2025 Movatter.jp