US20230091626A1 - Mobile-generated desktop reminders - Google Patents

Mobile-generated desktop reminders Download PDF

Info

Publication number
US20230091626A1
US20230091626A1 US17/523,574 US202117523574A US2023091626A1 US 20230091626 A1 US20230091626 A1 US 20230091626A1 US 202117523574 A US202117523574 A US 202117523574A US 2023091626 A1 US2023091626 A1 US 2023091626A1
Authority
US
United States
Prior art keywords
communication
reminder
user
desktop
render
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.)
Granted
Application number
US17/523,574
Other versions
US11599235B1 (en
Inventor
Catherine Yesenia Alvarado
Madhu Balakrishna
Akshay Bakshi
Beau Carlborg
Jon Papandreas Chmura
Ryan Greenberg
Vanessa Bahk
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.)
Salesforce Inc
Slack Technologies LLC
Original Assignee
Salesforce Inc
Slack Technologies LLC
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 Salesforce Inc, Slack Technologies LLC filed Critical Salesforce Inc
Assigned to SLACK TECHNOLOGIES, LLC reassignment SLACK TECHNOLOGIES, LLC MERGER AND CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: Slack Technologies, Inc., SLACK TECHNOLOGIES, LLC
Assigned to Slack Technologies, Inc. reassignment Slack Technologies, Inc. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ALVARADO, CATHERINE YESENIA, GREENBERG, RYAN, BAHK, VANESSA, BAKSHI, AKSHAY, BALAKRISHNA, Madhu, Carlborg, Beau, CHMURA, JON PAPANDREAS
Priority to PCT/US2022/042634 priority Critical patent/WO2023048934A1/en
Priority to CN202280057431.4A priority patent/CN117917064A/en
Assigned to SALESFORCE, INC. reassignment SALESFORCE, INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: SALESFORCE.COM, INC.
Assigned to SALESFORCE.COM, INC. reassignment SALESFORCE.COM, INC. MERGER (SEE DOCUMENT FOR DETAILS). Assignors: Slack Technologies, Inc.
Application granted granted Critical
Publication of US11599235B1 publication Critical patent/US11599235B1/en
Publication of US20230091626A1 publication Critical patent/US20230091626A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/224Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Definitions

  • the application may be downloaded to a desktop, laptop, tablet, and/or smart phone, and a user account (e.g., the same user account) may be associated with each of the devices.
  • the computing application may include different versions that may depend on the device and/or operating system.
  • the computing application may include a desktop version and a mobile version, as well as a web version.
  • a desktop version may be used in some instances (e.g., when at a desk or other stationary or semi-stationary workstation), and a mobile version may be used in other instances (e.g., when out and about, commuting, or otherwise away from the desktop device).
  • a communication may be presented to the user via the application on a first device, but the communication may be forgotten or harder to find when the user switches over to the application on the other device.
  • a communication may be presented via the mobile application when the user is away from the desktop computing device, but the user may forget about the communication or have difficulty finding the communication when the user switches back to using the desktop application.
  • switching back and forth between the application on different devices may increase the likelihood that a user will miss communications.
  • it may create inefficiencies while the user searches, on one device, for a communication received via a different device.
  • a user may potentially abandon one or more of the versions (e.g., out of frustration).
  • FIG. 1 illustrates a block diagram depicting an example system of computing devices usable to implement example techniques described herein.
  • FIG. 2 illustrates a network of user computing devices, some of which include user interfaces associated with reminders, as described herein.
  • FIG. 3 illustrates a user interface presenting information confirming a reminder request, as described herein.
  • FIG. 4 illustrates a user interface related to reminders, as described herein.
  • FIG. 5 includes a flow diagram illustrating an example process for presenting desktop reminders, as described herein.
  • a user may download a computing application to multiple devices (e.g., as different versions, copies, instances, iterations, etc.). For example, a user may download the computing application to both a mobile device and a desktop (or laptop) computing device.
  • a user often switches back and forth between the devices to interact with (e.g., send/receive communications via) the computing application.
  • the present disclosure is related to receiving a communication (e.g., direct message, group message, calendar event, task, etc.) via the application on a first device (a first client) and providing an option to request that a reminder, which is associated with the communication, be presented via the application on the second device (a second client).
  • a communication e.g., direct message, group message, calendar event, task, etc.
  • the communication may be presented to the user via the mobile application, and the user may request that a reminder associated with the communication be presented via the desktop application (e.g., when the user is at the desktop client).
  • a reminder associated with the communication be presented via the desktop application (e.g., when the user is at the desktop client).
  • the user may be less likely to miss or forget communications, and the communication may be less likely to be hard to find amongst other communications in the desktop application.
  • a communication platform may provide communication services among networked computing devices.
  • a communication e.g., group message, direct message, calendar invite, deals, attachments, reactions, mentions, etc.
  • multiple clients associated with the user account may receive the communication and/or notifications associated with the communication.
  • a form of the notification e.g., placement, accessibility, presentation, appearance, etc.
  • a mobile client may include a lock-screen interface and/or a notifications interface, in which case one or more notifications may be compiled for presentation (e.g., in a stacked presentation).
  • a mobile client may include a device home screen interface and/or user interfaces associated with the communication application, in which case one or more notifications may gradually slide in from a top of the mobile client, or otherwise pop up.
  • a user may want to request a reminder in association with the notification.
  • a reminder menu is presented in association with a notification, and the reminder menu may include a user interface element that provides options for a user to specify or customize settings in association with a reminder.
  • a reminder menu may provide options for a user to specify one or more conditions, such that when the one or more conditions are satisfied, a reminder is presented.
  • a user may want to request a reminder associated with a notification for various reasons.
  • a user account may be associated the mobile client and with the desktop/laptop client, and a user may receive the notification via the mobile client; however, the user may want to take some action with respect to the communication (e.g., view, open, reply, react, etc.) via the desktop/laptop client.
  • examples of the present disclosure provide techniques for the user to request a reminder in association with the desktop client, such as when the desktop client is active and/or when the user returns to (or is at) the desktop client.
  • reminders may be useful for notifications.
  • reminders may be useful for communications (e.g., communications that are opened or viewed on a mobile client), and as such, examples of the present disclosure may provide, in association with a communication, a reminder menu that is usable to request a desktop reminder in association with the communication.
  • a condition for presentation of a reminder may be based on the desktop client (e.g., a state or status associated with the desktop client 204 a ).
  • presentation of a reminder may be conditioned on a client status, such as a state or change in state of a desktop user computing device and/or the desktop communication application.
  • Desktop state or status for determining whether a condition is met for presenting a reminder, may be determined in various manners.
  • the state or the change in state may indicate, or be associated with, a presence of a user at the desktop client and/or an active state of the desktop client.
  • the condition may include the desktop client waking from a sleeping state, restarting, and/or being turned on, and the state may be detected based on an I/O device receiving an input (e.g., touchscreen input, keyboard input, laptop being opened, etc.) that wakes the desktop client.
  • the state may be detected based on a WebSocket or other communication state (e.g., establishing a network connection, such as a WiFi connection).
  • the state may be detected based on the communication application being opened, unhidden, launched, and/or logged onto.
  • a record of the request (e.g., including the condition and a link to the associated communication) may be maintained in a database for storing reminder information associated with the user account.
  • the condition e.g., a status of the desktop client
  • API calls may be executed on the database to retrieve information related to the reminder for presentation.
  • Reminders may be presented in various manners.
  • an indication of a reminder may be presented as a direct message from another account (e.g., a virtual assistant, a reminder bot, etc.).
  • an indication of the reminder may be presented in a reminder interface, which may sort reminders based on various criteria and may provide a prioritized presentation of the reminders. That is, in some instances, a plurality of reminders may be provided to a user upon a condition being satisfied (e.g., “when at my desktop” reminders), and the reminders user interface may sort the plurality of reminders in a prioritized manner.
  • the reminders may be ranked based on when the requests were received (e.g., reminders that were requested first are ranked higher). In some examples, reminders may be ranked based on the perceived importance of users associated with the reminder (e.g., based on whether a sender is marked as an important contact) or based on whether a channel or direct message associated with the reminder is identified as important (e.g., starred).
  • a request to send a reminder when a user is at the desktop client may be automatically generated (e.g., without a user needing to manually request via a reminders menu).
  • a setting may be programmed specifying that, for communications satisfying a condition, a reminder request is automatically sent that requests a reminder when the user is at (e.g., arrives at) his or her desktop.
  • a condition that, if met, generates an automatic desktop reminder may include a communication with an attachment (e.g., any attachment or an attachment exceeding a size threshold), a communication in a specified channel, a communication from a specified sender (e.g., specifically identified senders or senders identified a high importance), a communication associated with a specified third-party application (e.g., an application that may typically involve desktop operations, such as programming, designing, etc.).
  • an attachment e.g., any attachment or an attachment exceeding a size threshold
  • a communication in a specified channel e.g., a communication from a specified sender (e.g., specifically identified senders or senders identified a high importance)
  • a communication associated with a specified third-party application e.g., an application that may typically involve desktop operations, such as programming, designing, etc.
  • “when at desktop” timing may be applied to items other than received communications.
  • a user may be away from a desktop client and may want to create a reminder to complete a task when the user is back at the desktop client.
  • a user may create a task item and request, in association with the task item, a reminder to be presented when the user is at the desktop client.
  • a user may draft a communication to be sent to one or more other users (e.g., a direct message, a message to a channel, a message in a thread, a task for one or more other users, etc.) and request that presentation of the communication on the other user device(s) be timed based on when the other users are at the other users devices.
  • Examples of the present disclosure may provide various advantages. For example, based on the desktop reminder(s) a user may be less likely to miss or forget communications, and the communication may be less likely to be hard to find amongst other communications in the desktop application. Among other things, this may reduce search time and reduce computing resources expended on searching, thus improving computing device performance.
  • desktop reminders may contribute to more robust and organized data (e.g., communications that include an additional layer of organization based on the desktop reminders), which can also contribute to improved computing performance.
  • FIG. 1 illustrates an example environment 100 for performing techniques described herein.
  • the example environment 100 may be associated with a communication platform that may leverage a network-based computing system to enable users of the communication platform to exchange data.
  • the communication platform may be “group-based” such that the platform, and associated systems, communication channels, messages, and/or virtual spaces, have security (that may be defined by permissions) to limit access to a defined group of users.
  • groups of users may be defined by group identifiers, as described above, which may be associated with common access credentials, domains, or the like.
  • the communication platform may be a hub, offering a secure and private virtual space to enable users to chat, meet, call, collaborate, transfer files or other data, or otherwise communicate between or among each other.
  • each group may be associated with a workspace, enabling users associated with the group to chat, meet, call, collaborate, transfer files or other data, or otherwise communicate between or among each other in a secure and private virtual space.
  • members of a group, and thus workspace may be associated with a same organization.
  • members of a group, and thus workspace may be associated with different organizations (e.g., entities with different organization identifiers).
  • the example environment 100 may include one or more server computing devices (or “server(s)”) 102 .
  • the server(s) 102 may include one or more servers or other types of computing devices that may be embodied in any number of ways.
  • the functional components and data may be implemented on a single server, a cluster of servers, a server farm or data center, a cloud-hosted computing service, a cloud-hosted storage service, and so forth, although other computer architectures may additionally or alternatively be used.
  • the server(s) 102 may communicate with one or more user computing devices 104 a and/or 104 b (may also be referred to as user computing device(s) 104 ) via one or more network(s) 106 . That is, the server(s) 102 and the user computing device(s) 104 may transmit, receive, and/or store data (e.g., content, information, or the like) using the network(s) 106 , as described herein.
  • the user computing device(s) 104 may be any suitable type of computing device, e.g., portable, semi-portable, semi-stationary, or stationary.
  • Some examples of the user computing device(s) 104 may include a tablet computing device, a smart phone, a mobile communication device, a laptop, a netbook, a desktop computing device, a terminal computing device, a wearable computing device, an augmented reality device, an Internet of Things (IOT) device, or any other computing device capable of sending communications and performing the functions according to the techniques described herein. While FIG. 1 shows the user computing device 104 a and the user computing device 104 b , in practice, the example environment 100 may include multiple (e.g., tens of, hundreds of, thousands of, millions of) user computing devices.
  • IOT Internet of Things
  • user computing devices such as the user computing device(s) 104
  • a user may be an individual, a group of individuals, an employer, an enterprise, an organization, or the like.
  • a user e.g., the same user
  • a user may use both the user computing device 104 a and the user computing device 104 b to access the communication services (e.g., the user may switch or alternate between the user computing devices 104 when accessing the communication services).
  • the network(s) 106 may include, but are not limited to, any type of network known in the art, such as a local area network or a wide area network, the Internet, a wireless network, a cellular network, a local wireless network, Wi-Fi and/or close-range wireless communications, Bluetooth®, Bluetooth Low Energy (BLE), Near Field Communication (NFC), a wired network, or any other such network, or any combination thereof. Components used for such communications may depend at least in part upon the type of network, the environment selected, or both. Protocols for communicating over such network(s) 106 are well known and are not discussed herein in detail.
  • the server(s) 102 may include one or more processors 108 , computer-readable media 110 , one or more communication interfaces 112 , and input/output devices 114 .
  • each processor of the processor(s) 108 may be a single processing unit or multiple processing units and may include single or multiple computing units or multiple processing cores.
  • the processor(s) 108 may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units (CPUs), graphics processing units (GPUs), state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions.
  • the processor(s) 108 may be one or more hardware processors and/or logic circuits of any suitable type specifically programmed or configured to execute the algorithms and processes described herein.
  • the processor(s) 108 may be configured to fetch and execute computer-readable instructions stored in the computer-readable media, which may program the processor(s) to perform the functions described herein.
  • the computer-readable media 110 may include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of data, such as computer-readable instructions, data structures, program modules, or other data.
  • Such computer-readable media 110 may include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, optical storage, solid state storage, magnetic tape, magnetic disk storage, RAID storage systems, storage arrays, network attached storage, storage area networks, cloud storage, or any other medium that may be used to store the desired data and that may be accessed by a computing device.
  • the computer-readable media 110 may be a type of computer-readable storage media and/or may be a tangible non-transitory media to the extent that when mentioned, non-transitory computer-readable media exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.
  • the computer-readable media 110 may be used to store any number of functional components that are executable by the processor(s) 108 .
  • these functional components comprise instructions or programs that are executable by the processor(s) 108 and that, when executed, specifically configure the processor(s) 108 to perform the actions attributed above to the server(s) 102 .
  • Functional components stored in the computer-readable media may optionally include a workspace management component 116 , a channel management component 118 , reminders manager 119 , an operating system 121 , and a datastore 122 .
  • the workspace management component 116 may manage workspaces. That is, in at least one example, the communication platform may be partitioned into different workspaces, which may be associated with different groups of users, as described above. As described above, each workspace may be associated with a group identifier and one or more user accounts may be mapped to, or otherwise associated with, the group identifier. User(s) corresponding to such user account(s) may be “members” of the group.
  • the workspace management component 116 may manage workspace membership. That is, the workspace management component 116 may receive requests to associate users with individual workspaces and the workspace management component 116 may associate user accounts associated with such users with group identifiers associated with the individual workspaces. For example, responsive to receiving a request to add a user to a workspace, the workspace management component 116 may associate a user account of the user with a group identifier of the workspace. The workspace management component 116 may disassociate user accounts and group identifiers, for example, when a user is removed from a workspace.
  • the channel management component 118 may manage communication channels.
  • the communication platform may be a channel-based messaging platform, that in some examples, may be usable by group(s) of users. Users of the communication platform may communicate with other users via communication channels.
  • a communication channel, or virtual space may be a data route used for exchanging data between and among systems and devices associated with the communication platform.
  • the channel management component 118 may establish a communication channel between and among various user computing devices, allowing the user computing devices to communicate and share data between and among each other.
  • the channel management component 118 may manage such communications and/or sharing of data.
  • data associated with a communication channel may be presented via a user interface.
  • the channel management component 118 may interact with the workspace management component 116 to manage the generation, presentation, and/or updating of user interfaces. Additional details of operations that may be performed by the channel management component 118 are described below.
  • the reminders manager 119 may receive requests (e.g., from the user computing device(s) 104 ) to provide a reminder associated with the communication services. For example, when executing operations associated with communication services, the server(s) 102 may provide to the user computing device 104 b a communication. In addition, the user computing device 104 b may request that a reminder associated with the communication be provided upon the occurrence of a condition (e.g., time-based condition, scheduled condition, when the user switches to (or is at) the computing device 104 a , etc.). The reminders manager 119 may, among other things, receive and store the reminders request, determine when a condition has been met, and help facilitate presentation the reminder upon satisfaction of the condition.
  • a condition e.g., time-based condition, scheduled condition, when the user switches to (or is at) the computing device 104 a , etc.
  • the operating system 121 may manage the processor(s) 108 , computer-readable media 110 , hardware, software, etc. of the server(s) 102 .
  • the datastore 122 may be configured to store data that is accessible, manageable, and updatable.
  • the datastore 122 may be integrated with the server(s) 102 , as shown in FIG. 1 .
  • the datastore 122 may be located remotely from the server(s) 102 and may be accessible to the server(s) 102 and/or user device(s), such as the user computing device(s) 104 .
  • the datastore 122 may comprise multiple databases, which may include user data 124 , permission data 126 , workspace data 128 , and channel data 130 . Additional or alternative data may be stored in the data store and/or one or more other data stores.
  • the user data 124 may store data associated with users of the communication platform.
  • the user data 124 may store data in user profiles (which may also be referred to as “user accounts”), which may store data associated with a user, including, but not limited to, one or more user identifiers associated with multiple, different organizations or entities with which the user is associated, one or more communication channel identifiers associated with communication channels to which the user has been granted access, one or more group identifiers for groups (or, organizations, teams, entities, or the like) with which the user is associated, an indication whether the user is an owner or manager of any communication channels, an indication whether the user has any communication channel restrictions, a plurality of messages, a plurality of emojis, a plurality of conversations, a plurality of conversation topics, an avatar, an email address, a real name (e.g., John Doe), a username (e.g., j doe), a password, a time zone, a status (e.g.,
  • a user may create a user account or profile that is associated with multiple clients.
  • the user account may be used in association with different copies or versions of a communication application downloaded to multiple computing devices (e.g., desktops, laptops, mobile devices, tablets, etc.).
  • user data 124 is reconciled among all of the clients.
  • User data 124 may include other information, as well.
  • user data 124 may store a listing (e.g., table) of reminders requested in association with the user account.
  • the listing may include, for example, information related to the subject of the reminder (e.g., a communication for which the reminder was requested) and condition information including a condition-based setting that, when satisfied, indicates the reminder should be provided. For example, if the reminder has been requested when a user is at his or her desktop client, the data stored in association with the reminder (e.g., in the datastore, table, etc.) may indicate as such.
  • the permission data 126 may store data associated with permissions of individual users of the communication platform.
  • permissions may be set automatically or by an administrator of the communication platform, an employer, enterprise, organization, or other entity that utilizes the communication platform, a team leader, a group leader, or other entity that utilizes the communication platform for communicating with team members, group members, or the like, an individual user, or the like.
  • permissions associated with an individual user may be mapped to, or otherwise associated with, an account or profile associated with the user data 124 .
  • permissions may indicate which users may communicate directly with other users, which channels a user is permitted to access, restrictions on individual channels, which workspaces the user is permitted to access, restrictions on individual workspaces, and the like.
  • the permissions may support the communication platform by maintaining security for limiting access to a defined group of users. In some examples, such users may be defined by common access credentials, group identifiers, or the like, as described above.
  • the workspace data 128 may store data associated with individual workspaces.
  • the communication platform may be partitioned into workspaces associated with groups of users.
  • a group identifier may be associated with a workspace.
  • the group identifier may indicate a physical address in the workspace data 128 where data related to the corresponding workspace is stored.
  • data associated with workspace permissions may be stored in association with the group identifier, data identifying users associated with the workspace may be stored in association with the group identifier, data associated with messages and/or other content associated with the workspace may be stored in association with the group identifier, data associated with communication channels associated with the workspace may be stored in association with the group identifier, and the like.
  • workspaces may be associated with one or more organization identifiers, which may be associated with organizations or other entities associated with the communication platform.
  • data may be mapped to, or otherwise associated with, other types of data in the datastore 122 (e.g., the user data 124 , the permission data 126 , the channel data 130 , etc.).
  • the channel data 130 may store data associated with individual communication channels.
  • the channel management component 118 may establish a communication channel between and among various user computing devices, allowing the user computing devices to communicate and share data between and among each other.
  • a communication channel identification may be assigned to a communication channel, which indicates the physical address in the channel data 130 where data related to that communication channel is stored.
  • a communication channel may be “public,” which may allow any user within an organization (e.g., associated with an organization identifier) to join and participate in the data sharing through the communication channel, or a communication channel may be “private,” which may restrict data communications in the communication channel to certain users or users having particular roles (e.g., managers, administrators, etc.).
  • a communication channel may be “shared,” which may allow users associated with different organizations (e.g., entities associated with different organization identifiers) to join and participate in the data sharing through the communication channel.
  • Shared channels may be public such that they are accessible to any user of either organization, or they may be private such that they are restricted to access by certain users or users having particular roles from both organizations.
  • the datastore 122 may be partitioned into discrete items of data that may be accessed and managed individually (e.g., data shards).
  • Data shards may simplify many technical tasks, such as data retention, unfurling (e.g., detecting that message contents include a link, crawling the link's metadata, and determining a uniform summary of the metadata), and integration settings.
  • data shards may be associated with organizations, groups (e.g., workspaces), communication channels, users, or the like.
  • individual organizations may be associated with a database shard within the datastore 122 that stores data related to a particular organization identification.
  • a database shard may store electronic communication data associated with members of a particular organization, which enables members of that particular organization to communicate and exchange data with other members of the same organization in real time or near-real time.
  • the organization itself may be the owner of the database shard and has control over where and how the related data is stored.
  • a database shard may store data related to two or more organizations (e.g., as in a shared channel).
  • individual groups may be associated with a database shard within the datastore 122 that stores data related to a particular group identification (e.g., workspace).
  • a database shard may store electronic communication data associated with members of a particular group, which enables members of that particular group to communicate and exchange data with other members of the same group in real time or near-real time.
  • the group itself may be the owner of the database shard and has control over where and how the related data is stored.
  • a communication channel may be associated with a database shard within the datastore 122 that stores data related to a particular channel identification.
  • a database shard may store electronic communication data associated with the communication channel, which enables members of that particular communication channel to communicate and exchange data with other members of the same communication channel in real time or near-real time.
  • a group or organization may be the owner of the database shard and may control where and how the related data is stored.
  • individual users may be associated with a database shard within the datastore 122 that stores data related to a particular user account.
  • a database shard may store electronic communication data associated with an individual user, which enables the user to communicate and exchange data with other users of the communication platform in real time or near-real time.
  • the user itself may be the owner of the database shard and has control over where and how the related data is stored.
  • the communication interface(s) 112 may include one or more interfaces and hardware components for enabling communication with various other devices (e.g., the user computing device(s) 104 ), such as over the network(s) 106 or directly.
  • the communication interface(s) 112 may facilitate communication via Websockets, Application Programming Interfaces (APIs) (e.g., using API calls), HyperText Transfer Protocols (HTTPs), etc.
  • APIs Application Programming Interfaces
  • HTTPs HyperText Transfer Protocols
  • the server(s) 102 may further be equipped with various input/output devices 114 (e.g., I/O devices).
  • I/O devices 114 may include a display, various user interface controls (e.g., buttons, joystick, keyboard, mouse, touch screen, etc.), audio speakers, connection ports and so forth.
  • the user computing device(s) 104 may include one or more processors 132 , computer-readable media 134 , one or more communication interfaces 136 , and input/output devices 138 (I/O devices).
  • each processor of the processor(s) 132 may be a single processing unit or multiple processing units, and may include single or multiple computing units or multiple processing cores.
  • the processor(s) 132 may comprise any of the types of processors described above with reference to the processor(s) 108 and may be the same as or different than the processor(s) 108 .
  • the computer-readable media 134 may comprise any of the types of computer-readable media 134 described above with reference to the computer-readable media 110 and may be the same as or different than the computer-readable media 110 .
  • Functional components stored in the computer-readable media may optionally include a communication application 140 (e.g., for interacting with the server(s) 102 ); and an operating system 142 .
  • the communication application 140 may be a mobile application, a web application, or a desktop application, which may be provided by the communication platform or which may be an otherwise dedicated application.
  • individual user computing devices associated with the environment 100 may have an instance or versioned instance of the communication application 140 , which may be downloaded from an application store, accessible via the Internet, or otherwise executable by the processor(s) 132 to perform operations as described herein. That is, the communication application 140 may be an access point, enabling the user computing device(s) 104 to interact with the server(s) 102 to access and/or use communication services available via the communication platform.
  • the communication application 140 may facilitate the exchange of data between and among various other user computing devices, for example via the server(s) 102 .
  • the communication application 140 may present user interfaces, as described herein.
  • a user may interact with the user interfaces via touch input, keyboard input, mouse input, spoken input, or any other type of input (e.g., using the I/O devices 138 ).
  • the communication application 140 may include various functional components, and in at least one example, the application 140 includes a reminders manager 143 .
  • the reminders manager 143 may perform one or more operations that are similar to the reminders manager 119 .
  • the reminders manager 143 may provide (e.g., in association with a communication) one or more options for requesting and/or scheduling a reminder.
  • the reminders manager 143 may provide an option to request a reminder when a condition is satisfied, such as, but not limited to, a time-based condition (e.g., in 30 minutes or at a specified time), a location-based condition (e.g., when the client is determined to be at a location), a client-status-based condition (e.g., when a desktop client is active), and the like.
  • a condition such as, but not limited to, a time-based condition (e.g., in 30 minutes or at a specified time), a location-based condition (e.g., when the client is determined to be at a location), a client-status-based condition (e.g., when a desktop client is active), and the like.
  • the reminders manager 143 may receive and memorialize a reminder request input by a user.
  • the reminders manager 143 may store a record of the reminder request locally on the client and/or may communicate the reminder request to the server(s) 102 (e.g.
  • the reminders manager 143 may determine when a condition associated with a reminder has been satisfied and/or receive an indication (e.g., alert or notification) from another component that the condition has been satisfied. In at least some examples, the reminders manager 143 may (e.g., upon a condition being satisfied, if specified) present a reminder via the user computing device(s) (e.g., in the context of the communication application 140 ).
  • Non-limiting examples of user interfaces 144 and 152 are shown in FIG. 1 .
  • the user interfaces 144 and 152 may present information associated with a user account (e.g., UserAB as indicated by the user profile indicators 145 and 154 ).
  • FIG. 1 depicts an example in which the user interfaces 144 and 152 present information associated with the same user account, in other examples, the user interfaces 144 and 152 may present information associated with different user accounts.
  • the user interfaces 144 and 152 may present information associated with different user accounts that exchange information via the communication services provided by the server(s) 102 .
  • the user interface 144 can present data associated with one or more channels and, in some examples, one or more workspaces. That is, in some examples, the user interface 144 can enable a user to access multiple workspaces.
  • the user interface 144 can include a first section 146 (e.g., which can be a portion, pane, or other partitioned unit of the user interface 144 ) that includes user interface element(s) associated with workspace(s) with which the user (e.g., account of the user) is associated.
  • Two user interface elements are illustrated in FIG. 1 , a first user interface element 147 a representing a first workspace and a second user interface element 147 b representing a second workspace.
  • a user can interact with the first user interface element 147 a or the second user interface element 147 b to access the corresponding workspace.
  • a user can be prompted to provide a credential to authenticate with the corresponding workspace. While two user interface elements are illustrated, any number of user interface elements can be presented via the first section 146 , which can be associated with one or more domains.
  • the user interface 144 may include a second section 148 (e.g., which can be a portion, pane, or other partitioned unit of the user interface 144 ) that includes user interface element(s) representing data associated with the workspace(s) with which the user (e.g., account of the user) is associated.
  • user interface element(s) presented via the second section 148 can represent virtual space(s) with which the user has access via a particular workspace or multiple workspaces.
  • the second section 148 may include user interface elements indicating one or more reminders related to data associated with the workspace.
  • the second section 148 may include a user interface element 149 that, when selected, presents a reminder (e.g., generated by a bot, virtual assistant, the reminders manager 143 , etc.).
  • a reminders interface element may be presented under a direct messages section (e.g., as a direct message from a bot).
  • the user interface 144 can include a third section 150 (e.g., which can be a portion, pane, or other partitioned unit of the user interface 144 ) that can be associated with a data feed (or “feed”) indicating messages posted to and/or actions taken with respect to one or more channels and/or other virtual spaces for facilitating communications (e.g., a virtual space associated with direct message communication(s), a virtual space associated with event(s) and/or action(s), etc.) as described herein.
  • data associated with the third section 150 can be associated with the same or different workspaces. That is, in some examples, the third section 150 can present data associated with the same or different workspaces via an integrated feed.
  • the data can be organized and/or is sortable by workspace, time (e.g., when associated data is posted or an associated operation is otherwise performed), type of action, channel, user, or the like. In some examples, such data can be associated with an indication of which user (e.g., member of the channel) posted the message and/or performed an action.
  • the third section 150 presents data associated with multiple workspaces, at least some data can be associated with an indication of which workspace the data is associated with. In some examples, the third section 150 may, when the user interface element 149 is selected, present data associated with one or more reminders.
  • the first section 146 , the second section 148 , and the third section 150 in combination, can be associated with a “group-based communication user interface” from which a user can interact with the communication platform. Additional details associated with the user interface 144 are described below with reference to FIGS. 2 and 4 .
  • the user interface 152 may present data associated with one or more communication channels and, in some examples, one or more workspaces. That is, in some examples, the user interface 152 may integrate data from multiple workspaces into a single user interface so that the user (e.g., of the user computing device 104 b ) may access and/or interact with data associated with the multiple workspaces that he or she is associated with and/or otherwise communicate with other users associated with the multiple workspaces.
  • a first region or pane 158 e.g., header region
  • the first region 158 may include a workspace identifier 160 (e.g., may be similar to the indicator 147 a ) that, when selected, opens a sidebar or other user interface (e.g., other pane or window) that allows selection of, or addition of, a different workspace (not explicitly shown in FIG. 1 ).
  • a workspace identifier 160 e.g., may be similar to the indicator 147 a
  • a sidebar or other user interface e.g., other pane or window
  • the user interface 152 may include a second region 162 , or pane, that includes indicator(s) (e.g., user interface element(s) or object(s)) representing data associated with the workspace(s) (e.g., Workspace A in FIG. 1 ) with which the user (e.g., account of the user) is associated.
  • indicator(s) e.g., user interface element(s) or object(s) representing data associated with the workspace(s) (e.g., Workspace A in FIG. 1 ) with which the user (e.g., account of the user) is associated.
  • the second region 162 may include indicators related to mentions/reactions (e.g., messages shared among a group that include a reaction to a message posted by the UserAB or that mention UserAB); indicators related to communication threads associated with a user account (e.g., threads on which UserAB is included or to which UserAB has access); unread communications shared with a user account (e.g., to which UserAB has access); channels of which a user account is a member (e.g., channels of which UserAB is a member); direct message exchanges with other users; etc.
  • mentions/reactions e.g., messages shared among a group that include a reaction to a message posted by the UserAB or that mention UserAB
  • indicators related to communication threads associated with a user account e.g., threads on which UserAB is included or to which UserAB has access
  • unread communications shared with a user account e.g., to which UserAB has access
  • channels of which a user account is a member e.
  • the second region 162 may include user interface elements (e.g., 163 ) that, when selected, present one or more sub-items beneath a respective category (e.g., “channels” category or “direct messages” category), such as by expanding a listing under the category.
  • the second region 162 may include user interface elements (e.g., 165 ) that, when selected, present another user interface for searching under the category and/or creating a new item under the category.
  • the second region 162 may include user interface elements indicating one or more reminders related to data associated with the workspace.
  • the second section 162 may include a user interface element 167 that, when selected, presents a reminder (e.g., generated by a bot, virtual assistant, the reminders manager 143 , etc.) and/or navigates to a different user interface presenting multiple reminders.
  • a reminder e.g., generated by a bot, virtual assistant, the reminders manager 143 , etc.
  • the user interface 152 may include a third region 164 (e.g., footer region) with other indicators (e.g., user interface element(s) or object(s)) that are selectable to navigate to a different user interface, pane, or window.
  • the indicators presented in the third region 164 may be persistently displayed in the third region 164 when the user computing device 104 navigates from one user interface to another user interface (e.g., when the content in the region 158 and/or 162 changes).
  • the third region 164 may include a home-screen indicator that, when selected, navigates to a home screen (e.g., the user interface 152 ).
  • the third region 164 may include a direct message indicator that, when selected, navigates to a window displaying one or more direct message threads, as well as a mentions/reactions indicator that, when selected, navigates to a window displaying communications that mention the UserAB and/or react to a communication posted by the UserAB.
  • the third region 164 may include one or more other selectable indicators, such as a search element and the profile indicator 154 . Additional details associated with the user interface 144 are described below with reference to FIGS. 2 and 3 .
  • the operating system 142 may manage the processor(s) 132 , computer-readable media 134 , hardware, software, etc. of the server(s) 102 .
  • the communication interface(s) 136 may include one or more interfaces and hardware components for enabling communication with various other devices (e.g., the user computing device(s) 104 ), such as over the network(s) 106 or directly.
  • the communication interface(s) 136 may facilitate communication via Websockets, APIs (e.g., using API calls), HTTPs, etc.
  • the user computing device(s) 104 may further be equipped with various input/output devices 138 (e.g., I/O devices).
  • I/O devices 138 may include a display, various user interface controls (e.g., buttons, joystick, keyboard, mouse, touch screen, etc.), audio speakers, connection ports and so forth.
  • While techniques described herein are described as being performed by the workspace management component 116 , the channel management component 118 , the reminders managers 119 and/or 143 , and the communication application 140 , techniques described herein may be performed by any other component, or combination of components, which may be associated with the server(s) 102 , the user computing device(s) 104 , or a combination thereof.
  • FIG. 2 illustrates, among other things, additional details associated with the user interfaces 144 and 152 (as well as other user interfaces), reminders, and other aspects described above with reference to FIG. 1 .
  • FIG. 2 illustrates an example in which a user account (UserAB) is associated with two clients 204 a and 204 b , where the clients may include the user computing device 104 a and the user computing device 104 b and/or the communications application 140 a (e.g., an instance of the communication application 140 on the user computing device 104 a ) and the communications application 140 b (e.g., an instance of the communication application 140 on the user computing device 104 b ).
  • the communications application 140 a e.g., an instance of the communication application 140 on the user computing device 104 a
  • the communications application 140 b e.g., an instance of the communication application 140 on the user computing device 104 b
  • the client 204 a may include the user computing device 104 a and/or the communication application 140 a being executed by the user computing device 104 a
  • the client 204 b may include the user computing device 104 b and/or the communication application 140 b being executed by the user computing device 104 b
  • a user may download a computing application to multiple devices (e.g., as different versions, copies, instances, iterations, etc. of the computing application).
  • a user may download the communication application 140 a to the user computing device 104 a (e.g., desktop or laptop) and download the communication application 140 b to the user computing device 104 b (e.g., mobile device or tablet).
  • the user may switch back and forth between the devices 104 a and 104 b to interact with (e.g., send/receive communications via) the computing applications and with the communication services provided by the communication platform server(s) 202 .
  • FIG. 2 illustrates that one or more user devices 205 may leverage the communication platform server(s) 202 to provide a communication 206 .
  • the communication 206 is illustrated to include a message (e.g., group message) that is associated with a channel (e.g., Channel-A).
  • a channel e.g., Channel-A
  • Various other types of communications may be provided from the user devices 205 , such as direct messages, calendar invites or other meeting requests, tasks, deals, attachments, reactions, mentions, emojis, etc.
  • a user account e.g., the same user account
  • the communication 206 e.g., a copy of the communication 206
  • the first client 204 a and the second client 204 b may present one or more notifications associated with the communication 206 , and a form of the notification (e.g., placement, accessibility, presentation, appearance, etc.) may depend on a state of the client.
  • the client 204 b may include an interface 208 , which could represent a lock-screen interface (e.g., interface presented when the client 204 b is locked state) or a notifications interface (e.g., interface presented when a user navigates to a notification center, such as by swiping down).
  • a notification may include an interface element 210 that identifies one or more of the communication application, a time associated with the communication 206 , and at least a portion of the content of the communication 206 .
  • FIG. 2 illustrates another example state of the client 204 b , including a device home screen interface 212 , which may be presented when the client 204 b is unlocked and presenting applications executable by, or downloaded to, the user computing device 104 b .
  • a notification may include an interface element 214 that is similar to the interface element 210 and that may float down from the top of the interface 210 , gradually appear as an overlay or pop up, or otherwise be presented across the home screen or application.
  • FIG. 2 illustrates another example state of the client 204 b , including a user interface 216 associated with the communication application 140 b (e.g., similar to the user interface 152 described with respect to FIG. 1 ).
  • a notification may include an interface element 218 that is similar to the interface element 214 .
  • FIG. 2 illustrates another example related to the communication 206 , including a user interface 220 that may present content 222 associated with the communication 206 .
  • the client 204 b may present the user interface 220 and the content 222 in response to a selection of a portion of one of the notification interface elements 210 , 214 , or 218 and/or in response to a selection of an interface element in the user interface 216 (e.g., selection of the “unreads” folder interface element or the “# channel-a” folder interface element).
  • the user interface 220 may include elements for interacting with the content 222 , such as a reply interface element, tag interface element, forward interface element, and a menu expansion interface element.
  • a reminder menu includes a user interface element that provides options for a user to specify or customize settings in association with a reminder.
  • a reminder menu may provide options for a user to specify one or more conditions, such that when the one or more conditions are satisfied, a reminder is presented.
  • FIG. 2 illustrates various examples in which a reminder menu 224 , 226 , and 228 is presented in association with the notifications 210 , 214 , and 218 (respectively).
  • the reminder menus 224 , 226 , and 228 may be presented in response to various user input, such as a touch input (e.g., touch and hold).
  • a reminder menu 230 may be invoked via a touch and hold input and/or by expanding menu options via the menu-expansion interface element 232 .
  • a user may want to request a reminder associated with a communication for various reasons. For instance, as described, a user account may be associated the mobile client 204 b and with the desktop/laptop 204 a , and a user may receive the communication via the mobile client 204 b ; however, the user may want to take some action with respect to the communication via the desktop/laptop client 204 a . As such, it may be useful to request a reminder in association with the desktop client 204 a , such as when the desktop client 204 a is active and/or when the user returns to (or is at) the desktop client 204 a.
  • a condition for presentation of a reminder may be based on the desktop client 204 a (e.g., a state or status associated with the desktop client 204 a ).
  • presentation of a reminder may be conditioned on a client status, such as a state or change in state of a desktop user computing device and/or the desktop communication application (e.g., 140 a ).
  • reminder presentation may be also (or alternatively) be conditioned on a client location, such as whether a location of the client 204 b satisfies a location-based threshold (e.g., within a threshold distance of a location).
  • the reminder menu (e.g., 224 , 226 , 228 , and 230 ) may include a reminder-option interface element 236 for requesting that a reminder be presented on the desktop client 204 a (e.g., when a state or status of the desktop client 204 a satisfies a condition).
  • conditions for reminder presentation may include various other criteria, such as time-based conditions 234 (e.g., in 30 minute, in 1 hour, tomorrow, next week, etc.) or calendar-based conditions (e.g., on a specified date).
  • the reminders manager 143 b may record/store the requested reminder and/or communicate the reminder request to the server-side reminders manager 119 .
  • the reminder request may be stored (e.g., in the datastore 122 ,) together with related information, such as the condition on which reminder presentation is based (e.g., status of desktop client 204 a ) and the related communication (e.g., communication 206 or a link to the communication 206 ).
  • FIG. 3 presents an example of a user interface 320 according to one or more examples.
  • a confirmatory communication is sent to the user account to confirm that the reminder will be provided when the user is at his or her desktop client.
  • the user interface 320 presents a portion of a thread associated with the content 222 , and the thread includes content 322 associated with the confirmatory communication (e.g., from the reminder bot).
  • the reminders manager 143 a of the desktop client 204 a may include some identification (e.g., a list, setting, etc.) of one or more criteria on which reminder presentation is conditioned.
  • the reminders manager 143 a may include information indicating that reminder presentation may be based on a state of the desktop client 204 a .
  • the reminders manager 143 a may execute an API call to the server-side reminders manager 119 to determine whether any requested reminders conditioned on the detected status are stored in the database. If so, the reminders manager 143 a may receive, from the server-side reminders manager 119 , an identification of the reminders to be presented, and the reminders may be presented via the user interface 244 .
  • Reminders may be presented in the user interface 244 in various manners.
  • the user interface 244 may indicate, in a direct message interface element 249 (e.g., a direct message from a reminder bot, such as a virtual personal assistant), that an unread communication (e.g., a communication including a reminder), has been received.
  • the user interface 244 may indicate, in a grouped communications interface element 251 , that a reminder has been received.
  • the region 250 may display a reminder 270 associated with the communication 206 .
  • Reminders and indications associated with reminders may be presented in other ways as well. For example, referring briefly to FIG.
  • the user interface 400 may include a reminders interface element 402 , which may help to sort reminders based on various criteria.
  • the reminders interface element 402 may provide a sorted rendering based on a condition specified for reminder presentation.
  • the reminder interface element 402 may include a desktop indicator 404 that, when selected, presents one or more desktop reminders that were conditioned on a status of the desktop (e.g., when the desktop is active and/or when the user is perceived to be at the desktop).
  • the reminder interface element 402 may include other indicators, such as a time-based indicator 406 , which when selected, may present one or more reminders that were conditioned to be presented based on a time-based scheduling (e.g., in 30 minutes).
  • the reminders interface element provide a sorted presentation based on other criteria, such as channels (e.g., reminders associated with a channel) or user accounts (e.g., reminders associated with communications that are from or that mention or that are reacted to by a user account).
  • the reminders manager 143 b may determine that a condition has been met to present a “when at my desktop” reminder based on various criteria associated with a desktop state or a change in desktop state.
  • the state or the change in state may indicate, or be associated with, a presence of a user at the desktop client 204 a and/or an active state of the desktop client 204 a .
  • the condition may include the desktop client 204 a waking from a sleeping state, restarting, and/or being turned on.
  • the state may be detected based on an I/O device receiving an input (e.g., touchscreen input, keyboard input, laptop being opened, etc.) that wakes the desktop client 204 a .
  • the state may be detected based on a WebSocket or other communication state (e.g., establishing a network connection, such as a Wi-Fi connection).
  • the state may be detected based on the communication application 140 a being opened, unhidden, launched, and/or logged onto.
  • the reminders manager 143 a may monitor one or more of these states and, when a condition is met, perform an API call to the server(s) (e.g., to the server(s) and/or reminder manager 119 in FIG. 1 ) to determine whether any reminders have been requested to be presented on the desktop client 204 a upon the condition being met (e.g., when the user is at the desktop).
  • presentation of a reminder may be based on other information that may suggest a user is at his or her desktop.
  • the reminder manager 143 a may receive information indicating that the mobile client 204 b is proximate the desktop client 204 a (e.g., via a Bluetooth connection or other wireless connection or via a wired connection), and a reminder may be presented on the desktop based on the mobile client 204 b being proximate the desktop client 204 a .
  • location of the desktop client and/or the mobile client may be based on Bluetooth connection, GPS data, RFID data, barcode (e.g., QR) data, or near field communication (NFC) data.
  • NFC near field communication
  • FIG. 2 provides one or more examples in which a desktop reminder can be manually requested (e.g., by selecting the interface element 236 ).
  • a request to send a reminder when a user is at the desktop client may be automatically generated.
  • a setting may be programmed specifying that, for communications satisfying a condition, a reminder request is automatically sent that requests a reminder when the user is at (e.g., arrives at) his or her desktop.
  • a condition that, if met, generates an automatic desktop reminder may include a communication with an attachment (e.g., any attachment or an attachment exceeding a size threshold), a communication in a specified channel, a communication from a specified sender (e.g., specifically identified senders or senders identified a high importance), a communication associated with a specified third-party application (e.g., an application that may typically involve desktop operations, such as programming, designing, etc.).
  • a reminder request may be automatically generated by a workflow when a particular event is triggered.
  • a reminder request may be automatically generated by an application when a particular event has occurred.
  • a user may request that multiple reminders be provided when the user is back at the desktop client.
  • examples of the present disclosure may rank the reminders based on various criteria, such as to try and present more important reminders first.
  • the reminders may be ranked based on when the requests were received (e.g., reminders that were requested first are ranked higher).
  • reminders may be ranked based on the perceived importance of users associated with the reminder (e.g., based on whether a sender is marked as an important contact) or based on whether a channel or direct message associated with the reminder is identified as important (e.g., starred).
  • FIG. 2 provides one or more examples in which a desktop reminder (e.g., provide reminder when at my desktop) is associated with a communication from a user.
  • “when at desktop” timing may be applied to other items.
  • a user may be away from a desktop client and may want to create a reminder to complete a task when the user is at the desktop client.
  • a user may create a new communication (e.g., a task or other communication with some action item that is assigned to, or for completion by, the user account) and request, in association with the task item, a reminder to be presented when the user is at the desktop client 204 a .
  • a user may draft a communication to be sent to one or more other users (e.g., a direct message, a message to a channel, a message in a thread, a task for one or more other users, etc.) and request that presentation of the communication on the other user device(s) be timed based on when the other users are at the other users devices.
  • one or more other users e.g., a direct message, a message to a channel, a message in a thread, a task for one or more other users, etc.
  • process 500 for requesting and providing desktop reminders.
  • some or all of process 500 may be performed by one or more components in the environment 100 or one or more components discussed with respect to FIGS. 1 , 2 , 3 , and/or 4 .
  • the communication platform referred to in process 500 may be representative of a computing device associated with the (communication platform) server(s) 102
  • a client referred to in process 500 may be representative of the user computing device(s) 104 and/or application 140 .
  • the process 500 is not limited to being performed by components in the environment 100 .
  • the process includes rendering, for display via a mobile client, a communication associated with a user account of a communication platform.
  • a rendered communication may include a notification 504 or a message 506 associated with the notification 504 .
  • the process 500 includes receiving a request to render, for display via a desktop client associated with the user account, a reminder associated with the communication. For example, an input may be received indicating a selection of the interface element 510 (e.g., which represents an reminders option to have a reminder presented when the user is at a desktop client) or a selection of the interface element 512 (e.g., which also represents an reminders option to have a reminder presented when the user is at a desktop client).
  • a selection of the interface element 510 e.g., which represents an reminders option to have a reminder presented when the user is at a desktop client
  • a selection of the interface element 512 e.g., which also represents an reminders option to have a reminder presented when the user is at a desktop client.
  • the process 500 includes determining that a state of the desktop client satisfies a condition.
  • the desktop client 516 may determine the existence of a state (based on a condition) that indicates a user is at the desktop client 516 and/or an active state of the desktop client.
  • the condition may include the desktop client waking from a sleeping state, restarting, and/or being turned on, and the state may be detected based on an I/O device receiving an input (e.g., touchscreen input, keyboard input, laptop being opened, etc.) that wakes the desktop client.
  • the state may be detected based on a WebSocket or other communication state (e.g., establishing a network connection, such as a WiFi connection).
  • the state may be detected based on the communication application being opened, unhidden, launched, and/or logged onto.
  • the process 500 includes rendering, for display via the desktop client and based on the condition being satisfied, the reminder associated with the communication. For example, in the user interface 520 , one or more indications 522 and/or 524 of a reminder may be presented. In some examples, the reminder 526 may be presented (e.g., when one of the indications 522 or 524 is selected).
  • a method comprising: rendering, for display via a mobile client, a communication associated with a user account of a communication platform; receiving a request to render, for display via a desktop client associated with the user account, a reminder associated with the communication; determining that a state of the desktop client satisfies a condition; and in response to the condition being satisfied, rendering, for display via the desktop client, the reminder associated with the communication.
  • the desktop client includes a desktop communication application; and the state is based on one or more of the desktop communication application being open, launched, unhidden, or logged onto.
  • the desktop client includes a computing device; and the state is based on one or more of the computing device starting up, waking, connecting to a network, establishing a communication protocol, or receiving an input.
  • the communication is a first communication
  • the request to render is a first request
  • the reminder is a first reminder
  • the method further comprises: receiving a second request to render, for display via the desktop client, a second reminder associated with a second communication; ranking, based on a criterion, the first reminder higher than the second reminder; and presenting the first reminder with higher priority than the second reminder.
  • a system comprising: one or more processors; and one or more non-transitory computer readable media storing instructions that, when executed, cause the system to: render, for display via a mobile client, a communication associated with a user account of a communication platform; receive a request to render, for display via a desktop client associated with the user account, a reminder associated with the communication; determine that a state of the desktop client satisfies a condition; and in response to the condition being satisfied, render, for display via the desktop client, the reminder associated with the communication.
  • the desktop client includes a desktop communication application; and the state is based on one or more of the desktop communication application being open, launched, unhidden, or logged onto.
  • the desktop client includes a computing device; and the state is based on one or more of the computing device starting up, waking, connecting to a network, establishing a communication protocol, or receiving an input.
  • the communication is a first communication
  • the request to render is a first request
  • the reminder is a first reminder
  • the operations further comprise: receiving a second request to render, for display via the desktop client, a second reminder associated with a second communication; ranking, based on a criterion, the first reminder higher than the second reminder; and presenting the first reminder with higher priority than the second reminder.
  • M The system of any one of paragraphs H-L, the operations further comprising: generating a second communication indicating the request to render the reminder was received; and rendering, for display via the mobile client and in a thread with the communication, the second communication.
  • N The system of any one of paragraphs H-M, wherein the communication includes an action item assigned to the user account.
  • One or more non-transitory computer readable media storing instructions that, when executed, cause one or more processors to: render, for display via a mobile client, a communication associated with a user account of a communication platform; receive a request to render, for display via a desktop client associated with the user account, a reminder associated with the communication; determine that a state of the desktop client satisfies a condition; and in response to the condition being satisfied, render, for display via the desktop client, the reminder associated with the communication.
  • the desktop client includes a desktop communication application; and the state is based on one or more of the desktop communication application being open, launched, unhidden, or logged onto.
  • the desktop client includes a computing device; and the state is based on one or more of the computing device starting up, waking, connecting to a network, establishing a communication protocol, or receiving an input.
  • R The one or more non-transitory computer readable media of any one of paragraphs O-Q, wherein the instructions, when executed, further cause the one or more processors to send, by the desktop client and based on the condition being satisfied, an API call to a database including data associated with the request to render the reminder.
  • T The one or more non-transitory computer readable media of any one of paragraphs O-S, the instructions, when executed, further causing the one or more processors to: generate a second communication indicating the request to render the reminder was received; and render, for display via the mobile client and in a thread with the communication, the second communication.
  • V Any one of paragraphs A-U, wherein: the communication is a new communication; and the method further comprises receiving, via the mobile client and before receiving the request to render the reminder, a request to create the new communication.

Abstract

The present disclosure is related to receiving a communication (e.g., direct message, group message, calendar event, task, etc.) on a first device and providing an option to request that a reminder, which is associated with the communication, be presented a second device. For example, the communication may be presented via a mobile client, and the user may request that a reminder be presented via a desktop client (e.g., when the user is at the desktop client).

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This patent application claims priority to Indian Patent Application No. 202121042657 filed Sep. 21, 2021, the entire contents of which are incorporated by referenced herein.
  • FIELD OF INVENTION
  • Users of a computing application will often download the application (e.g., copies, versions, instances, iterations, etc.) to multiple devices. For example, the application may be downloaded to a desktop, laptop, tablet, and/or smart phone, and a user account (e.g., the same user account) may be associated with each of the devices. In some cases, the computing application may include different versions that may depend on the device and/or operating system. For example, the computing application may include a desktop version and a mobile version, as well as a web version.
  • Often, when a user downloads the application to both a first device and a second device (e.g., a desktop version to a first device and a mobile version to a second device), the user will alternate between using the application on the different devices. For example, a desktop version may be used in some instances (e.g., when at a desk or other stationary or semi-stationary workstation), and a mobile version may be used in other instances (e.g., when out and about, commuting, or otherwise away from the desktop device). Sometimes a communication (e.g., direct message, group message, calendar event, task, etc.) may be presented to the user via the application on a first device, but the communication may be forgotten or harder to find when the user switches over to the application on the other device. For example, a communication may be presented via the mobile application when the user is away from the desktop computing device, but the user may forget about the communication or have difficulty finding the communication when the user switches back to using the desktop application. Among other things, switching back and forth between the application on different devices may increase the likelihood that a user will miss communications. In addition, it may create inefficiencies while the user searches, on one device, for a communication received via a different device. In some instances, a user may potentially abandon one or more of the versions (e.g., out of frustration).
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical components or features.
  • FIG. 1 illustrates a block diagram depicting an example system of computing devices usable to implement example techniques described herein.
  • FIG. 2 illustrates a network of user computing devices, some of which include user interfaces associated with reminders, as described herein.
  • FIG. 3 illustrates a user interface presenting information confirming a reminder request, as described herein.
  • FIG. 4 illustrates a user interface related to reminders, as described herein.
  • FIG. 5 includes a flow diagram illustrating an example process for presenting desktop reminders, as described herein.
  • DETAILED DESCRIPTION
  • As discussed above, in many instances a user may download a computing application to multiple devices (e.g., as different versions, copies, instances, iterations, etc.). For example, a user may download the computing application to both a mobile device and a desktop (or laptop) computing device. In addition, a user often switches back and forth between the devices to interact with (e.g., send/receive communications via) the computing application. The present disclosure is related to receiving a communication (e.g., direct message, group message, calendar event, task, etc.) via the application on a first device (a first client) and providing an option to request that a reminder, which is associated with the communication, be presented via the application on the second device (a second client). For example, the communication may be presented to the user via the mobile application, and the user may request that a reminder associated with the communication be presented via the desktop application (e.g., when the user is at the desktop client). As such, the user may be less likely to miss or forget communications, and the communication may be less likely to be hard to find amongst other communications in the desktop application.
  • In examples of the present disclosure, a communication platform may provide communication services among networked computing devices. In some instances, when a communication (e.g., group message, direct message, calendar invite, deals, attachments, reactions, mentions, etc.) is sent to (or is accessible by) a user account, then multiple clients associated with the user account may receive the communication and/or notifications associated with the communication. A form of the notification (e.g., placement, accessibility, presentation, appearance, etc.) may depend on a type of client and/or a state of the client. For example, a mobile client may include a lock-screen interface and/or a notifications interface, in which case one or more notifications may be compiled for presentation (e.g., in a stacked presentation). In other examples, a mobile client may include a device home screen interface and/or user interfaces associated with the communication application, in which case one or more notifications may gradually slide in from a top of the mobile client, or otherwise pop up.
  • In some instances, a user may want to request a reminder in association with the notification. As such, in at least some examples, a reminder menu is presented in association with a notification, and the reminder menu may include a user interface element that provides options for a user to specify or customize settings in association with a reminder. For example, a reminder menu may provide options for a user to specify one or more conditions, such that when the one or more conditions are satisfied, a reminder is presented. A user may want to request a reminder associated with a notification for various reasons. For instance, as described, a user account may be associated the mobile client and with the desktop/laptop client, and a user may receive the notification via the mobile client; however, the user may want to take some action with respect to the communication (e.g., view, open, reply, react, etc.) via the desktop/laptop client. As such, examples of the present disclosure provide techniques for the user to request a reminder in association with the desktop client, such as when the desktop client is active and/or when the user returns to (or is at) the desktop client.
  • As described, reminders may be useful for notifications. In addition, reminders may be useful for communications (e.g., communications that are opened or viewed on a mobile client), and as such, examples of the present disclosure may provide, in association with a communication, a reminder menu that is usable to request a desktop reminder in association with the communication.
  • In examples of the present disclosure, a condition for presentation of a reminder may be based on the desktop client (e.g., a state or status associated with the desktop client 204 a). For example, presentation of a reminder may be conditioned on a client status, such as a state or change in state of a desktop user computing device and/or the desktop communication application. Desktop state or status, for determining whether a condition is met for presenting a reminder, may be determined in various manners. For example, the state or the change in state may indicate, or be associated with, a presence of a user at the desktop client and/or an active state of the desktop client. In some instances, the condition may include the desktop client waking from a sleeping state, restarting, and/or being turned on, and the state may be detected based on an I/O device receiving an input (e.g., touchscreen input, keyboard input, laptop being opened, etc.) that wakes the desktop client. In some examples, the state may be detected based on a WebSocket or other communication state (e.g., establishing a network connection, such as a WiFi connection). In some examples, the state may be detected based on the communication application being opened, unhidden, launched, and/or logged onto.
  • Once a reminder has been requested, a record of the request (e.g., including the condition and a link to the associated communication) may be maintained in a database for storing reminder information associated with the user account. As such, when the condition is satisfied (e.g., a status of the desktop client) API calls may be executed on the database to retrieve information related to the reminder for presentation.
  • Reminders (and/or an indication of a reminder) may be presented in various manners. For example, an indication of a reminder may be presented as a direct message from another account (e.g., a virtual assistant, a reminder bot, etc.). In other examples, an indication of the reminder may be presented in a reminder interface, which may sort reminders based on various criteria and may provide a prioritized presentation of the reminders. That is, in some instances, a plurality of reminders may be provided to a user upon a condition being satisfied (e.g., “when at my desktop” reminders), and the reminders user interface may sort the plurality of reminders in a prioritized manner. In some examples, the reminders may be ranked based on when the requests were received (e.g., reminders that were requested first are ranked higher). In some examples, reminders may be ranked based on the perceived importance of users associated with the reminder (e.g., based on whether a sender is marked as an important contact) or based on whether a channel or direct message associated with the reminder is identified as important (e.g., starred).
  • In at least some examples, a request to send a reminder when a user is at the desktop client may be automatically generated (e.g., without a user needing to manually request via a reminders menu). For example, a setting may be programmed specifying that, for communications satisfying a condition, a reminder request is automatically sent that requests a reminder when the user is at (e.g., arrives at) his or her desktop. For example, a condition that, if met, generates an automatic desktop reminder may include a communication with an attachment (e.g., any attachment or an attachment exceeding a size threshold), a communication in a specified channel, a communication from a specified sender (e.g., specifically identified senders or senders identified a high importance), a communication associated with a specified third-party application (e.g., an application that may typically involve desktop operations, such as programming, designing, etc.).
  • In some examples, “when at desktop” timing may be applied to items other than received communications. For example, a user may be away from a desktop client and may want to create a reminder to complete a task when the user is back at the desktop client. As such, a user may create a task item and request, in association with the task item, a reminder to be presented when the user is at the desktop client. In other examples, a user may draft a communication to be sent to one or more other users (e.g., a direct message, a message to a channel, a message in a thread, a task for one or more other users, etc.) and request that presentation of the communication on the other user device(s) be timed based on when the other users are at the other users devices.
  • Examples of the present disclosure may provide various advantages. For example, based on the desktop reminder(s) a user may be less likely to miss or forget communications, and the communication may be less likely to be hard to find amongst other communications in the desktop application. Among other things, this may reduce search time and reduce computing resources expended on searching, thus improving computing device performance. In addition, desktop reminders may contribute to more robust and organized data (e.g., communications that include an additional layer of organization based on the desktop reminders), which can also contribute to improved computing performance. These and other aspects are described further below with reference to the accompanying drawings. The drawings are merely example implementations and should not be construed to limit the scope of the claims. For example, while some examples are illustrated in the context of a user interface for a mobile device, the same or similar techniques may be implemented using any computing device and the user interface may be adapted to the size, shape, and configuration of the particular computing device.
  • FIG. 1 illustrates an example environment 100 for performing techniques described herein. In at least one example, the example environment 100 may be associated with a communication platform that may leverage a network-based computing system to enable users of the communication platform to exchange data. In at least one example, the communication platform may be “group-based” such that the platform, and associated systems, communication channels, messages, and/or virtual spaces, have security (that may be defined by permissions) to limit access to a defined group of users. In some examples, such groups of users may be defined by group identifiers, as described above, which may be associated with common access credentials, domains, or the like. In some examples, the communication platform may be a hub, offering a secure and private virtual space to enable users to chat, meet, call, collaborate, transfer files or other data, or otherwise communicate between or among each other. As described above, each group may be associated with a workspace, enabling users associated with the group to chat, meet, call, collaborate, transfer files or other data, or otherwise communicate between or among each other in a secure and private virtual space. In some examples, members of a group, and thus workspace, may be associated with a same organization. In some examples, members of a group, and thus workspace, may be associated with different organizations (e.g., entities with different organization identifiers).
  • In at least one example, the example environment 100 may include one or more server computing devices (or “server(s)”) 102. In at least one example, the server(s) 102 may include one or more servers or other types of computing devices that may be embodied in any number of ways. For example, in the example of a server, the functional components and data may be implemented on a single server, a cluster of servers, a server farm or data center, a cloud-hosted computing service, a cloud-hosted storage service, and so forth, although other computer architectures may additionally or alternatively be used.
  • In at least one example, the server(s) 102 may communicate with one or more user computing devices 104 a and/or 104 b (may also be referred to as user computing device(s) 104) via one or more network(s) 106. That is, the server(s) 102 and the user computing device(s) 104 may transmit, receive, and/or store data (e.g., content, information, or the like) using the network(s) 106, as described herein. The user computing device(s) 104 may be any suitable type of computing device, e.g., portable, semi-portable, semi-stationary, or stationary. Some examples of the user computing device(s) 104 may include a tablet computing device, a smart phone, a mobile communication device, a laptop, a netbook, a desktop computing device, a terminal computing device, a wearable computing device, an augmented reality device, an Internet of Things (IOT) device, or any other computing device capable of sending communications and performing the functions according to the techniques described herein. While FIG. 1 shows the user computing device 104 a and the user computing device 104 b, in practice, the example environment 100 may include multiple (e.g., tens of, hundreds of, thousands of, millions of) user computing devices.
  • In at least one example, user computing devices, such as the user computing device(s) 104, may be operable by users to, among other things, access communication services via the communication platform. A user may be an individual, a group of individuals, an employer, an enterprise, an organization, or the like. In some examples, a user (e.g., the same user) may use multiple computing devices to access communication services via the communication platform. For example, a user may use both the user computing device 104 a and the user computing device 104 b to access the communication services (e.g., the user may switch or alternate between the user computing devices 104 when accessing the communication services).
  • The network(s) 106 may include, but are not limited to, any type of network known in the art, such as a local area network or a wide area network, the Internet, a wireless network, a cellular network, a local wireless network, Wi-Fi and/or close-range wireless communications, Bluetooth®, Bluetooth Low Energy (BLE), Near Field Communication (NFC), a wired network, or any other such network, or any combination thereof. Components used for such communications may depend at least in part upon the type of network, the environment selected, or both. Protocols for communicating over such network(s) 106 are well known and are not discussed herein in detail.
  • In at least one example, the server(s) 102 may include one or more processors 108, computer-readable media 110, one or more communication interfaces 112, and input/output devices 114.
  • In at least one example, each processor of the processor(s) 108 may be a single processing unit or multiple processing units and may include single or multiple computing units or multiple processing cores. The processor(s) 108 may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units (CPUs), graphics processing units (GPUs), state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions. For example, the processor(s) 108 may be one or more hardware processors and/or logic circuits of any suitable type specifically programmed or configured to execute the algorithms and processes described herein. The processor(s) 108 may be configured to fetch and execute computer-readable instructions stored in the computer-readable media, which may program the processor(s) to perform the functions described herein.
  • The computer-readable media 110 may include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of data, such as computer-readable instructions, data structures, program modules, or other data. Such computer-readable media 110 may include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, optical storage, solid state storage, magnetic tape, magnetic disk storage, RAID storage systems, storage arrays, network attached storage, storage area networks, cloud storage, or any other medium that may be used to store the desired data and that may be accessed by a computing device. Depending on the configuration of the server(s) 102, the computer-readable media 110 may be a type of computer-readable storage media and/or may be a tangible non-transitory media to the extent that when mentioned, non-transitory computer-readable media exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.
  • The computer-readable media 110 may be used to store any number of functional components that are executable by the processor(s) 108. In many implementations, these functional components comprise instructions or programs that are executable by the processor(s) 108 and that, when executed, specifically configure the processor(s) 108 to perform the actions attributed above to the server(s) 102. Functional components stored in the computer-readable media may optionally include a workspace management component 116, a channel management component 118, reminders manager 119, an operating system 121, and a datastore 122.
  • In at least one example, the workspace management component 116 may manage workspaces. That is, in at least one example, the communication platform may be partitioned into different workspaces, which may be associated with different groups of users, as described above. As described above, each workspace may be associated with a group identifier and one or more user accounts may be mapped to, or otherwise associated with, the group identifier. User(s) corresponding to such user account(s) may be “members” of the group.
  • In some examples, the workspace management component 116 may manage workspace membership. That is, the workspace management component 116 may receive requests to associate users with individual workspaces and the workspace management component 116 may associate user accounts associated with such users with group identifiers associated with the individual workspaces. For example, responsive to receiving a request to add a user to a workspace, the workspace management component 116 may associate a user account of the user with a group identifier of the workspace. The workspace management component 116 may disassociate user accounts and group identifiers, for example, when a user is removed from a workspace.
  • In at least one example, the channel management component 118 may manage communication channels. As described above, in at least one example, the communication platform may be a channel-based messaging platform, that in some examples, may be usable by group(s) of users. Users of the communication platform may communicate with other users via communication channels. A communication channel, or virtual space, may be a data route used for exchanging data between and among systems and devices associated with the communication platform. In at least one example, the channel management component 118 may establish a communication channel between and among various user computing devices, allowing the user computing devices to communicate and share data between and among each other. In at least one example, the channel management component 118 may manage such communications and/or sharing of data. In some examples, data associated with a communication channel may be presented via a user interface. In at least one example, the channel management component 118 may interact with the workspace management component 116 to manage the generation, presentation, and/or updating of user interfaces. Additional details of operations that may be performed by the channel management component 118 are described below.
  • In at least one example, the reminders manager 119 may receive requests (e.g., from the user computing device(s) 104) to provide a reminder associated with the communication services. For example, when executing operations associated with communication services, the server(s) 102 may provide to the user computing device 104 b a communication. In addition, the user computing device 104 b may request that a reminder associated with the communication be provided upon the occurrence of a condition (e.g., time-based condition, scheduled condition, when the user switches to (or is at) the computing device 104 a, etc.). The reminders manager 119 may, among other things, receive and store the reminders request, determine when a condition has been met, and help facilitate presentation the reminder upon satisfaction of the condition.
  • In at least one example, the operating system 121 may manage the processor(s) 108, computer-readable media 110, hardware, software, etc. of the server(s) 102.
  • In at least one example, the datastore 122 may be configured to store data that is accessible, manageable, and updatable. In some examples, the datastore 122 may be integrated with the server(s) 102, as shown in FIG. 1 . In other examples, the datastore 122 may be located remotely from the server(s) 102 and may be accessible to the server(s) 102 and/or user device(s), such as the user computing device(s) 104. The datastore 122 may comprise multiple databases, which may include user data 124, permission data 126, workspace data 128, and channel data 130. Additional or alternative data may be stored in the data store and/or one or more other data stores.
  • In at least one example, the user data 124 may store data associated with users of the communication platform. In at least one example, the user data 124 may store data in user profiles (which may also be referred to as “user accounts”), which may store data associated with a user, including, but not limited to, one or more user identifiers associated with multiple, different organizations or entities with which the user is associated, one or more communication channel identifiers associated with communication channels to which the user has been granted access, one or more group identifiers for groups (or, organizations, teams, entities, or the like) with which the user is associated, an indication whether the user is an owner or manager of any communication channels, an indication whether the user has any communication channel restrictions, a plurality of messages, a plurality of emojis, a plurality of conversations, a plurality of conversation topics, an avatar, an email address, a real name (e.g., John Doe), a username (e.g., j doe), a password, a time zone, a status (e.g., user status such as active, away, inactive, etc.), a token, and the like.
  • In some examples, a user may create a user account or profile that is associated with multiple clients. For example, the user account may be used in association with different copies or versions of a communication application downloaded to multiple computing devices (e.g., desktops, laptops, mobile devices, tablets, etc.). In some examples, user data 124 is reconciled among all of the clients. User data 124 may include other information, as well. For example, user data 124 may store a listing (e.g., table) of reminders requested in association with the user account. The listing may include, for example, information related to the subject of the reminder (e.g., a communication for which the reminder was requested) and condition information including a condition-based setting that, when satisfied, indicates the reminder should be provided. For example, if the reminder has been requested when a user is at his or her desktop client, the data stored in association with the reminder (e.g., in the datastore, table, etc.) may indicate as such.
  • In at least one example, the permission data 126 may store data associated with permissions of individual users of the communication platform. In some examples, permissions may be set automatically or by an administrator of the communication platform, an employer, enterprise, organization, or other entity that utilizes the communication platform, a team leader, a group leader, or other entity that utilizes the communication platform for communicating with team members, group members, or the like, an individual user, or the like. In some examples, permissions associated with an individual user may be mapped to, or otherwise associated with, an account or profile associated with the user data 124. In some examples, permissions may indicate which users may communicate directly with other users, which channels a user is permitted to access, restrictions on individual channels, which workspaces the user is permitted to access, restrictions on individual workspaces, and the like. In at least one example, the permissions may support the communication platform by maintaining security for limiting access to a defined group of users. In some examples, such users may be defined by common access credentials, group identifiers, or the like, as described above.
  • In at least one example, the workspace data 128 may store data associated with individual workspaces. As described above, the communication platform may be partitioned into workspaces associated with groups of users. In at least one example, a group identifier may be associated with a workspace. In at least one example, the group identifier may indicate a physical address in the workspace data 128 where data related to the corresponding workspace is stored. In at least one example, data associated with workspace permissions may be stored in association with the group identifier, data identifying users associated with the workspace may be stored in association with the group identifier, data associated with messages and/or other content associated with the workspace may be stored in association with the group identifier, data associated with communication channels associated with the workspace may be stored in association with the group identifier, and the like. In some examples, workspaces may be associated with one or more organization identifiers, which may be associated with organizations or other entities associated with the communication platform. In some examples, such data may be mapped to, or otherwise associated with, other types of data in the datastore 122 (e.g., the user data 124, the permission data 126, the channel data 130, etc.).
  • In at least one example, the channel data 130 may store data associated with individual communication channels. In at least one example, the channel management component 118 may establish a communication channel between and among various user computing devices, allowing the user computing devices to communicate and share data between and among each other. In at least one example, a communication channel identification may be assigned to a communication channel, which indicates the physical address in the channel data 130 where data related to that communication channel is stored. A communication channel may be “public,” which may allow any user within an organization (e.g., associated with an organization identifier) to join and participate in the data sharing through the communication channel, or a communication channel may be “private,” which may restrict data communications in the communication channel to certain users or users having particular roles (e.g., managers, administrators, etc.). In some examples, a communication channel may be “shared,” which may allow users associated with different organizations (e.g., entities associated with different organization identifiers) to join and participate in the data sharing through the communication channel. Shared channels may be public such that they are accessible to any user of either organization, or they may be private such that they are restricted to access by certain users or users having particular roles from both organizations.
  • In some examples, the datastore 122 may be partitioned into discrete items of data that may be accessed and managed individually (e.g., data shards). Data shards may simplify many technical tasks, such as data retention, unfurling (e.g., detecting that message contents include a link, crawling the link's metadata, and determining a uniform summary of the metadata), and integration settings. In some examples, data shards may be associated with organizations, groups (e.g., workspaces), communication channels, users, or the like.
  • In some examples, individual organizations may be associated with a database shard within the datastore 122 that stores data related to a particular organization identification. For example, a database shard may store electronic communication data associated with members of a particular organization, which enables members of that particular organization to communicate and exchange data with other members of the same organization in real time or near-real time. In this example, the organization itself may be the owner of the database shard and has control over where and how the related data is stored. In some examples, a database shard may store data related to two or more organizations (e.g., as in a shared channel).
  • In some examples, individual groups may be associated with a database shard within the datastore 122 that stores data related to a particular group identification (e.g., workspace). For example, a database shard may store electronic communication data associated with members of a particular group, which enables members of that particular group to communicate and exchange data with other members of the same group in real time or near-real time. In this example, the group itself may be the owner of the database shard and has control over where and how the related data is stored.
  • In some examples, a communication channel may be associated with a database shard within the datastore 122 that stores data related to a particular channel identification. For example, a database shard may store electronic communication data associated with the communication channel, which enables members of that particular communication channel to communicate and exchange data with other members of the same communication channel in real time or near-real time. In this example, a group or organization may be the owner of the database shard and may control where and how the related data is stored.
  • In some examples, individual users may be associated with a database shard within the datastore 122 that stores data related to a particular user account. For example, a database shard may store electronic communication data associated with an individual user, which enables the user to communicate and exchange data with other users of the communication platform in real time or near-real time. In some examples, the user itself may be the owner of the database shard and has control over where and how the related data is stored.
  • The communication interface(s) 112 may include one or more interfaces and hardware components for enabling communication with various other devices (e.g., the user computing device(s) 104), such as over the network(s) 106 or directly. In some examples, the communication interface(s) 112 may facilitate communication via Websockets, Application Programming Interfaces (APIs) (e.g., using API calls), HyperText Transfer Protocols (HTTPs), etc.
  • The server(s) 102 may further be equipped with various input/output devices 114 (e.g., I/O devices). Such I/O devices 114 may include a display, various user interface controls (e.g., buttons, joystick, keyboard, mouse, touch screen, etc.), audio speakers, connection ports and so forth.
  • In at least one example, the user computing device(s) 104 may include one or more processors 132, computer-readable media 134, one or more communication interfaces 136, and input/output devices 138 (I/O devices).
  • In at least one example, each processor of the processor(s) 132 may be a single processing unit or multiple processing units, and may include single or multiple computing units or multiple processing cores. The processor(s) 132 may comprise any of the types of processors described above with reference to the processor(s) 108 and may be the same as or different than the processor(s) 108.
  • The computer-readable media 134 may comprise any of the types of computer-readable media 134 described above with reference to the computer-readable media 110 and may be the same as or different than the computer-readable media 110. Functional components stored in the computer-readable media may optionally include a communication application 140 (e.g., for interacting with the server(s) 102); and an operating system 142.
  • In at least one example, the communication application 140 may be a mobile application, a web application, or a desktop application, which may be provided by the communication platform or which may be an otherwise dedicated application. In some examples, individual user computing devices associated with the environment 100 may have an instance or versioned instance of the communication application 140, which may be downloaded from an application store, accessible via the Internet, or otherwise executable by the processor(s) 132 to perform operations as described herein. That is, the communication application 140 may be an access point, enabling the user computing device(s) 104 to interact with the server(s) 102 to access and/or use communication services available via the communication platform. In at least one example, the communication application 140 may facilitate the exchange of data between and among various other user computing devices, for example via the server(s) 102. In at least one example, the communication application 140 may present user interfaces, as described herein. In at least one example, a user may interact with the user interfaces via touch input, keyboard input, mouse input, spoken input, or any other type of input (e.g., using the I/O devices 138).
  • The communication application 140 may include various functional components, and in at least one example, the application 140 includes a reminders manager 143. In some examples, the reminders manager 143 may perform one or more operations that are similar to the reminders manager 119. In at least some examples, the reminders manager 143 may provide (e.g., in association with a communication) one or more options for requesting and/or scheduling a reminder. For example, the reminders manager 143 may provide an option to request a reminder when a condition is satisfied, such as, but not limited to, a time-based condition (e.g., in 30 minutes or at a specified time), a location-based condition (e.g., when the client is determined to be at a location), a client-status-based condition (e.g., when a desktop client is active), and the like. In at least some examples, the reminders manager 143 may receive and memorialize a reminder request input by a user. For example, the reminders manager 143 may store a record of the reminder request locally on the client and/or may communicate the reminder request to the server(s) 102 (e.g., to the reminders manager 119). In some examples, the reminders manager 143 may determine when a condition associated with a reminder has been satisfied and/or receive an indication (e.g., alert or notification) from another component that the condition has been satisfied. In at least some examples, the reminders manager 143 may (e.g., upon a condition being satisfied, if specified) present a reminder via the user computing device(s) (e.g., in the context of the communication application 140).
  • Non-limiting examples of user interfaces 144 and 152 are shown in FIG. 1 . The user interfaces 144 and 152 may present information associated with a user account (e.g., UserAB as indicated by the user profile indicators 145 and 154). Although FIG. 1 depicts an example in which the user interfaces 144 and 152 present information associated with the same user account, in other examples, the user interfaces 144 and 152 may present information associated with different user accounts. For example, the user interfaces 144 and 152 may present information associated with different user accounts that exchange information via the communication services provided by the server(s) 102.
  • As illustrated in FIG. 1 , the user interface 144 can present data associated with one or more channels and, in some examples, one or more workspaces. That is, in some examples, the user interface 144 can enable a user to access multiple workspaces. In some examples, the user interface 144 can include a first section 146 (e.g., which can be a portion, pane, or other partitioned unit of the user interface 144) that includes user interface element(s) associated with workspace(s) with which the user (e.g., account of the user) is associated. Two user interface elements are illustrated in FIG. 1 , a first user interface element 147 a representing a first workspace and a second user interface element 147 b representing a second workspace. As described above, such workspaces can be associated with different domains. In some examples, a user can interact with the first user interface element 147 a or the second user interface element 147 b to access the corresponding workspace. In some examples, a user can be prompted to provide a credential to authenticate with the corresponding workspace. While two user interface elements are illustrated, any number of user interface elements can be presented via the first section 146, which can be associated with one or more domains.
  • In some examples, the user interface 144 may include a second section 148 (e.g., which can be a portion, pane, or other partitioned unit of the user interface 144) that includes user interface element(s) representing data associated with the workspace(s) with which the user (e.g., account of the user) is associated. In some examples, user interface element(s) presented via the second section 148 can represent virtual space(s) with which the user has access via a particular workspace or multiple workspaces. In some examples, the second section 148 may include user interface elements indicating one or more reminders related to data associated with the workspace. For example, the second section 148 may include a user interface element 149 that, when selected, presents a reminder (e.g., generated by a bot, virtual assistant, the reminders manager 143, etc.). In some examples, a reminders interface element may be presented under a direct messages section (e.g., as a direct message from a bot).
  • In at least one example, the user interface 144 can include a third section 150 (e.g., which can be a portion, pane, or other partitioned unit of the user interface 144) that can be associated with a data feed (or “feed”) indicating messages posted to and/or actions taken with respect to one or more channels and/or other virtual spaces for facilitating communications (e.g., a virtual space associated with direct message communication(s), a virtual space associated with event(s) and/or action(s), etc.) as described herein. In at least one example, data associated with the third section 150 can be associated with the same or different workspaces. That is, in some examples, the third section 150 can present data associated with the same or different workspaces via an integrated feed. In some examples, the data can be organized and/or is sortable by workspace, time (e.g., when associated data is posted or an associated operation is otherwise performed), type of action, channel, user, or the like. In some examples, such data can be associated with an indication of which user (e.g., member of the channel) posted the message and/or performed an action. In examples where the third section 150 presents data associated with multiple workspaces, at least some data can be associated with an indication of which workspace the data is associated with. In some examples, the third section 150 may, when the user interface element 149 is selected, present data associated with one or more reminders.
  • In at least one example, the first section 146, the second section 148, and the third section 150, in combination, can be associated with a “group-based communication user interface” from which a user can interact with the communication platform. Additional details associated with the user interface 144 are described below with reference to FIGS. 2 and 4 .
  • As illustrated in FIG. 1 , the user interface 152 may present data associated with one or more communication channels and, in some examples, one or more workspaces. That is, in some examples, the user interface 152 may integrate data from multiple workspaces into a single user interface so that the user (e.g., of the user computing device 104 b) may access and/or interact with data associated with the multiple workspaces that he or she is associated with and/or otherwise communicate with other users associated with the multiple workspaces. For example, a first region or pane 158 (e.g., header region) may include indicator(s) (e.g., user interface element(s) or object(s)) associated with workspace(s) with which the user (e.g., account of the user) is associated. In some examples, the first region 158 may include a workspace identifier 160 (e.g., may be similar to the indicator 147 a) that, when selected, opens a sidebar or other user interface (e.g., other pane or window) that allows selection of, or addition of, a different workspace (not explicitly shown in FIG. 1 ).
  • In examples, the user interface 152 may include a second region 162, or pane, that includes indicator(s) (e.g., user interface element(s) or object(s)) representing data associated with the workspace(s) (e.g., Workspace A in FIG. 1 ) with which the user (e.g., account of the user) is associated. For example, the second region 162 may include indicators related to mentions/reactions (e.g., messages shared among a group that include a reaction to a message posted by the UserAB or that mention UserAB); indicators related to communication threads associated with a user account (e.g., threads on which UserAB is included or to which UserAB has access); unread communications shared with a user account (e.g., to which UserAB has access); channels of which a user account is a member (e.g., channels of which UserAB is a member); direct message exchanges with other users; etc. In at least some examples, the second region 162 may include user interface elements (e.g., 163) that, when selected, present one or more sub-items beneath a respective category (e.g., “channels” category or “direct messages” category), such as by expanding a listing under the category. In at least some examples, the second region 162 may include user interface elements (e.g., 165) that, when selected, present another user interface for searching under the category and/or creating a new item under the category. In addition, in some examples, the second region 162 may include user interface elements indicating one or more reminders related to data associated with the workspace. For example, the second section 162 may include a user interface element 167 that, when selected, presents a reminder (e.g., generated by a bot, virtual assistant, the reminders manager 143, etc.) and/or navigates to a different user interface presenting multiple reminders.
  • In at least some examples, the user interface 152 may include a third region 164 (e.g., footer region) with other indicators (e.g., user interface element(s) or object(s)) that are selectable to navigate to a different user interface, pane, or window. In some examples, the indicators presented in the third region 164 may be persistently displayed in the third region 164 when the user computing device 104 navigates from one user interface to another user interface (e.g., when the content in the region 158 and/or 162 changes). For example, the third region 164 may include a home-screen indicator that, when selected, navigates to a home screen (e.g., the user interface 152). Further, in some examples, the third region 164 may include a direct message indicator that, when selected, navigates to a window displaying one or more direct message threads, as well as a mentions/reactions indicator that, when selected, navigates to a window displaying communications that mention the UserAB and/or react to a communication posted by the UserAB. The third region 164 may include one or more other selectable indicators, such as a search element and the profile indicator 154. Additional details associated with the user interface 144 are described below with reference to FIGS. 2 and 3 .
  • In at least one example, the operating system 142 may manage the processor(s) 132, computer-readable media 134, hardware, software, etc. of the server(s) 102.
  • The communication interface(s) 136 may include one or more interfaces and hardware components for enabling communication with various other devices (e.g., the user computing device(s) 104), such as over the network(s) 106 or directly. In some examples, the communication interface(s) 136 may facilitate communication via Websockets, APIs (e.g., using API calls), HTTPs, etc.
  • The user computing device(s) 104 may further be equipped with various input/output devices 138 (e.g., I/O devices). Such I/O devices 138 may include a display, various user interface controls (e.g., buttons, joystick, keyboard, mouse, touch screen, etc.), audio speakers, connection ports and so forth.
  • While techniques described herein are described as being performed by the workspace management component 116, the channel management component 118, the reminders managers 119 and/or 143, and the communication application 140, techniques described herein may be performed by any other component, or combination of components, which may be associated with the server(s) 102, the user computing device(s) 104, or a combination thereof.
  • Referring now to FIG. 2 , FIG. 2 illustrates, among other things, additional details associated with the user interfaces 144 and 152 (as well as other user interfaces), reminders, and other aspects described above with reference to FIG. 1 . FIG. 2 illustrates an example in which a user account (UserAB) is associated with two clients 204 a and 204 b, where the clients may include the user computing device 104 a and the user computing device 104 b and/or the communications application 140 a (e.g., an instance of the communication application 140 on the user computing device 104 a) and the communications application 140 b (e.g., an instance of the communication application 140 on the user computing device 104 b). That is, the client 204 a may include the user computing device 104 a and/or the communication application 140 a being executed by the user computing device 104 a, and the client 204 b may include the user computing device 104 b and/or the communication application 140 b being executed by the user computing device 104 b. As described above, in some instances, a user may download a computing application to multiple devices (e.g., as different versions, copies, instances, iterations, etc. of the computing application). For example, a user may download the communication application 140 a to the user computing device 104 a (e.g., desktop or laptop) and download the communication application 140 b to the user computing device 104 b (e.g., mobile device or tablet). In addition, the user may switch back and forth between the devices 104 a and 104 b to interact with (e.g., send/receive communications via) the computing applications and with the communication services provided by the communication platform server(s) 202.
  • FIG. 2 illustrates that one or more user devices 205 may leverage the communication platform server(s) 202 to provide a communication 206. In FIG. 2 , the communication 206 is illustrated to include a message (e.g., group message) that is associated with a channel (e.g., Channel-A). Various other types of communications may be provided from the user devices 205, such as direct messages, calendar invites or other meeting requests, tasks, deals, attachments, reactions, mentions, emojis, etc. In some examples, a user account (e.g., the same user account) associated with the first client and the second client has permission to access (e.g., receive and/or interact with) the communication 206. In some examples, the communication 206 (e.g., a copy of the communication 206) may be provided to the first client 204 a and the second client 204 b.
  • In at least some examples, the first client 204 a and the second client 204 b may present one or more notifications associated with the communication 206, and a form of the notification (e.g., placement, accessibility, presentation, appearance, etc.) may depend on a state of the client. For example, the client 204 b may include an interface 208, which could represent a lock-screen interface (e.g., interface presented when the client 204 b is locked state) or a notifications interface (e.g., interface presented when a user navigates to a notification center, such as by swiping down). In the example provided by the interface 208, a notification may include an interface element 210 that identifies one or more of the communication application, a time associated with the communication 206, and at least a portion of the content of the communication 206. In addition, FIG. 2 illustrates another example state of the client 204 b, including a device home screen interface 212, which may be presented when the client 204 b is unlocked and presenting applications executable by, or downloaded to, the user computing device 104 b. In the example provided by the interface 212, a notification may include an interface element 214 that is similar to the interface element 210 and that may float down from the top of the interface 210, gradually appear as an overlay or pop up, or otherwise be presented across the home screen or application. In addition, FIG. 2 illustrates another example state of the client 204 b, including a user interface 216 associated with the communication application 140 b (e.g., similar to the user interface 152 described with respect to FIG. 1 ). In the example provided by the interface 216, a notification may include an interface element 218 that is similar to the interface element 214.
  • FIG. 2 illustrates another example related to the communication 206, including a user interface 220 that may present content 222 associated with the communication 206. For example, the client 204 b may present the user interface 220 and the content 222 in response to a selection of a portion of one of the notification interface elements 210, 214, or 218 and/or in response to a selection of an interface element in the user interface 216 (e.g., selection of the “unreads” folder interface element or the “# channel-a” folder interface element). The user interface 220 may include elements for interacting with the content 222, such as a reply interface element, tag interface element, forward interface element, and a menu expansion interface element.
  • At least some examples of the present disclosure include presenting a reminder menu in association with a notification and/or a communication (e.g., direct message, group message, task, calendar event, deal, etc.). As described in this disclosure, a reminder menu includes a user interface element that provides options for a user to specify or customize settings in association with a reminder. For example, a reminder menu may provide options for a user to specify one or more conditions, such that when the one or more conditions are satisfied, a reminder is presented. FIG. 2 illustrates various examples in which a reminder menu 224, 226, and 228 is presented in association with the notifications 210, 214, and 218 (respectively). The reminder menus 224, 226, and 228 may be presented in response to various user input, such as a touch input (e.g., touch and hold). In another example, a reminder menu 230 may be invoked via a touch and hold input and/or by expanding menu options via the menu-expansion interface element 232.
  • A user may want to request a reminder associated with a communication for various reasons. For instance, as described, a user account may be associated the mobile client 204 b and with the desktop/laptop 204 a, and a user may receive the communication via the mobile client 204 b; however, the user may want to take some action with respect to the communication via the desktop/laptop client 204 a. As such, it may be useful to request a reminder in association with the desktop client 204 a, such as when the desktop client 204 a is active and/or when the user returns to (or is at) the desktop client 204 a.
  • In examples of the present disclosure, a condition for presentation of a reminder may be based on the desktop client 204 a (e.g., a state or status associated with the desktop client 204 a). For example, presentation of a reminder may be conditioned on a client status, such as a state or change in state of a desktop user computing device and/or the desktop communication application (e.g., 140 a). In at least some examples, reminder presentation may be also (or alternatively) be conditioned on a client location, such as whether a location of the client 204 b satisfies a location-based threshold (e.g., within a threshold distance of a location). As such, in some examples, the reminder menu (e.g., 224, 226, 228, and 230) may include a reminder-option interface element 236 for requesting that a reminder be presented on the desktop client 204 a (e.g., when a state or status of the desktop client 204 a satisfies a condition). In further examples, conditions for reminder presentation may include various other criteria, such as time-based conditions 234 (e.g., in 30 minute, in 1 hour, tomorrow, next week, etc.) or calendar-based conditions (e.g., on a specified date).
  • In some examples, when a reminder is requested (e.g., by selection of the interface element 236), the reminders manager 143 b may record/store the requested reminder and/or communicate the reminder request to the server-side reminders manager 119. In addition, the reminder request may be stored (e.g., in the datastore 122,) together with related information, such as the condition on which reminder presentation is based (e.g., status of desktop client 204 a) and the related communication (e.g., communication 206 or a link to the communication 206).
  • Referring briefly to FIG. 3 , FIG. 3 presents an example of a user interface 320 according to one or more examples. In at least some examples, when a reminder request has been received from a user account, a confirmatory communication is sent to the user account to confirm that the reminder will be provided when the user is at his or her desktop client. For example, the user interface 320 presents a portion of a thread associated with the content 222, and the thread includes content 322 associated with the confirmatory communication (e.g., from the reminder bot).
  • Referring back to FIG. 2 , in at least some examples, the reminders manager 143 a of the desktop client 204 a may include some identification (e.g., a list, setting, etc.) of one or more criteria on which reminder presentation is conditioned. For example, the reminders manager 143 a may include information indicating that reminder presentation may be based on a state of the desktop client 204 a. As such, when the state indicated by the condition arises (e.g., is determined by the reminders manager 143 a), the reminders manager 143 a may execute an API call to the server-side reminders manager 119 to determine whether any requested reminders conditioned on the detected status are stored in the database. If so, the reminders manager 143 a may receive, from the server-side reminders manager 119, an identification of the reminders to be presented, and the reminders may be presented via the user interface 244.
  • Reminders (and/or an indication of a reminder) may be presented in the user interface 244 in various manners. For example, the user interface 244 may indicate, in a direct message interface element 249 (e.g., a direct message from a reminder bot, such as a virtual personal assistant), that an unread communication (e.g., a communication including a reminder), has been received. In another example, the user interface 244 may indicate, in a grouped communications interface element 251, that a reminder has been received. In addition, when the interface element 249 and/or 251 is selected, the region 250 may display a reminder 270 associated with the communication 206. Reminders and indications associated with reminders may be presented in other ways as well. For example, referring briefly to FIG. 4 , a user interface 400 is depicted in accordance with some examples. In some instances, the user interface 400 may include a reminders interface element 402, which may help to sort reminders based on various criteria. For example, in FIG. 4 , the reminders interface element 402 may provide a sorted rendering based on a condition specified for reminder presentation. In some examples, the reminder interface element 402 may include a desktop indicator 404 that, when selected, presents one or more desktop reminders that were conditioned on a status of the desktop (e.g., when the desktop is active and/or when the user is perceived to be at the desktop). The reminder interface element 402 may include other indicators, such as a time-based indicator 406, which when selected, may present one or more reminders that were conditioned to be presented based on a time-based scheduling (e.g., in 30 minutes). In other examples, the reminders interface element provide a sorted presentation based on other criteria, such as channels (e.g., reminders associated with a channel) or user accounts (e.g., reminders associated with communications that are from or that mention or that are reacted to by a user account).
  • Referring to FIG. 2 , the reminders manager 143 b may determine that a condition has been met to present a “when at my desktop” reminder based on various criteria associated with a desktop state or a change in desktop state. In some examples, the state or the change in state may indicate, or be associated with, a presence of a user at the desktop client 204 a and/or an active state of the desktop client 204 a. For example, the condition may include the desktop client 204 a waking from a sleeping state, restarting, and/or being turned on. The state may be detected based on an I/O device receiving an input (e.g., touchscreen input, keyboard input, laptop being opened, etc.) that wakes the desktop client 204 a. In some examples, the state may be detected based on a WebSocket or other communication state (e.g., establishing a network connection, such as a Wi-Fi connection). In some examples, the state may be detected based on the communication application 140 a being opened, unhidden, launched, and/or logged onto. As indicated, the reminders manager 143 a may monitor one or more of these states and, when a condition is met, perform an API call to the server(s) (e.g., to the server(s) and/or reminder manager 119 in FIG. 1 ) to determine whether any reminders have been requested to be presented on the desktop client 204 a upon the condition being met (e.g., when the user is at the desktop).
  • In other examples, presentation of a reminder may be based on other information that may suggest a user is at his or her desktop. For example, the reminder manager 143 a may receive information indicating that the mobile client 204 b is proximate the desktop client 204 a (e.g., via a Bluetooth connection or other wireless connection or via a wired connection), and a reminder may be presented on the desktop based on the mobile client 204 b being proximate the desktop client 204 a. In some examples, location of the desktop client and/or the mobile client may be based on Bluetooth connection, GPS data, RFID data, barcode (e.g., QR) data, or near field communication (NFC) data.
  • FIG. 2 provides one or more examples in which a desktop reminder can be manually requested (e.g., by selecting the interface element 236). In other examples, a request to send a reminder when a user is at the desktop client may be automatically generated. For example, a setting may be programmed specifying that, for communications satisfying a condition, a reminder request is automatically sent that requests a reminder when the user is at (e.g., arrives at) his or her desktop. For example, a condition that, if met, generates an automatic desktop reminder may include a communication with an attachment (e.g., any attachment or an attachment exceeding a size threshold), a communication in a specified channel, a communication from a specified sender (e.g., specifically identified senders or senders identified a high importance), a communication associated with a specified third-party application (e.g., an application that may typically involve desktop operations, such as programming, designing, etc.). In some embodiments, a reminder request may be automatically generated by a workflow when a particular event is triggered. In some embodiments, a reminder request may be automatically generated by an application when a particular event has occurred.
  • In additional examples, a user may request that multiple reminders be provided when the user is back at the desktop client. As such, examples of the present disclosure may rank the reminders based on various criteria, such as to try and present more important reminders first. In some examples, the reminders may be ranked based on when the requests were received (e.g., reminders that were requested first are ranked higher). In some examples, reminders may be ranked based on the perceived importance of users associated with the reminder (e.g., based on whether a sender is marked as an important contact) or based on whether a channel or direct message associated with the reminder is identified as important (e.g., starred).
  • FIG. 2 provides one or more examples in which a desktop reminder (e.g., provide reminder when at my desktop) is associated with a communication from a user. In some examples, “when at desktop” timing may be applied to other items. For example, a user may be away from a desktop client and may want to create a reminder to complete a task when the user is at the desktop client. As such, using the communication application 140 b, a user may create a new communication (e.g., a task or other communication with some action item that is assigned to, or for completion by, the user account) and request, in association with the task item, a reminder to be presented when the user is at the desktop client 204 a. In other examples, a user may draft a communication to be sent to one or more other users (e.g., a direct message, a message to a channel, a message in a thread, a task for one or more other users, etc.) and request that presentation of the communication on the other user device(s) be timed based on when the other users are at the other users devices.
  • Referring to FIG. 5 , an example process 500 is illustrated for requesting and providing desktop reminders. In some instances, some or all of process 500 may be performed by one or more components in the environment 100 or one or more components discussed with respect to FIGS. 1, 2, 3 , and/or 4. By way of example and not limitation, the communication platform referred to in process 500 may be representative of a computing device associated with the (communication platform) server(s) 102, a client referred to in process 500 may be representative of the user computing device(s) 104 and/or application 140. However, the process 500 is not limited to being performed by components in the environment 100.
  • In at least some examples, at operation 502, the process includes rendering, for display via a mobile client, a communication associated with a user account of a communication platform. For example, a rendered communication may include a notification 504 or a message 506 associated with the notification 504.
  • In at least some examples, at operation 508, the process 500 includes receiving a request to render, for display via a desktop client associated with the user account, a reminder associated with the communication. For example, an input may be received indicating a selection of the interface element 510 (e.g., which represents an reminders option to have a reminder presented when the user is at a desktop client) or a selection of the interface element 512 (e.g., which also represents an reminders option to have a reminder presented when the user is at a desktop client).
  • In at least some examples, at operation 514, the process 500 includes determining that a state of the desktop client satisfies a condition. For example, the desktop client 516 may determine the existence of a state (based on a condition) that indicates a user is at the desktop client 516 and/or an active state of the desktop client. In some instances, the condition may include the desktop client waking from a sleeping state, restarting, and/or being turned on, and the state may be detected based on an I/O device receiving an input (e.g., touchscreen input, keyboard input, laptop being opened, etc.) that wakes the desktop client. In some examples, the state may be detected based on a WebSocket or other communication state (e.g., establishing a network connection, such as a WiFi connection). In some examples, the state may be detected based on the communication application being opened, unhidden, launched, and/or logged onto.
  • In at least some examples, at operation 518, the process 500 includes rendering, for display via the desktop client and based on the condition being satisfied, the reminder associated with the communication. For example, in the user interface 520, one or more indications 522 and/or 524 of a reminder may be presented. In some examples, the reminder 526 may be presented (e.g., when one of the indications 522 or 524 is selected).
  • Example Clauses
  • A: A method comprising: rendering, for display via a mobile client, a communication associated with a user account of a communication platform; receiving a request to render, for display via a desktop client associated with the user account, a reminder associated with the communication; determining that a state of the desktop client satisfies a condition; and in response to the condition being satisfied, rendering, for display via the desktop client, the reminder associated with the communication.
  • B: The method of paragraph A, wherein: the desktop client includes a desktop communication application; and the state is based on one or more of the desktop communication application being open, launched, unhidden, or logged onto.
  • C: The method of either paragraph A or B, wherein: the desktop client includes a computing device; and the state is based on one or more of the computing device starting up, waking, connecting to a network, establishing a communication protocol, or receiving an input.
  • D: The method of any one of paragraphs A-C further comprising, sending, by the desktop client and based on the condition being satisfied, an API call to a database including data associated with the request to render the reminder.
  • E: The method of any one of paragraphs A-D, wherein: the communication is a first communication, the request to render is a first request, and the reminder is a first reminder; and the method further comprises: receiving a second request to render, for display via the desktop client, a second reminder associated with a second communication; ranking, based on a criterion, the first reminder higher than the second reminder; and presenting the first reminder with higher priority than the second reminder.
  • F: The method of any one of paragraphs A-E further comprising: generating a second communication indicating the request to render the reminder was received; and rendering, for display via the mobile client and in a thread with the communication, the second communication.
  • G: The method of any one of paragraphs A-F, wherein the communication includes an action item assigned to the user account.
  • H: A system comprising: one or more processors; and one or more non-transitory computer readable media storing instructions that, when executed, cause the system to: render, for display via a mobile client, a communication associated with a user account of a communication platform; receive a request to render, for display via a desktop client associated with the user account, a reminder associated with the communication; determine that a state of the desktop client satisfies a condition; and in response to the condition being satisfied, render, for display via the desktop client, the reminder associated with the communication.
  • I: The system of paragraph H, wherein: the desktop client includes a desktop communication application; and the state is based on one or more of the desktop communication application being open, launched, unhidden, or logged onto.
  • J: The system of either paragraph H or I, wherein: the desktop client includes a computing device; and the state is based on one or more of the computing device starting up, waking, connecting to a network, establishing a communication protocol, or receiving an input.
  • K: The system of any one of paragraphs H-J, wherein the operations further comprise, sending, by the desktop client and based on the condition being satisfied, an API call to a database including data associated with the request to render the reminder.
  • L: The system of any one of paragraphs H-K, wherein: the communication is a first communication, the request to render is a first request, and the reminder is a first reminder; and the operations further comprise: receiving a second request to render, for display via the desktop client, a second reminder associated with a second communication; ranking, based on a criterion, the first reminder higher than the second reminder; and presenting the first reminder with higher priority than the second reminder.
  • M: The system of any one of paragraphs H-L, the operations further comprising: generating a second communication indicating the request to render the reminder was received; and rendering, for display via the mobile client and in a thread with the communication, the second communication.
  • N: The system of any one of paragraphs H-M, wherein the communication includes an action item assigned to the user account.
  • O: One or more non-transitory computer readable media storing instructions that, when executed, cause one or more processors to: render, for display via a mobile client, a communication associated with a user account of a communication platform; receive a request to render, for display via a desktop client associated with the user account, a reminder associated with the communication; determine that a state of the desktop client satisfies a condition; and in response to the condition being satisfied, render, for display via the desktop client, the reminder associated with the communication.
  • P: The one or more non-transitory computer readable media of paragraph O, wherein: the desktop client includes a desktop communication application; and the state is based on one or more of the desktop communication application being open, launched, unhidden, or logged onto.
  • Q: The one or more non-transitory computer readable media of either paragraph O or P, wherein: the desktop client includes a computing device; and the state is based on one or more of the computing device starting up, waking, connecting to a network, establishing a communication protocol, or receiving an input.
  • R: The one or more non-transitory computer readable media of any one of paragraphs O-Q, wherein the instructions, when executed, further cause the one or more processors to send, by the desktop client and based on the condition being satisfied, an API call to a database including data associated with the request to render the reminder.
  • S: The one or more non-transitory computer readable media of any one of paragraphs O-R, wherein: the communication is a first communication, the request to render is a first request, and the reminder is a first reminder; and the instructions, when executed, further cause the one or more processors to: receive a second request to render, for display via the desktop client, a second reminder associated with a second communication; rank, based on a criterion, the first reminder higher than the second reminder; and present the first reminder with higher priority than the second reminder.
  • T: The one or more non-transitory computer readable media of any one of paragraphs O-S, the instructions, when executed, further causing the one or more processors to: generate a second communication indicating the request to render the reminder was received; and render, for display via the mobile client and in a thread with the communication, the second communication.
  • U: Any one of paragraphs A-T, wherein: the condition includes a physical distance threshold, and the state includes the desktop client being located a physical distance from the mobile client that is less than the physical distance threshold.
  • V: Any one of paragraphs A-U, wherein: the communication is a new communication; and the method further comprises receiving, via the mobile client and before receiving the request to render the reminder, a request to create the new communication.
  • While the example clauses described above are described with respect to one particular implementation, it should be understood that, in the context of this document, the content of the example clauses may also be implemented via a method, device, system, a computer-readable medium, and/or another implementation.
  • CONCLUSION
  • While one or more examples of the techniques described herein have been described, various alterations, additions, permutations and equivalents thereof are included within the scope of the techniques described herein.
  • In the description of examples, reference is made to the accompanying drawings that form a part hereof, which show by way of illustration specific examples of the claimed subject matter. It is to be understood that other examples may be used and that changes or alterations, such as structural changes, may be made. Such examples, changes or alterations are not necessarily departures from the scope with respect to the intended claimed subject matter. While the steps herein may be presented in a certain order, in some cases the ordering may be changed so that certain inputs are provided at different times or in a different order without changing the function of the systems and methods described. The disclosed procedures could also be executed in different orders. Additionally, various computations that are herein need not be performed in the order disclosed, and other examples using alternative orderings of the computations could be readily implemented. In addition to being reordered, the computations could also be decomposed into sub-computations with the same results.

Claims (23)

1. A method comprising:
rendering, for display via a mobile client, a first communication associated with a user account of a communication platform;
receiving a first request to render, for display via a desktop client associated with the user account, a first reminder associated with the first communication, wherein the first request to render the first reminder is based on an instruction from the mobile client;
rendering, for display via the mobile client, a second communication associated with the user account;
receiving a second request to render, for display via the desktop client, a second reminder associated with the second communication;
ranking, based at least in part on whether a channel, a user account, or direct message associated with the first reminder is identified as important, the first reminder higher than the second reminder;
determining that a state of the desktop client satisfies a condition; and
in response to the condition being satisfied, rendering, for display via the desktop client, the first reminder associated with the first communication with a higher priority than the second reminder.
2. The method of claim 1, wherein:
the desktop client includes a desktop communication application; and
the state is based on one or more of the desktop communication application being open, launched, unhidden, or logged onto.
3. The method of claim 1, wherein:
the desktop client includes a computing device; and
the state is based on one or more of the computing device starting up, waking, connecting to a network, establishing a communication protocol, or receiving an input.
4. The method of claim 1 further comprising, sending, by the desktop client and based on the condition being satisfied, an API call to a database including data associated with the first request to render the first reminder.
5. (canceled)
6. The method of claim 1 further comprising:
generating a third communication indicating the first request to render the first reminder was received; and
rendering, for display via the mobile client and in a thread with the first communication, the third communication.
7. The method of claim 1, wherein the first communication includes an action item assigned to the user account.
8. A system comprising:
one or more processors; and
one or more non-transitory computer readable media storing instructions that, when executed, cause the system to:
render, for display via a mobile client, a first communication associated with a user account of a communication platform;
receive a first request to render, for display via a desktop client associated with the user account, a first reminder associated with the first communication, wherein the first request to render the first reminder is based on an instruction from the mobile client;
render, for display via the mobile client, a second communication associated with the user account;
receive a second request to render, for display via the desktop client, a second reminder associated with the second communication;
rank, based at least in part on whether a channel, a user account, or direct message associated with the first reminder is identified as important, the first reminder higher than the second reminder;
determine that a state of the desktop client satisfies a condition; and
in response to the condition being satisfied, render, for display via the desktop client, the first reminder associated with the first communication with a higher priority than the second reminder.
9. The system of claim 8, wherein:
the desktop client includes a desktop communication application; and
the state is based on one or more of the desktop communication application being open, launched, unhidden, or logged onto.
10. The system of claim 8, wherein:
the desktop client includes a computing device; and
the state is based on one or more of the computing device starting up, waking, connecting to a network, establishing a communication protocol, or receiving an input.
11. The system of claim 8, wherein the instructions further cause the system to send, by the desktop client and based on the condition being satisfied, an API call to a database including data associated with the first request to render the first reminder.
12. (canceled)
13. The system of claim 8, wherein the instructions further cause the system to:
generate a third communication indicating the first request to render the first reminder was received; and
render, for display via the mobile client and in a thread with the first communication, the third communication.
14. The system of claim 8, wherein the first communication includes an action item assigned to the user account.
15. One or more non-transitory computer readable media storing instructions that, when executed, cause one or more processors to:
render, for display via a mobile client, a first communication associated with a user account of a communication platform;
receive a first request to render, for display via a desktop client associated with the user account, a first reminder associated with the first communication, wherein the first request to render the first reminder is based on an instruction from the mobile client;
render, for display via the mobile client, a second communication associated with the user account;
receive a second request to render, for display via the desktop client, a second reminder associated with the second communication;
rank, based at least in part on whether a channel, a user account, or direct message associated with the first reminder is identified as important, the first reminder higher than the second reminder;
determine that a state of the desktop client satisfies a condition; and
in response to the condition being satisfied, render, for display via the desktop client, the first reminder associated with the first communication with a higher priority than the second reminder.
16. The one or more non-transitory computer readable media of claim 15, wherein:
the desktop client includes a desktop communication application; and
the state is based on one or more of the desktop communication application being open, launched, unhidden, or logged onto.
17. The one or more non-transitory computer readable media of claim 15, wherein:
the desktop client includes a computing device; and
the state is based on one or more of the computing device starting up, waking, connecting to a network, establishing a communication protocol, or receiving an input.
18. The one or more non-transitory computer readable media of claim 15, wherein the instructions, when executed, further cause the one or more processors to send, by the desktop client and based on the condition being satisfied, an API call to a database including data associated with the first request to render the first reminder.
19. (canceled)
20. The one or more non-transitory computer readable media of claim 15, the instructions, when executed, further causing the one or more processors to:
generate a third communication indicating the first request to render the first reminder was received; and
render, for display via the mobile client and in a thread with the first communication, the third communication.
21. The method of claim 1, wherein an indication of the first reminder is displayed as a direct message from another account associated with the communication platform.
22. The method of claim 1, wherein ranking the first reminder and the second reminder is further based at least in part on whether the first reminder and the second reminder are associated with a channel, a user account, or another communication associated with the communication platform.
23. The one or more non-transitory computer readable media of claim 15, wherein an indication of the first reminder is displayed as a direct message from another account associated with the communication platform.
US17/523,574 2021-09-21 2021-11-10 Mobile-generated desktop reminders Active US11599235B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/US2022/042634 WO2023048934A1 (en) 2021-09-21 2022-09-06 Mobile-generated desktop reminders
CN202280057431.4A CN117917064A (en) 2021-09-21 2022-09-06 Mobile generated desktop reminders

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN202121042657 2021-09-21
IN202121042657 2021-09-21

Publications (2)

Publication Number Publication Date
US11599235B1 US11599235B1 (en) 2023-03-07
US20230091626A1 true US20230091626A1 (en) 2023-03-23

Family

ID=85386909

Family Applications (1)

Application Number Title Priority Date Filing Date
US17/523,574 Active US11599235B1 (en) 2021-09-21 2021-11-10 Mobile-generated desktop reminders

Country Status (1)

Country Link
US (1) US11599235B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11620041B1 (en) * 2022-01-31 2023-04-04 Zoom Video Communications, Inc. Reminder notifications for messages

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070202884A1 (en) * 2006-02-24 2007-08-30 Katja Nykanen System, apparatus and method for transmitting event information from a remote terminal to subscribers over a network
US20090201768A1 (en) * 2008-02-13 2009-08-13 Research In Motion Limited Electronic device and method of controlling reminder notifications
US20120084793A1 (en) * 2010-10-01 2012-04-05 Imerj, Llc Cross-environment event notification
US20150143281A1 (en) * 2013-11-19 2015-05-21 Apple Inc. Notifications and reminders based on user states
US9462570B1 (en) * 2015-10-02 2016-10-04 International Business Machines Corporation Selectively sending notifications to mobile devices
US20170222968A1 (en) * 2016-01-29 2017-08-03 Microsoft Technology Licensing, Llc Cross device messaging

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8086672B2 (en) * 2000-06-17 2011-12-27 Microsoft Corporation When-free messaging
US7457879B2 (en) * 2003-04-01 2008-11-25 Microsoft Corporation Notification platform architecture
US7233229B2 (en) 2005-03-01 2007-06-19 Microsoft Corporation Actionable communication reminders
US7526559B1 (en) * 2008-03-31 2009-04-28 International Business Machines Corporation Transfer of web applications between devices
US8745191B2 (en) * 2009-01-28 2014-06-03 Headwater Partners I Llc System and method for providing user notifications
US20110231216A1 (en) * 2010-03-17 2011-09-22 Research In Motion Limited System and method for controlling event reminders
US8171137B1 (en) * 2011-05-09 2012-05-01 Google Inc. Transferring application state across devices
US10776103B2 (en) * 2011-12-19 2020-09-15 Majen Tech, LLC System, method, and computer program product for coordination among multiple devices
US9247525B2 (en) * 2012-03-16 2016-01-26 Qualcomm Incorporated Systems and methods for providing notifications
US8990343B2 (en) * 2012-07-30 2015-03-24 Google Inc. Transferring a state of an application from a first computing device to a second computing device
US8823507B1 (en) * 2012-09-19 2014-09-02 Amazon Technologies, Inc. Variable notification alerts
US20150160951A1 (en) * 2013-12-06 2015-06-11 Board Of Regents Of The University Of Texas System Remote launch of application on mobile device
RU2580437C2 (en) * 2014-09-02 2016-04-10 Общество С Ограниченной Ответственностью "Яндекс" Method of handling incoming electronic message and server
US9479630B1 (en) * 2014-12-08 2016-10-25 Amazon Technologies, Inc. Location and time based application management
US9998413B2 (en) * 2014-12-23 2018-06-12 Palo Alto Research Center Incorporated Computer-implemented system and method for prioritizing electronic messages based on importance
US10453325B2 (en) * 2015-06-01 2019-10-22 Apple Inc. Creation of reminders using activity state of an application
US10149278B2 (en) * 2015-09-30 2018-12-04 Apple Inc. Alert notification management for multiple user devices
US10135941B2 (en) * 2016-02-18 2018-11-20 International Business Machines Corporation Managing push notifications on portable devices
US10382376B2 (en) * 2016-09-23 2019-08-13 Microsoft Technology Licensing, Llc Forwarding notification information regardless of user access to an application
US10601753B2 (en) 2017-04-04 2020-03-24 International Business Machines Corporation Automatic threading of conversations based on content and interactions
US11489956B2 (en) * 2018-11-30 2022-11-01 Dish Network L.L.C. Systems and methods for notification forwarding
US11265416B2 (en) * 2019-06-05 2022-03-01 Kyndryl, Inc. Management of communication notifications based upon geographic location

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070202884A1 (en) * 2006-02-24 2007-08-30 Katja Nykanen System, apparatus and method for transmitting event information from a remote terminal to subscribers over a network
US20090201768A1 (en) * 2008-02-13 2009-08-13 Research In Motion Limited Electronic device and method of controlling reminder notifications
US20120084793A1 (en) * 2010-10-01 2012-04-05 Imerj, Llc Cross-environment event notification
US20150143281A1 (en) * 2013-11-19 2015-05-21 Apple Inc. Notifications and reminders based on user states
US9462570B1 (en) * 2015-10-02 2016-10-04 International Business Machines Corporation Selectively sending notifications to mobile devices
US20170222968A1 (en) * 2016-01-29 2017-08-03 Microsoft Technology Licensing, Llc Cross device messaging

Also Published As

Publication number Publication date
US11599235B1 (en) 2023-03-07

Similar Documents

Publication Publication Date Title
US20230325056A1 (en) System and method for reacting to messages
US11310295B1 (en) Integrated workspace on a communication platform
US11445029B2 (en) Integrated workspaces on communication platform
US11652769B2 (en) Snippet(s) of content associated with a communication platform
US11552813B2 (en) Modifying direct message communication membership
US20220353129A1 (en) Channel generation in a communication platform
US11079907B1 (en) Systems and methods for reacting to messages
US11875311B2 (en) Communication platform document as a communication channel
US11677842B2 (en) Enhanced user profiles within a communication platform
US20230099324A1 (en) Establishing new connections in a communication platform
US11822764B2 (en) User interface for searching content of a communication platform using reaction icons
US11599235B1 (en) Mobile-generated desktop reminders
US20230393702A1 (en) Connections interface for communication platform
US20230351031A1 (en) Referencing a document in a virtual space
US20230072246A1 (en) Workflow interface in a communication platform
US11522825B2 (en) Object interface for quick access to objects of a communication platform
US11044218B1 (en) Systems and methods for reacting to messages
US11588779B2 (en) Systems and methods for sharing channels in a group-based communication platform
US20220327097A1 (en) Repository for quick retrieval of object(s) of a communication platform
WO2023048934A1 (en) Mobile-generated desktop reminders
US20230127356A1 (en) Converting private channels to public channels
CN117917064A (en) Mobile generated desktop reminders
US20230179562A1 (en) Object interface for quick access to objects of a communication platform
CN117501292A (en) Object interface for quick access to objects of a communication platform

Legal Events

Date Code Title Description
AS Assignment

Owner name: SLACK TECHNOLOGIES, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ALVARADO, CATHERINE YESENIA;BALAKRISHNA, MADHU;BAKSHI, AKSHAY;AND OTHERS;SIGNING DATES FROM 20210916 TO 20210927;REEL/FRAME:058076/0869

Owner name: SLACK TECHNOLOGIES, LLC, CALIFORNIA

Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:SLACK TECHNOLOGIES, INC.;SLACK TECHNOLOGIES, LLC;REEL/FRAME:058076/0953

Effective date: 20210721

FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: SALESFORCE, INC., CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:SALESFORCE.COM, INC.;REEL/FRAME:061972/0769

Effective date: 20220404

Owner name: SALESFORCE.COM, INC., CALIFORNIA

Free format text: MERGER;ASSIGNOR:SLACK TECHNOLOGIES, INC.;REEL/FRAME:061838/0141

Effective date: 20210721

STCF Information on status: patent grant

Free format text: PATENTED CASE