Integrating third party platforms into a communication platform
Patent Information
- Application Number
- CN202180092895.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-12-03
- Filing Date
- 2021-11-18
- Publication Date
- 2026-10-20
- Estimated Expiration
- 2041-11-18
Smart Images

Figure CN117242759B_ABST
Abstract
Description
[0001] Cross-references to related applications
[0002] This application claims priority to U.S. Patent Application No. 17 / 111,408, filed December 3, 2020, which is incorporated herein by reference. Technical Field
[0003] A communication platform can fully leverage network-based computing systems to enable users to exchange data. In examples, users of the communication platform can communicate with other users via a communication channel (or "channel"). A communication channel, or other virtual space, can be a data route used to exchange data between systems and devices associated with the communication platform. For example, communication channels can be established between various user computing devices, allowing user computing devices to communicate with each other and share data over one or more networks. That is, in some examples, the communication platform can be a channel-based platform and / or hub for facilitating communication between users. In some examples, data associated with a communication channel can be presented via a user interface. In some examples, the user interface can present data feeds indicating messages posted to a specific communication channel and / or actions taken for a specific communication channel. In the prior art, to access objects associated with a communication platform but outside the communication platform, users need to leave the communication platform. Accordingly, the prior art requires multiple interactions between the user and the user's computing device, and is therefore inefficient. Attached Figure Description
[0004] Refer to the accompanying drawings for a detailed description. In the drawings, the leftmost number of the reference numerals indicates the drawing in which the reference numeral first appears. The same reference numerals are used in different drawings to denote similar or identical components or features. The drawings are not drawn to scale.
[0005] Figure 1 The illustration shows an example environment used to perform the techniques described in this article.
[0006] Figure 2A The illustration shows an example user interface presented via a communication platform as described in this article.
[0007] Figure 2B This illustration shows another example user interface presented via a communication platform as described in this article.
[0008] Figure 3 The illustration shows an example of a user interface where a third-party object is presented within the user interface.
[0009] Figure 4 Another example of a user interface is illustrated, in which the block displaying third-party objects has been resized via a resizing mechanism.
[0010] Figure 5 The illustration shows another example of a user interface, in which multiple third-party objects are presented within the user interface.
[0011] Figure 6 The illustration shows an example of a user interface presented via a third-party platform.
[0012] Figure 7 The illustration shows an example of a user interface presented via a third-party platform, where functions associated with the communication platform are integrated into the third-party platform.
[0013] Figure 8 The illustration shows an example process for presenting third-party objects via a user interface associated with a communication platform, as described in this article.
[0014] Figure 9 The illustration depicts an example process for annotating a user interface to enable access to (multiple) third-party objects associated with the user interface, as described herein.
[0015] Figure 10 The illustration depicts an example process, as described herein, for resulting in a group-based communication user interface presented via a third-party platform, where functionality associated with the communication platform is integrated into the third-party platform. Detailed Implementation
[0016] This describes integrating multiple objects (e.g., "multiple third-party objects") associated with multiple third-party platforms into a communication platform. In some examples, the communication platform can be a group-based communication platform, a channel-based communication platform, a permission-based communication platform, a channel-based messaging platform, and / or any other platform facilitating communication between users, enabling users to access the third-party objects from within the communication platform. That is, in at least one example, the third-party objects can be integrated into the communication platform such that they can be accessed from within the platform. In at least one example, a user can request access to the third-party objects from a user interface associated with the communication platform. The third-party objects can be retrieved from the third-party platforms and presented via the user interface, allowing the user to view, edit, or otherwise interact with them. That is, in the examples, the user interface can be divided into two or more blocks, where a first block may present data associated with the communication platform (e.g., multiple messages, multiple interactive instructions, etc.), and a second block may present the third-party objects. In at least one example, the first and second blocks can be presented simultaneously, and each can be independently interactive. In this way, users can interact with the communication platform and third-party objects without leaving the communication platform. That is, users can open, view, and / or edit third-party objects within the context of the communication platform.
[0017] In some examples, functionality associated with the communication platform can be integrated into a third-party platform. For example, the third-party platform can present an actuation mechanism or any other interaction mechanism that enables such functionality (associated with the communication platform) to be presented via the third-party platform. In some examples, based at least in part on the detection of input associated with the actuation mechanism, the user interface presented via the third-party platform can be divided into two or more blocks, where the first block can present data associated with the third-party platform (e.g., third-party objects), and the second block can present a group-based communication user interface (and / or other data associated with the communication platform) associated with the communication platform. In at least one example, the first and second blocks can be presented simultaneously, and each can be interactively independent. In this way, the user can interact with the communication platform without leaving the third-party platform. That is, the user can communicate on the communication platform within the context of the third-party platform.
[0018] The examples described herein relate to integrating third-party objects associated with a third-party platform into a communication platform and / or integrating functionality associated with a communication platform into a third-party platform. In some examples, one or more instances of an application associated with the communication platform may be integrated into the communication platform and / or the third-party platform. In some examples, more than one third-party object may be integrated into the communication platform, such that multiple different objects associated with the same or different third-party platforms can be opened, viewed, and / or edited via the communication platform's user interface.
[0019] As mentioned above, in the prior art, in order for a user to access a third-party object, the user needs to leave the communication platform to open, view, and / or edit the object. This may require the user to switch between multiple different user interfaces, applications, platforms, and / or similar devices. Therefore, the prior art is inefficient and can be frustrating for users. The technology described herein enables the integration of the communication platform with a third-party platform, allowing users of the communication platform to open, view, and / or edit third-party objects without leaving the communication platform, and / or allowing users of the third-party platform to communicate via the communication platform without leaving the third-party platform. Accordingly, the technology described herein provides an improvement over existing systems by offering an improved user interface. That is, by achieving the integration of third-party objects with the communication platform and / or the communication platform with a third-party platform, the technology described herein simplifies user interaction with the user interface. Furthermore, by reducing the number of windows or similar components required to access multiple objects, the technology described herein reduces processing and / or computational resources, thereby providing an improvement over the prior art.
[0020] Figure 1 An example environment 100 for performing the techniques described herein is illustrated. In at least one example, example environment 100 may include one or more server computing devices (or "(multiple) servers") 102. In at least one example, server(multiple) servers 102 may include one or more servers or other types of computing devices, which may be implemented in any manner. For example, in the case of servers, functional components and data may be implemented on a single server, server cluster, server farm or data center, cloud-hosted computing service, cloud-hosted storage service, etc., although other computer architectures may be used additionally or alternatively.
[0021] In at least one example, server(s) 102 may be associated with a communication platform that leverages network-based computing systems to enable users of the communication platform to exchange data. In at least one example, the communication platform may be "group-based," enabling the platform and associated systems, communication channels, messaging, and / or virtual spaces to be secure (possibly limited by permissions) to restrict access to defined user groups. In some examples, user groups may be limited by identifiers that may be associated with public access credentials, domains, etc. In some examples, the communication platform may be a hub, providing secure and private virtual spaces to enable users to chat, meet, make phone calls, collaborate, transfer files or other data, messages, or otherwise communicate with each other.
[0022] In some examples, each group may be associated with an organization, which may be associated with an organization identifier. Users associated with an organization identifier can chat, meet, call, collaborate, transfer files or other data, messages, or otherwise communicate with each other in a secure and private virtual space available through the communication platform. In some examples, each group may be associated with a workspace, which is associated with a workspace identifier. Users associated with a workspace identifier can chat, meet, call, collaborate, transfer files or other data, messages, or otherwise communicate with each other in a secure and private virtual space available through the communication platform. In some examples, a group may be associated with multiple organizations and / or workspaces. In some examples, an organization may be associated with multiple workspaces.
[0023] In at least one example, servers 102 can communicate with user computing device 104 via one or more networks 106. That is, as described herein, servers 102 and user computing device 104 can use networks 106 to transmit, receive, and / or store data (e.g., content, information, etc.). User computing device 104 can be any suitable type of computing device, such as portable, semi-portable, semi-fixed, or fixed. Some examples of user computing device 104 may include tablet computing devices, smartphones, mobile communication devices, laptops, netbooks, desktop computing devices, terminal computing devices, wearable computing devices, augmented reality devices, Internet of Things (IoT) devices, or any other computing device capable of sending communications and performing functions according to the techniques described herein. Although a single user computing device 104 is shown, the example environment 100 may actually include multiple (e.g., dozens, hundreds, thousands, millions) user computing devices. In at least one example, user computing devices such as user computing device 104 can be operated by a user to access communication services via a communication platform, among other things. Users can be individuals, groups of individuals, employers, businesses, organizations, etc. In some examples, users can be associated with specified roles (e.g., administrator, team leader, etc.) and / or types (e.g., verified, etc.).
[0024] (Multiple) networks 106 may include, but are not limited to, any type of network known in the art, such as local area networks or wide area networks, the Internet, wireless networks, cellular networks, local wireless networks, Wi-Fi and / or short-range wireless communications. Bluetooth Low Energy (BLE), Near Field Communication (NFC), wired networks, or any other such network, or any combination thereof. The components used for such communication may depend at least in part on the type of network, the environment chosen, or both. Protocols used for communication over (multiple) such networks are well known and will not be discussed in detail herein.
[0025] In at least one example, 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.
[0026] In at least one example, each of the processors 108 may be a single processing unit or multiple processing units, and may include a single or multiple computing units or multiple processing cores. The processors 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 circuits, and / or any device that manipulates signals based on operating instructions. For example, the processors 108 may be one or more hardware processors and / or any suitable type of logic circuitry specifically programmed or configured to execute the algorithms and processes described herein. The processors 108 may be configured to extract and execute computer-readable instructions stored in a computer-readable medium, which may program the processors to perform the functions described herein.
[0027] Computer-readable medium 110 may include volatile, non-volatile, removable and / or non-removable memory or other media implemented with any type of technology for storing data (such as computer-readable instructions, data structures, program modules or other data). Such computer-readable medium 110 may include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technologies, optical storage, solid-state storage, magnetic tape, disk storage, RAID storage systems, storage arrays, network-attached storage, storage area networks, cloud storage, or any other medium that can be used to store desired data and is accessible by a computing device. Depending on the configuration of servers(multiple)102, computer-readable medium 110 may be one type of computer-readable storage medium and / or may be a tangible, non-transitory medium, such that, when referred to, non-transitory computer-readable medium excludes media such as energy, carrier signals, electromagnetic waves and the signal itself.
[0028] Computer-readable medium 110 can be used to store any number of functional components executable by processor(s) 108. In many implementations, these functional components include instructions or programs executable by processor(s) 108, and specifically configured, when executed, to perform the actions described above belonging to server(s) 102. The functional components stored in the computer-readable medium may optionally include an integration management component 116, a channel management component 118, a direct message management component 119, an operating system 120, and a data storage 122.
[0029] In at least one example, the integration management component 116 can manage the integration of a third-party platform with a communication platform and / or the communication platform with a third-party platform. A third-party platform, which may be associated with one or more third-party servers 123, may be external to the communication platform and may provide services additional to or alternative to those provided by the communication platform. That is, the communication platform may be a "first-party platform," and the third-party platform may be external to the first-party platform (communication platform). In the examples, the services of the third-party platform may be accessed via a third-party application, a web browser, etc. In at least one example, the third-party platform may host, store, manage, or otherwise own one or more objects. Objects may include text documents, images, videos, or any other file or data items. Objects created by the third-party platform may be "third-party objects" and may be hosted, stored, managed, or otherwise owned by the third-party platform.
[0030] In some examples, the integration management component 116 can facilitate the integration of third-party platforms into the communication platform. In some examples, the third-party platform can be integrated into the web browser experience associated with the communication platform. In some examples, the third-party platform can be integrated into the native application associated with the communication platform.
[0031] In some examples, a third-party platform can be integrated into a communication platform via a small applicator (e.g., built on web technologies such as Hypertext Markup Language (HTML), JavaScript, Cascading Style Sheets (CSS), etc.) that can be used to customize the web browsing experience associated with the communication platform. In at least one example, such an applicator can be referred to as an extension. In at least one example, an extension can be used to customize (web) browser functionality and behavior according to the needs or preferences of the platform (e.g., the communication platform, the third-party platform, etc.). In some examples, developers can install such an extension into the communication platform. In at least one example, an extension can cause a frame, such as an inline frame, to be loaded into a web browser that has access to the communication platform (e.g., in response to detecting input associated with an actuation mechanism associated with a third-party object and / or receiving a request for a third-party object). In some examples, the frame can access content associated with the third-party platform and write that associated content into the frame. Accordingly, the requested third-party object can be rendered via a frame within the user interface of the communication platform (e.g., rendered via a web browser).
[0032] In some examples, third-party platforms can be integrated into a communication platform by embedding an embeddable browser (e.g., a webview) into a native application associated with the communication platform. In such examples, the native application can use the embeddable browser to display web page content inline within the native application. That is, in such examples, as described herein, the native application can have an embedded browser engine that can programmatically load content (e.g., multiple third-party objects) within the user interface. In some examples, such content can be loaded into frames such as inline frames. Accordingly, the requested third-party objects can be rendered via frames within the communication platform's user interface (e.g., via the native application).
[0033] In some examples, the integration management component 116 can facilitate the integration of functionality associated with the communication platform into third-party platforms. In some examples, the communication platform can be integrated into the web browser experience associated with the third-party platform. In some examples, the communication platform can be integrated into the native application associated with the third-party platform.
[0034] In some examples, as described above, the communication platform can be integrated into a third-party platform via a small software application (e.g., an extension). In some examples, developers (associated with the third-party platform) can install such an extension into the third-party platform. In at least one example, the extension can cause a frame, such as an inline frame, to be loaded into a web browser that has access to the third-party platform within it. In some examples, the frame can access content associated with the communication platform and write that associated content into the frame. In some examples, the communication platform can be associated with security restrictions that limit the ability of the communication platform to be framed into external websites (e.g., websites associated with, for example, different domains). Accordingly, in some examples, when a frame associated with the communication platform is requested, the extension can be configured to redirect to the communication platform, which can rewrite the content associated with both the communication platform and the third-party platform within both frames. This can provide an experience as if the user were operating within the third-party platform, but due to security restrictions, it can be hosted by the communication platform.
[0035] In some examples, a communication platform can be integrated into a third-party platform by embedding an embeddable browser (e.g., a webview) into a native application associated with that platform. In such examples, the native application can use the embeddable browser to display web page content. That is, in such examples, as described herein, the native application can have an embedded browser engine that can programmatically load content (e.g., multiple third-party objects) within the user interface. In some examples, such content can be loaded into frames such as inline frames.
[0036] In some examples, the frame associated with content from a third-party platform can be one of multiple frames associated with a user interface associated with a communication platform (e.g., rendered via a web browser or native application). For example, a first frame can be used to render data associated with the communication platform, and a second frame can be used to render data associated with a third-party platform. In such an example, the first frame can point to the communication platform, and the second frame can point to an external document, but both frames can be rendered within the same user interface of the communication platform. As described herein, the data associated with the two frames can be interactive independently. In some examples, extensions can be configured to create bidirectional connections to enable communication between frames.
[0037] In at least one example, at least in part, based on the integration of a third-party platform with a communication platform, references to objects associated with the third-party platform (e.g., “third-party objects”) can be annotated with an actuation mechanism. For the purposes of this discussion, an “actuation mechanism” can be any mechanism by which an interaction causes an operation to be performed. That is, an actuation mechanism can be an interactive mechanism that causes an operation to be performed. In some examples, the integration management component 116 can analyze data associated with the user interface of the communication platform to identify references to third-party objects. The integration management component 116 can cause an actuation mechanism to be associated with a reference to a third-party object. An actuation mechanism that can be associated with a link or other mechanism can cause the third-party object to be presented via a frame through the user interface of the communication platform, as described below. In some examples, the third-party object can be presented in the “context” of the communication platform, allowing the user to interact with the communication platform and the third-party object within the user interface of the communication platform. In at least one example, the third-party object can be interactive, allowing the user to edit the third-party object within the user interface of the communication platform. Additional details are provided below.
[0038] In examples where functionality associated with the communication platform is integrated into a third-party platform, the user interface of the third-party platform, which can be presented via an application, web browser, etc., may include an actuation mechanism associated with the communication platform. Based at least in part on receiving an indication that the actuation mechanism has been actuated, the integration management component 116 can cause data associated with the communication platform to be presented via the user interface. In some examples, such data may be presented as a group-based communication user interface associated with the communication platform. In this way, the user can interact with both the third-party platform and the communication platform via the same user interface. Additional details are provided below.
[0039] In at least one example, the channel management component 118 can manage the communication channels (i.e., "channels") of the communication platform. In at least one example, the communication platform can be "channel-based," allowing the platform to be organized into secure (permission-restricted) communication channels to limit access to a defined group of users (e.g., members of the communication channel). The communication channel or virtual space can be a data route used to exchange data between systems and devices associated with the communication platform. In some examples, the communication channel can be "public," allowing any user within a group associated with the communication channel (e.g., associated with an organization identifier, associated with a workspace identifier, etc.) to join and participate in data sharing through the communication channel. In some examples, the communication channel can be "private," restricting data communication within the communication channel to certain users or users with specific roles (e.g., administrators, managers, etc.) and / or types (e.g., verified, etc.).
[0040] In some examples, a communication channel can be “shared,” allowing users associated with two or more different groups (e.g., entities associated with two or more different organization and / or workspace identifiers) to join and participate in data sharing via the communication channel. A shared communication channel can be public, making it accessible to any user in the group associated with the shared communication channel, or it can be private, restricting access to certain users or users with specific roles and / or types. A “shared communication channel” or “external shared communication channel” enables two or more organizations, such as Organization 1 and Organization 2, to share data, exchange communications, etc. In one example, Organization 1 and Organization 2 may be associated with different organization identifiers, different business entities, different tax identification numbers, and / or otherwise associated with different permissions, such that users associated with Organization 1 and users associated with Organization 2 cannot access data associated with the other organization without an external shared channel. In some examples, a shared communication channel can be shared with one or more different workspaces and / or organizations, and depending on the permission-based and / or group-based configuration of the communication platform described herein, these organizations would not be able to access each other's data without shared communication.
[0041] In at least one example, the channel management component 118 can receive a request to create a communication channel. In some examples, the request may include a name associated with the communication channel, one or more users to be invited to join the communication channel, and / or permissions associated with the communication channel. In at least one example, one or more user identifiers associated with one or more users and / or one or more user accounts may be mapped to or otherwise associated with the communication channel (e.g., a communication channel identifier associated with it). The users(s) associated with the communication channel can be “members” of that communication channel. Members of the communication channel can communicate with other members via the communication channel. That is, in at least one example, the channel management component 118 can establish communication channels between various user computing devices associated with user identifiers associated with the communication channel, thereby allowing user computing devices to communicate and share data with each other. As described herein, in some examples, such communication and / or sharing of data may be carried out via one or more messages, which may be exchanged via the communication channel. In at least one example, the channel management component 118 can manage such communication and / or sharing of data. In some examples, the data associated with the communication channel may be presented via a user interface.
[0042] As described above, in at least one example, one or more permissions may be mapped to a communication channel and / or its associated members, or otherwise associated with a communication channel and / or its associated members. Such permissions may indicate which users have permission to access the communication channel, permitted actions and / or messages within the communication channel, which users and / or which types of users are allowed to add or remove members, which users and / or which types of users are allowed to share the communication channel with other users, retention policies associated with data within the communication channel, whether the communication channel is public or private, and so on.
[0043] In at least one example, the direct messaging management component 119 can manage "direct messages," which may include communication with individual users or multiple specified users (e.g., not all members of an organization or a subset of its members). In at least one example, a "direct message" may include a data route or virtual space for exchanging data between systems and devices associated with a communication platform. In some examples, a direct message may be a private message between two or more users of the communication platform. In some examples, direct messages may be "shared," which may allow users associated with two or more different groups (e.g., entities associated with two or more different organizations and / or workspace identifiers) to join and participate in data sharing via direct messages.
[0044] In at least one example, the direct message management component 119 can receive a request to generate a direct message. In some examples, the request may include identifiers associated with one or more users who are the intended recipients of the direct message(s). In at least one example, one or more user identifiers associated with one or more users and / or one or more user accounts may be mapped to or otherwise associated with a direct message (e.g., or a direct message identifier associated with it). Users(s) associated with a direct message(s) can communicate with each other and / or otherwise share data with each other via the direct message(s). As described herein, in some examples, such communication and / or sharing of data may occur via one or more messages exchanged via direct messages. In at least one example, the direct message management component 119 can manage such communication and / or sharing of data. In some examples, data associated with a direct message(s) may be presented via a user interface.
[0045] In at least one example, the operating system 120 can manage the processors 108, computer-readable media 110, hardware, software, etc. of the server(s)102.
[0046] In at least one example, data storage 122 can be configured to store accessible, manageable, and updatable data. In some examples, data storage 122 can be integrated with server(s)102, such as... Figure 1 As shown. In other examples, data storage 122 may be located remotely from server(s)102 and may be accessible to server(s)102 and / or user devices(such as user device(s)104). Data storage 122 may include one or more databases, which may include user data 124, permission data 126, channel data 128, and direct messaging (DM) data 130. Additional or alternative data may be stored in this data storage and / or one or more other data storages.
[0047] In at least one example, user data 124 may store data associated with a user of the communication platform. In at least one example, user data 124 may store data in a user profile (also referred to as a “user account”), which may store data associated with the user, including but not limited to one or more user identifiers associated with multiple different organizations, groups or entities associated with the user, one or more communication channel identifiers associated with communication channels that the user has authorized access to, one or more group identifiers for groups (or organizations, teams, entities, etc.) associated with the user, instructions on whether the user is the owner or manager of any communication channel, instructions on whether the user has any communication channel restrictions, multiple messages, multiple emoticons, multiple conversations, multiple conversation topics, avatar, email address, real name (e.g., John Doe), username (e.g., j doe), password, time zone, status, token, etc.
[0048] In at least one example, permission data 126 may store data associated with permissions for individual users of the communication platform. In some examples, permissions may be set automatically or by the communication platform's administrator, employer, enterprise, organization, or other entity using the communication platform, team leader, group leader, or other entity using the communication platform to communicate with team members, group members, etc., or individual users. In some examples, permissions associated with an individual user may be mapped to, or otherwise associated with, a profile and / or account associated with user data 124. In some examples, permissions may indicate which users can communicate directly with other users, which channels are allowed to be accessed, restrictions on individual channels, which workspaces are allowed to be accessed, restrictions on individual workspaces, etc. In at least one example, permissions may support the communication platform by maintaining security for restricting access to defined user groups. In some examples, such users may be defined by public access credentials, group identifiers, etc., as described above.
[0049] In some examples, permission data 126 may store data associated with permissions for groups associated with the communication platform. In some examples, permissions may be set automatically or by the communication platform's administrator, employer, enterprise, organization, or other entity using the communication platform, team leader, group leader, or other entity communicating with team members, group members, etc., or individual users. In some examples, permissions associated with a group may be mapped to data associated with that group, or otherwise associated with that data. In some examples, permissions may indicate restrictions on individual groups, restrictions on communication channels(s) associated with individual groups, restrictions on users(s) associated with individual groups, etc. In at least one example, permissions can support the communication platform by maintaining security for restricting access to defined user groups. In some examples, such groups may be defined using public access credentials, group identifiers, etc., as described above.
[0050] In some examples, permission data 126 may store data associated with permissions for individual communication channels. In some examples, permissions may be set automatically or by the communication platform administrator, employer, enterprise, organization, or other entity using the communication platform, team leader, group leader, or other entity communicating with team members, group members, etc., or individual users. In some examples, permissions associated with a communication channel may be mapped to data associated with that communication channel in channel data 128, or otherwise associated with that data. In some examples, permissions may indicate restrictions on individual communication channels, restrictions on (multiple) users associated with individual communication channels, etc.
[0051] In some examples, permission data 126 may indicate which third-party platforms can be integrated into communication platforms used for specific groups (e.g., organizations, workspaces), communication channels, direct messaging, and / or the like. In some examples, permission data 126 may be set by an administrator or other user with a specific role associated with the ability to set permissions.
[0052] In at least one example, channel data 128 may store data associated with a separate communication channel. In at least one example, channel management component 118 may establish communication channels between various user computing devices, allowing user computing devices to communicate with each other and share data. In at least one example, a communication channel identifier may be assigned to a communication channel, indicating the physical address in channel data 128 where data associated with that communication channel is stored.
[0053] In at least one example, DM data 130 may store data associated with individual direct messages. In at least one example, direct message management component 119 may establish direct messages between various user computing devices, allowing user computing devices to communicate and share data with each other via direct messages. In at least one example, a direct message identifier may be assigned to a direct message, indicating the physical address in DM data 130 where data associated with the direct message is stored.
[0054] In some examples, data storage 122 can be partitioned into discrete data items that can be accessed and managed individually (e.g., data shards). Data sharding can simplify many technical tasks such as data preservation, decomposition (e.g., detecting that message content includes links, crawling metadata of links, and determining a uniform summary of metadata), and integration setup. In some examples, data shards can be associated with groups (e.g., organizations, workspaces), communication channels, direct messaging, users, etc.
[0055] In some examples, a single group may be associated with a database shard within data store 122 that stores data associated with a specific group identifier. For example, a database shard may store electronic communication data associated with members of a specific group, enabling those members 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 control the location and manner of storing the associated data. In some examples, a database shard may store data associated with two or more groups (e.g., as in a shared channel).
[0056] In some examples, a communication channel may be associated with a database shard within data storage 122 that stores data associated with a specific channel identifier. For instance, the database shard may store electronic communication data associated with the communication channel, enabling members of that specific 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 the location and manner of the associated data storage.
[0057] In some examples, a direct message may be associated with a database shard within data storage 122 that stores data associated with a specific direct message identifier. For instance, the database shard may store electronic communication data associated with the direct message, enabling users associated with a specific direct message to communicate and exchange data with other users associated with the same direct message 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 the location and manner of the associated data storage.
[0058] In some examples, an individual user can be associated with a database shard within data store 122 that stores data associated with a specific user account. For instance, a database shard could store electronic communication data associated with an individual user, enabling the user to communicate and exchange data with other users on the communication platform in real-time or near real-time. In some examples, the user themselves can be the owner of the database shard and control the location and manner of the associated data storage.
[0059] The multiple communication interfaces 112 may include one or more interfaces and hardware components for enabling communication, such as via the multiple networks 106 or directly with various other devices (e.g., user computing device 104). In some examples, the multiple communication interfaces 112 may facilitate communication via WebSocket, application programming interfaces (APIs) (e.g., using API calls), Hypertext Transfer Protocol (HTTP), etc.
[0060] The (multiple) servers 102 may also be equipped with various input / output devices 114 (e.g., I / O devices). Such I / O devices 114 may include displays, various user interface controllers (e.g., buttons, joysticks, keyboards, mice, touchscreens, etc.), audio speakers, connection ports, etc.
[0061] In at least one example, the user computing device 104 may include one or more processors 132, computer-readable media 134, one or more communication interfaces 136, and input / output devices 138.
[0062] In at least one example, each of the processors 132 may be a single processing unit or multiple processing units, and may include a single or multiple computing units or multiple processing cores. The processors 132 may include any of the types of processors described above with reference to the processors 108, and may be the same as or different from the processors 108.
[0063] Computer-readable medium 134 may include any of the types of computer-readable medium 134 described above with reference to computer-readable medium 110, and may be the same as or different from computer-readable medium 110. Functional components stored in the computer-readable medium may optionally include at least one application program 140 and an operating system 142.
[0064] In at least one example, application 140 may be a mobile application, a web application, or a desktop application, which may be provided by a communication platform or may be other dedicated applications. In at least one example, application 140 may be a native application associated with a communication platform. In some examples, a separate user computing device associated with environment 100 may have an instance or versioned instance of application 140, which may be downloaded from an application store, accessible via the Internet, or otherwise executable by processor(s) 132 to perform the operations described herein. That is, application 140 may be an access point enabling user computing device 104 to interact with servers(s) 102 to access and / or use communication services available via the communication platform. In at least one example, application 140 may, for example, facilitate the exchange of data between various other user computing devices via servers(s) 102. In at least one example, application 140 may present a user interface as described herein. In at least one example, a user may interact with the user interface via touch input, keyboard input, mouse input, voice input, or any other type of input. As described herein, an additional or alternative access point, such as a web browser, can be used to enable the user computing device 104 to interact with server(s) 102. That is, in the example where application 140 is described as performing the following operations, in an additional or alternative example, such operations can be performed by another access point, such as a web browser.
[0065] In some examples, application 140 may annotate the user interface with the third-party platform integration(s) as described below, and may facilitate the retrieval of third-party objects (e.g., from the third-party server(s) 123) for presentation via the user interface of the communication platform. Additional details are provided below. In additional or alternative examples, as described above, the third-party platform may be integrated into the communication platform via an extension. In such examples, a web browser may annotate the user interface with the third-party platform integration(s) as described below, and may facilitate the retrieval of third-party objects (e.g., from the third-party server(s) 123) for presentation via the user interface of the communication platform (e.g., in place of application 140 or in addition to application 140).
[0066] Non-restrictive example of user interface 144 Figure 1 As shown in the image. Figure 1As illustrated, user interface 144 can present data associated with one or more communication channels. In some examples, user interface 144 may include a first block 146 (e.g., it may be a portion, pane, or other segment of user interface 144) that includes indicators (e.g., user interface elements or objects) representing data associated with communication channels, direct messages, etc., associated with a user (e.g., a user's account). See below for further details. Figure 2A Describe additional details associated with the first block 146 and(multiple) indicators.
[0067] In at least one example, the user interface 144 may include a second block 148 (e.g., it may be a portion, pane, or other segment of the user interface 144) that may be associated with a data feed (or “feed”) indicating messages published to one or more communication channels and / or other virtual spaces used to facilitate communication (e.g., virtual spaces associated with (multiple) direct messaging communications, virtual spaces associated with (multiple) events and / or (multiple) actions, etc.) and / or actions taken for said one or more communication channels and / or other virtual spaces. In at least one example, the data associated with the second block 148 may be associated with the same or different workspaces. That is, in some examples, the second block 148 may present data associated with the same or different workspaces via an integrated feed. In some examples, the data may be organized and / or sortable by date, time (e.g., when associated data is published or otherwise associated actions are performed), type of action and / or data, workspace, communication channel, user, topic, relevance metric, and / or the like. In some examples, such data may be associated with instructions on which user (e.g., a member of a communication channel) posted a message and / or performed an action. In the example where block 148 presents data associated with multiple workspaces, at least some of the data may be associated with instructions on which workspace the data is associated with.
[0068] In at least one example, the first block 146 and the second block 148 can be combined to be associated with a "group-based communication user interface" from which a user can interact with the communication platform. See below. Figure 2A Additional details are described in relation to user interface 144, first block 146, and second block 148.
[0069] In at least one example, references to third-party objects within user interface 144 can be annotated with corresponding actuation mechanisms. Examples of such actuation mechanisms 150 are shown in... Figure 1As shown in the diagram. In some examples, such an actuation mechanism 150 may appear whenever permission data 126 indicates that a user, communication channel, direct message, group, and / or similar entity is permitted to access an object from the corresponding third-party platform (e.g., the third-party platform is integrated and the relevant entity has permission to access objects from that third-party platform). If permission data 126 indicates that a user, communication channel, direct message, group, and / or similar entity is not permitted to access the object and / or the third-party platform, then the actuation mechanism 150 may not be presented or may be disabled (e.g., grayed out, etc.). In at least one example, based at least in part on the detection of input associated with the actuation mechanism 150, the associated third-party object may be presented in a third block 152 of the user interface 144 (e.g., it may be a portion, pane, or other segment of the user interface 144). In at least one example, actuation of the actuation mechanism 150 may cause the third-party object to be retrieved (e.g., from (multiple) third-party servers 123) and opened within the user interface 144. In at least one example, the user may view and / or interact with (e.g., edit) the third-party object via the third block 152. In at least one example, the first block 146 and the second block 148 may be rendered via a first frame (e.g., an inline frame), and the third block 152 may be rendered via a second frame (e.g., an inline frame). That is, blocks(s) of the user interface 144 associated with the communication platform may be rendered via the first frame, and blocks of the user interface 144 associated with a third-party platform may be rendered via the second frame. Additional details are provided below.
[0070] In at least one example, the operating system 142 may manage the user computing device 104's processor(s) 132, computer-readable medium 134, hardware, software, etc.
[0071] The (multiple) communication interfaces 136 may include one or more interfaces and hardware components for enabling communication, such as via (multiple) networks 106 or directly with various other devices (e.g., user computing device 104). In some examples, communication interface 136 may facilitate communication via WebSocket, API (e.g., using API calls), HTTP, etc.
[0072] User computing device 104 may also 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 controllers (e.g., buttons, joysticks, keyboards, mice, touchscreens, etc.), audio speakers, connection ports, etc.
[0073] Although the techniques described herein are described as being performed by the integration management component 116, the channel management component 118, the direct messaging management component 119, and the application 140, the techniques described herein can be performed by any other component or combination of components that may be associated with server(s) 102, user computing device(s) 104, or combinations thereof.
[0074] Figure 2A The illustration shows an example user interface 200 presented via a communication platform as described herein. User interface 200 may correspond to the above reference. Figure 1 The user interface 144 is described. As described above, in some examples, the user interface 200 presented via a communication platform may include a first block 202 (which may correspond to the above reference). Figure 1 The first block 146 described herein includes multiple indicators (e.g., multiple user interface elements or multiple objects) representing multiple virtual spaces associated with multiple workspaces associated with a user (e.g., a user's account). In at least one example, the first block 202 may include one or more sub-blocks that may represent different virtual spaces. For example, the first sub-block 204 may include indicators representing virtual spaces that may aggregate data associated with multiple communication channels and / or workspaces. In at least one example, each virtual space may be associated with an indicator in the first sub-block 204. In some examples, the indicator may be associated with an actuation mechanism that, when actuated, causes the application 140 to access the second block 206 of the user interface 200 (which may correspond to the above reference). Figure 1 The second block (148) described presents data associated with the corresponding virtual space.
[0075] In at least one example, a virtual space can be associated with all unread data, which is associated with each of the workspaces associated with the user. That is, in some examples, if a user requests access to a virtual space associated with “unread,” all data that has not yet been read (e.g., viewed) by the user can be presented in second block 206 (e.g., in a feed). In another example, a “thread” can be associated with messages, files, etc., posted in a thread. A message posted in a communication channel and / or virtual space associated with “@ and emoji replies” (e.g., “M&R”) can be associated with a message or thread in which a user (e.g., user F) has been mentioned (e.g., via tags) or another user has replied to a message or thread posted by that user (e.g., via emojis, emoji replies, etc.). In some examples, if a user requests access to a virtual space associated with “fragments of content,” fragments of content associated with the user, who can be associated with different communication channels and / or virtual spaces, can be presented via the same feed. In some examples, such data can be organized and / or sorted by date, time (e.g., when related data is published or otherwise related actions are performed), type of action and / or data, workspace, communication channel, user, topic, relevance metric, and / or the like. In some examples, such data can be associated with indications of which user (e.g., a member of a communication channel) published a message, performed an action, and / or similar event. Additional details are described below.
[0076] In at least one example, a first block 202 of the user interface 200 may include a second sub-block 208, which includes an indicator representing a communication channel. In some examples, the communication channel may include a public channel, a private channel, a shared channel (e.g., between workspaces or organizations), a single workspace channel, a cross-workspace channel, a combination of the foregoing, etc. In some examples, the represented communication channel may be associated with a single workspace. In some examples, the represented communication channel may be associated with different workspaces (e.g., across workspaces). In some examples, the represented communication channel may be associated with a combination of a communication channel associated with a single workspace and a communication channel associated with different workspaces.
[0077] In some examples, the second subblock 208 may depict all communication channels or a subset of all communication channels that the user has permission to access (e.g., determined by permission data 126). In such examples, communication channels may be arranged alphabetically, based on recent interactions, based on the frequency of interactions, based on communication channel type (e.g., public, private, shared, across workspaces, etc.), based on workspace, or in user-specified blocks, etc. In some examples, the second subblock 208 may depict all communication channels to which the user is a member, or a subset of all communication channels, and the user may interact with the user interface 200 to browse or view other communication channels to which the user is not a member but which are not currently displayed in the second subblock 208. In some examples, different types of communication channels (e.g., public, private, shared, etc.) may be in different blocks of the second subblock 208, or may have their own subblocks or subblocks within the user interface 200. In some examples, communication channels associated with different workspaces may be in different parts of the second subblock 208, or may have their own blocks or subblocks within the user interface 200.
[0078] In some examples, indicators may be associated with user interface elements that visually distinguish the type of communication channel. For example, channel B may be associated with a double square user interface element instead of a circular one. As a non-limiting example, and for the purposes of this discussion, a double square user interface element may indicate that the associated communication channel (e.g., channel B) is an externally shared communication channel. In some examples, such a user interface element may be the same for all externally shared communication channels. In other examples, such a user interface element may be specific to other groups associated with externally shared communication channels. In some examples, additional or alternative graphical elements may be used to distinguish between public communication channels, private communication channels, shared communication channels, communication channels associated with different workspaces, etc. In other examples, communication channels where the user is not a current member may not be displayed in the second sub-block 208 of user interface 200. In such examples, the user may navigate to different interfaces (not shown) to browse additional channels that are accessible to the user but for which the user is not currently a member.
[0079] In addition to the second sub-block 208, the first block 202 may include a third sub-block 210, which may include an indicator representing a direct message. That is, the third sub-block 210 may include an indicator representing a virtual space associated with a private message between one or more users as described above.
[0080] As described above, in at least one example, the user interface 200 may include a second block 206, which may be associated with feeds instructing messages posted to a communication channel and / or other virtual spaces used to facilitate communication (e.g., virtual spaces associated with (multiple) direct messaging communications, virtual spaces associated with (multiple) events and / or (multiple) actions, etc.) and / or actions taken for the communication channel and / or other virtual spaces. As described above, in at least one example, the data associated with the second block 206 may be associated with the same or different workspaces. That is, in some examples, the second block 206 may present data associated with the same or different workspaces via an integrated feed. In some examples, the data may be organized and / or sortable by date, time (e.g., when associated data is posted or otherwise associated actions are performed), type of action and / or data, workspace, communication channel, user, topic, relevance metric, and / or the like. In some examples, such data may be associated with instructions for which user to post a message and / or perform an action.
[0081] For the purposes of this discussion, "message" can refer to any electronically generated digital object provided by a user using user computing device 104, configured to be displayed within a communication channel and / or other virtual space used to facilitate communication (e.g., a virtual space associated with (multiple) direct message communications, etc.), as described herein. A message can include any text, image, video, audio, or a combination thereof provided by the user (using user computing device). For example, a user can provide a message that includes text within the message as well as images and video as message content. In such an example, text, images, and video would constitute the message. Each message sent or published to a communication channel of the communication platform can include metadata including a sending user identifier, a message identifier, message content, a group identifier, a communication channel identifier, etc. In at least one example, each of the foregoing identifiers can include U.S. Standard Code for Information Interchange (ASCII) text, a pointer, a memory address, etc.
[0082] In some examples, users can comment on messages within a "thread." A thread can be a message associated with another message that is not published to the communication channel but remains within the object associated with the original message. Messages and / or threads can be associated with (multiple) files, (multiple) emojis, (multiple) applications, etc.
[0083] Communication channels or other virtual spaces can be associated with data and / or content other than messages, or with data and / or content associated with messages. For example, non-limiting examples of additional data that can be presented via the second block 206 of user interface 144 include members added to and / or removed from the communication channel, multiple files uploaded to and / or removed from the communication channel (e.g., multiple file attachments), multiple applications added to and / or removed from the communication channel, multiple posts added to and / or removed from the communication channel (data that can be collaboratively edited in near real-time by one or more members of the communication channel), descriptions added to, modified, and / or removed from the communication channel, modifications to the attributes of the communication channel, etc. In some examples, objects that may include files, applications, and / or the like can be associated with a communication channel or other virtual space (e.g., direct messaging). In some examples, such objects can be associated with one or more third-party platforms. That is, in some examples, individual third-party objects can be referenced in the second block 206.
[0084] In some examples, the second block 206 may include a feed associated with a single communication channel. In such examples, data associated with the communication channel may be presented via the feed. In at least one example, the data associated with the communication channel may be viewable to at least some users of a group of users associated with the same group identifier. In some examples, the content of the communication channel (e.g., message communications and / or objects) may be displayed to each member of the communication channel. For example, a common set of group-based message communications may be displayed to each member of the communication channel, such that the content of the communication channel (e.g., message communications and / or objects) does not vary based on the members of the communication channel. In some examples, the message communications associated with the communication channel may appear differently for different users (e.g., based on personal configuration, group membership, permissions, policies, etc.).
[0085] In at least one example, the format of a separate communication channel or virtual space may differ for different users. In some examples, the format of a separate communication channel or virtual space may vary based on which workspace or organization the user is currently interacting with or which workspace or organization they have recently interacted with. In some examples, the format of a separate communication channel or virtual space may appear differently for different users (e.g., based on personal configuration, group membership, permissions, etc.).
[0086] In at least one example, the user interface 200 may include a search mechanism 212 in which a user can enter search terms, and servers(s)102 can perform searches associated with the communication platform. In some examples, searches may be performed across each group associated with the user, or searches may be restricted to specific groups based on user specifications.
[0087] exist Figure 2A In this context, a user can interact with a user interface element corresponding to channel D in the second sub-block 208, and thereby, a feed associated with the communication channel can be presented via the second block 206 of the user interface. In some examples, the second block 206 may be associated with a title that includes a user interface element 214 representing information associated with channel D. Furthermore, the second block 206 may include user interface elements 216-220, each representing a message published to the communication channel. As illustrated, user interface elements 216-220 may include an indication of the user who published the message, the time of publication, the content associated with the message, an emoticon response associated with the message, and / or the like. In at least one example, the second block 206 may include an input mechanism 222, which may be associated with a message composition user interface to enable the user to compose a message to be published to the communication channel.
[0088] In at least one example, one or more of the user interface elements 214 may indicate one or more third-party platforms integrated into the communication platform and / or communication channel. As illustrated, three different third-party platforms are integrated into the communication platform and / or communication channel, but more or fewer third-party platforms may be integrated into the communication platform and / or communication channel. In some examples, the illustrated third-party platforms(s) may be the third-party platforms(s) that permission data 126 allows access to, by, the communication channel, direct messaging, and / or the like. As illustrated, third-party applications associated with each third-party platform are integrated into the communication platform and / or communication channel (e.g., “Application A”, “Application B”, and “Application C”). In some examples, each of the third-party platforms may be associated with a user interface element, which may be a text element, a graphic element, a logo, etc. In some examples, such a user interface element may be an actuation mechanism that, when actuated, causes references to(s) of(s) of objects(s) associated with the corresponding third-party application to be annotated by the actuation mechanism to enable retrieval of(s) of the objects(s). In some examples, such indicators (multiple) may be associated with additional or alternative components of the user interface (e.g., browser bar, sidebar, etc.).
[0089] In at least one example, a third-party platform can be integrated into a communication platform using the techniques described above, enabling any user and / or group to access functionality associated with the third-party platform (based on multiple permissions). In some examples, different third-party platforms can be integrated into different communication channels and / or direct messages. That is, in some examples, a third-party platform can be integrated with the communication platform and mapped to a separate communication channel or direct message, or otherwise associated with a separate communication channel or direct message. In some examples, access to functionality associated with such a third-party platform can be controlled by multiple permissions (e.g., permission data 126) associated with the communication channel and / or direct message. In some examples, different third-party platforms can be integrated into different groups. That is, in some examples, a third-party platform can be integrated with and mapped to a specific group (e.g., organization, workspace, etc.), or otherwise associated with a specific group. In some examples, access to functionality associated with such a third-party platform can be controlled by multiple permissions associated with a specific group.
[0090] In some examples, user interface 200 may be annotated with an actuation mechanism that indicates that individual objects in user interface 200 can be accessed via one or more integrated third-party platforms. In some examples, the individual actuation mechanism may correspond to a user interface element representing a third-party platform (e.g., the third-party platform of user interface element 214). In at least one example, the actuation mechanism may include a link or other mechanism that, when actuated, causes the corresponding object to be rendered via user interface 200. That is, such an actuation mechanism can cause an object to be retrieved from the third-party platform, opened within user interface 200, and interactively accessible via user interface 200.
[0091] In some examples, the user interface 200 may present additional or alternative data associated with the communication platform. For example, in some examples, the user interface 200 may present one or more panels from which third-party objects, such as... Figure 2BAs illustrated in the diagram. In at least one example, a board as described herein can be associated with a separate group and / or communication channel, enabling users of the communication platform to create, interact with, and / or view data associated with such a board. That is, a board, which can be an "electronic board," can be a virtual space, canvas, page, etc., for collaborative communication and / or organization within the communication platform. In at least one example, the board can support editable text and / or objects that can be sorted, added, deleted, modified, and / or similarly manipulated. In some examples, the board can be associated with permissions that limit which users of the communication platform can view and / or edit the board. In some examples, the board can be associated with a communication channel, and at least some members of the communication channel can view and / or edit the board. In some examples, the board can be shareable, such that the data associated with the board is accessible and / or interactive to members of multiple communication channels, workspaces, organizations, and / or the like.
[0092] In at least one example, a board may include (multiple) blocks and / or (multiple) objects. In some examples, each block may include one or more objects. In at least one example, objects may be associated with object types, which may include, but are not limited to, text (e.g., which may be editable), tasks, events, images, graphics, links to local objects, links to remote objects, files, and / or the like. In some examples, blocks and / or objects may be reordered and / or otherwise rearranged, new blocks and / or objects may be added or removed, and / or data associated with such blocks and / or objects may be edited and / or modified. That is, boards can be created and / or modified for a variety of purposes. That is, users can customize and / or personalize boards to serve a variety of needs as described herein. As an example, blocks and / or objects may be arranged to create a project board, which may be used to generate and / or assign tasks, track progress, and / or otherwise manage projects. Furthermore, in some examples, boards may present company metrics and also enable access to company goals, allowing such information to be stored and / or accessed via a single location. In some examples, the board can be used to track work progress and / or career development, and managers or supervisors can use the board to manage and / or supervise employees, agents, and / or other staff. In at least one example, the board can be used to track events, incoming customer service requests, and / or the like. Additional details relating to the board are provided in U.S. Patent Application No. 16 / 993,859, filed August 14, 2020, the entire contents of which are incorporated herein by reference.
[0093] Figure 2B The diagram illustrates a non-limiting example of a user interface 200 that presents one or more panels. Figure 2BAs illustrated, the second block 206 includes multiple panels 226. In at least one example, interaction with one of the panels 226 can result in the corresponding panel being presented via user interface 200 (e.g., in the second block 206). In at least one example, one or more user interface elements 228 can indicate one or more third-party platforms integrated into the communication platform. As illustrated, three different third-party platforms are integrated into the communication platform, but more or fewer third-party platforms can be integrated into the communication platform and / or communication channel. Similar to the description above, if a user does not have permission to access a particular third-party application (e.g., according to permission data 126), such a third-party application may not be presented (e.g., in the user interface elements 228). That is, in at least one example, the user interface elements 228 can represent third-party platforms that have been (i) integrated into the communication platform and (ii) that the user can access according to permission data 126. In at least one example, each of the third-party platforms can be associated with a user interface element, which can be a text element, a graphic element, a logo, etc. In some examples, as described above, such a user interface element can be an actuation mechanism that, when actuated, causes references to (multiple) objects associated with a corresponding third-party application to be annotated, enabling the retrieval of (multiple) objects. An example of such an actuation mechanism 230 is... Figure 2B The diagram is shown in the image. In some examples, if the board, the communication channel associated with the board, and / or the group associated with the board do not have permission to access a specific third-party application, then the objects(s) associated with that third-party application may not be commented out, or the actuation mechanism associated with it may be disabled.
[0094] Figure 3 The diagram shows Figure 2A An example of user interface 200 described herein is provided, in which a third-party object is presented in user interface 200. In at least one example, based at least in part on the detection of input associated with actuation mechanism 224, the corresponding third-party object (e.g., object A) can be retrieved from a third-party platform and can be presented in another block of user interface 200 (e.g., third block 300). Third block 300 may correspond to the above reference. Figure 1The third block 152 is described. In at least one example, the third block 300 of the user interface 200 can be rendered simultaneously with the first block 202 and the second block 206. Third-party objects can be rendered by the third block 300 to allow the user to view, edit, and / or otherwise interact with the third-party objects while interacting with the communication platform. That is, the third-party object (e.g., object A) can be rendered within a context. In at least one example, the user can edit a third-party object in the third block 300 while sending a message via the second block 206.
[0095] In some examples, as described above, the first block 202 and the second block 206 may be presented via a first frame (e.g., an inline frame), and the third block 300 may be presented via a second frame (e.g., an inline frame). In at least one example, both the first and second frames may be presented simultaneously via the user interface 200. In some examples, the second frame may pop out of an instance of the communication platform and may quickly jump back into the instance of the communication platform. That is, in some examples, the second block may be presented via a new user interface, frame, and / or window outside the user interface, at least in part based on receiving a request to retrieve a third-party object (e.g., via input associated with the second block 206 and / or the associated actuation mechanism 301). In some examples, the user may request that the new user interface, frame, and / or window be minimized, closed, or otherwise collapsed back into the user interface 200. In some examples, the first and second frames may be interactive independently, allowing the user to interact with data presented via each frame without affecting the content in the other frame. In some examples, actuation of the actuation mechanism 224 may cause the user interface 200 to be updated to include the frames. In some examples, the first frame can retrieve and display data from the communication platform, and the second frame can retrieve and display data from a third-party platform. As mentioned above, in some examples, the second frame can point to the communication platform, which can then retrieve and display data associated with the third-party platform.
[0096] In some examples, the third block 300 may include one or more user interface elements 302 that can be used to scroll through additional third-party objects that have been accessed (e.g., opened) via a communication platform. In some examples, by interacting with the user interface element(s) 302, a user can access multiple additional or alternative third-party objects that may be presented via the third block 300. In some examples, multiple individual third-party objects may be associated with the same third-party platform. In some examples, multiple individual third-party objects may be associated with different third-party platforms. In some examples, permission data 126 can control which previously accessed third-party objects can be accessed by interacting with the user interface element(s) 302.
[0097] In some examples, third-party objects and / or third blocks 300 can be presented via third block 300 as long as the user is interacting with a specific group, communication channel, direct message, and / or the like. That is, in some examples, third-party objects and / or third blocks 300 can be mapped to a specific group (e.g., an organization, workspace, etc.) or otherwise associated with a specific group, such that they can be presented via user interface 200 as long as the user is interacting with that group. However, when the user navigates away from the specific group, the third-party objects and / or third blocks 300 can no longer be presented via user interface 200. In some examples, when the user returns to the specific group, the third-party objects and / or third blocks 300 can be presented again via user interface 200. As another example, in some examples, third-party objects and / or third blocks 300 can be mapped to a specific communication channel or otherwise associated with a specific communication channel, such that they can be presented via user interface 200 as long as the user is interacting with the communication channel. However, when a user navigates away from a specific communication channel, the third-party object and / or third block 300 can no longer be presented via the user interface 200. In some examples, when the user returns to the specific communication channel, the third-party object and / or third block 300 can be presented again via the user interface 200. Similar mapping and / or "stickiness" can be applied to direct messages and / or the like.
[0098] In some examples, the third block 300 may be associated with a resizing mechanism to enable resizing of the third block 300 (and therefore at least the second block 206). In at least one example, based at least in part on receiving a request to resize the third block 300 (e.g., expand or shrink its width, height, etc.) (e.g., input associated with a resizing mechanism), application 140 may update user interface 200 such that the second block 206 and the third block 300 reflect the new size. In some examples, application 140 may rearrange the user interface elements associated with the second block 206 based at least in part on the resizing of the second block 206. Figure 4 The illustration shows an example where the third block, 300, has been resized. Figure 4 As illustrated, one or more of the user interface elements presented via the second block can be reconfigured to fit the new size of the second block 206.
[0099] In at least one example, more than one third-party object can be retrieved and rendered via multiple blocks of user interface 200. In some examples, as described above, each retrieved third-party object (e.g., for a communication channel) can be accessible by interacting with user interface element 302. In such examples, different third-party objects can be rendered via third block 300. In some examples, each third-party object can be associated with its own block of user interface 200. For example, as... Figure 5 As illustrated, a first third-party object can be presented via a third block 300, and a second third-party object can be presented via a fourth block 500. In at least one example, the third block 300 and the fourth block 500 can be presented within the user interface 200 (e.g., in the context of a communication platform). In some examples, the third block 300 and the fourth block 500 can each be presented via their own frames. In at least one example, the third block 300 and the fourth block 500 can be interactive independently. In some examples, the third-party objects can be associated with the same third-party platform. In some examples, the third-party objects can be associated with different third-party platforms. In some examples, another instance of the communication platform can be presented via the user interface 200 (e.g., in another block).
[0100] In some examples, a third-party platform may include multiple applications. For instance, an internet-related service company may include cloud-based word processing applications, cloud-based spreadsheet applications, cloud storage applications, and / or similar applications. In such examples, each application may be presented via different blocks and / or frames. For example, in Figure 5In this context, a first third-party object can be associated with a first application linked to a third-party platform, and a second third-party object can be associated with a second application linked to the same third-party platform. In some examples, as shown above... Figure 5 The third-party objects presented via blocks can be associated with different applications on the same third-party platform, the same application on the same third-party platform, different applications on different third-party platforms, and / or similar objects.
[0101] In some examples, one or more resizing mechanisms enable the resizing of (multiple) blocks. That is, as described above, resizing mechanism 304 allows the user to resize (e.g., expand or shrink) the width of the third block 300 and / or the fourth block 500 (and therefore, the first block 202 and the second block 206). In some examples, resizing mechanism 502 allows the user to resize (e.g., expand or shrink) the height of the third block 300 and / or the fourth block 500. In some examples, data associated with (multiple) other blocks can be reconfigured, at least in part, based on the resizing of the height and / or width of one of the third block 300 and / or the fourth block 500.
[0102] Figure 6 An example of a user interface 600 presented via a third-party platform is illustrated. In at least one example, the user interface 600 may be presented via an application, web browser, or other access point associated with the third-party platform. In at least one example, the user interface 600 may present an object 602 associated with the third-party platform that the user can interact with (e.g., view, edit, etc.). In some examples, the user interface 600 may include an actuation mechanism 604 that causes a group-based communication user interface associated with a communication platform to be presented via the user interface having object 602. In some examples, the actuation mechanism 604 may be a control, as shown. In some examples, the actuation mechanism 604 may be associated with pop-ups, overlays, etc.
[0103] Figure 7 The illustration shows an example of a user interface 700 presented via a third-party platform, where functionality associated with the communication platform is integrated into the third-party platform. In some examples, this is at least partially based on the detection of the above reference. Figure 6The input associated with the described actuation mechanism 604, the new user interface 700, can be presented by a communication platform (e.g., the new user interface 700 can be presented via a web application of the communication platform rather than a third-party platform). In such an example, objects associated with a third-party platform can be presented in a first block 702 of the user interface 700, and a group-based communication user interface associated with the communication platform can be presented via a second block 704 of the user interface 700. In at least one example, as described above, the first block 702 can be presented via a first frame (e.g., an inline frame), and the second block 704 can be presented via a second frame (e.g., an inline frame). In some examples, the user can interact with the first block 702 and the second block 704 independently but within the user interface 700. That is, the user can access functionality associated with the third-party platform from within the communication platform. In some examples, the user interface 700 may include a resizing mechanism 706, as described above, that can be used to resize the first block 702 and / or the second block 704.
[0104] In some examples, it is at least partially based on detecting a reference to the above. Figure 6 The input associated with the described actuation mechanism 604, the user interface 700, can be rendered by a third-party platform. That is, in such an example, the user interface 700 can be at least partially based on the above reference. Figure 6 The update to user interface 600 is described. In such an example, objects associated with a third-party platform may be presented in a first block 702 of user interface 700, and a group-based communication user interface associated with a communication platform may be presented via a second block 704 of user interface 700. In at least one example, as described above, the first block 702 may be presented via a first frame (e.g., an inline frame), and the second block 704 may be presented via a second frame (e.g., an inline frame). In some examples, the user can interact with the first block 702 and the second block 704 independently but within user interface 700. That is, the user can access the functionality associated with the communication platform from within a third-party application.
[0105] In some examples, users can access the above reference from within the communication platform. Figure 6 The user interface 600 is described. For example, in some examples, a third-party object presented via the third block 300 may include an actuation mechanism that allows a user to leave the communication platform and open a third-party application associated with the third-party platform. When the third-party application is opened, the user interface 600 may be presented to allow the user to access the third-party object and the functions associated with the communication platform from within the third-party application and the user interface 600.
[0106] Figures 8 to 10 This is a flowchart illustrating an example process involving the techniques described herein. For ease of understanding, please refer to the references above. Figure 1 The components described in the environment 100 shown are used to describe Figures 8 to 10 The process is illustrated in the diagram. However... Figures 8 to 10 The process illustrated in the diagram is not limited to execution using the components described above in reference environment 100. Furthermore, the components described above in reference environment 100 are not limited to execution... Figures 8 to 10 The process is illustrated in the diagram.
[0107] Figures 8 to 10 The process diagram in the diagram is a collection of boxes in a logic flowchart, representing a sequence of operations that can be implemented using hardware, software, or a combination thereof. In the context of software, a box represents a computer-executable instruction stored on one or more computer-readable storage media that performs the operation when executed by the processor(s). Typically, computer-executable instructions include routines, programs, objects, components, data structures, etc., that perform a specific function or implement a specific abstract data type. The order in which operations are described is not intended to be construed as limiting, and any number of described boxes can be combined in any order and / or in parallel to implement the process. In some embodiments, one or more boxes of the process may be omitted entirely. Furthermore, Figures 8 to 10 The processes in the process can be combined with each other or with other processes, either in whole or in part.
[0108] As noted above, for convenience and ease of understanding, please refer to... Figure 1 The components described above in the environment 100 shown are used to describe Figures 8 to 10 The process is illustrated in the diagram. However... Figure 1 The illustration shows a single user computing device 104. In practice, environment 100 may have multiple (e.g., dozens, hundreds, thousands, millions, etc.) user computing devices, each configured similarly as user computing device 104.
[0109] Figure 8 The illustration shows an example process 800 for presenting a third-party object via a user interface associated with a communication platform, as described herein.
[0110] In operation 802, integration management component 116 can integrate a third-party platform into the communication platform. As described above, in some examples, integration management component 116 can facilitate the integration of a third-party platform into the communication platform. In some examples, the third-party platform can be integrated into a web browser experience associated with the communication platform. For example, in some examples, as described above, the third-party platform can be integrated into the communication platform via an applet (e.g., an extension). In at least one example, an extension can cause a frame to be loaded into a web browser within which the communication platform is accessible. In some examples, the frame can access content associated with the third-party platform and write the associated content into the frame. In some examples, the third-party platform can be integrated into a native application associated with the communication platform. For example, in some examples, the third-party platform can be integrated into the communication platform by embedding an embeddable browser (e.g., a webview) into the native application associated with the communication platform. In such examples, the native application can use an embeddable browser to display web page content. That is, in such examples, as described herein, the native application can have a browser engine embedded therein that can programmatically load content (e.g., multiple objects) in the user interface. In some examples, such content can be loaded into the frame.
[0111] In operation 804, application 140, executable by user computing device 104, can associate an actuation mechanism with a reference to an object associated with a third-party platform, presented via the user interface of the communication platform. As described above, in at least one example, references to objects associated with the third-party platform can be annotated with an actuation mechanism, at least in part, based on the integration of the third-party platform with the communication platform. In some examples, application 140 can analyze data associated with the user interface of the communication platform to identify references to objects. Application 140 can associate an actuation mechanism with a reference to an object in the user interface. The actuation mechanism can be associated with a link or other mechanism that, when actuated, causes the associated object to be presented via the user interface.
[0112] In some examples, different users, communication channels, direct messages, and groups (e.g., organizations, workspaces, etc.) can be associated with different permissions that indicate which third-party platforms are integrated and accessible to these entities. As described above, such permissions can be associated with permission data 126. In at least one example, if a third-party platform is not accessible to a specific entity (e.g., user, communication channel, direct message, group, etc.), the actuation mechanism may not be associated with the corresponding object, and / or the actuation mechanism associated with the corresponding object may be disabled or otherwise indicate that the object cannot be accessed.
[0113] In operation 806, application 140 can determine whether input associated with the actuation mechanism has been detected. In at least one example, application 140 can detect input associated with the actuation mechanism (e.g., the actuation mechanism has been actuated). If no input is detected, application 140 can determine that no input has been detected and can return to operation 806 to wait for indication of such input.
[0114] In operation 808, an object can be retrieved from a third-party platform. In at least one example, based at least in part on the determination that an actuation mechanism has been activated, application 140 can send a request to (multiple) third-party servers 123 to retrieve the object. In some examples, based at least in part on the determination that an actuation mechanism has been activated, application 140 can cause a frame (e.g., an inline frame) associated with the third-party platform and / or the object to open within the user interface. In at least one example, the frame can send a request to (multiple) third-party servers 123 to retrieve the object. In some examples, the request and / or the object can be routed through integration management component 116 (e.g., from application 140 and / or the frame). In at least one example, the request can be associated with an object identifier.
[0115] In some examples, before retrieving an object from a third-party platform, the retrieval facilitating component (e.g., application 140, integration management component 116, etc.) can determine whether the requesting user, communication channel, direct message, group (e.g., organization, workspace, etc.) has permissions to access the object and / or the third-party platform. In some examples, the component can use access permission data 126 to determine whether the requesting user, communication channel, direct message, group (e.g., organization, workspace, etc.) has permissions to access the object and / or the third-party platform. The object can be retrieved, at least in part, based on the determination that the requesting user, communication channel, direct message, group (e.g., organization, workspace, etc.) has permissions to access the object and / or the third-party platform. However, if the requesting user, communication channel, direct message, group (e.g., organization, workspace, etc.) does not have permissions to access the object and / or the third-party platform, the retrieval facilitating component can present an error or otherwise indicate that access to the object is not permitted.
[0116] In operation 810, application 140 presents objects in a first block of the user interface, while data associated with the communication platform is presented via a second block of the user interface. As described above, based at least in part on object retrieval, application 140 may cause objects to be presented via frames (e.g., inline frames) through the user interface of the communication platform. In some examples, objects may be presented within the "context" of the communication platform, allowing users to interact with the communication platform and objects within the user interface of the communication platform. That is, as described and illustrated above, group-based communication user interfaces may be presented via a first block (e.g., a first frame) associated with the user interface, and objects may be presented via a second block (e.g., a second frame) associated with the user interface. In at least one example, objects may be interactive, allowing users to open, view, and / or edit objects within the user interface of the communication platform (e.g., without leaving the communication platform).
[0117] In at least one example, operations 808 and 810 may be associated with application 140, which causes a frame to be rendered via a user interface based at least in part on the detection of input associated with the actuation mechanism. Based at least in part on causing the frame to be rendered, the frame may request or otherwise point to data associated with a third-party platform, thereby retrieving objects from the third-party platform. The objects can then be rendered via the frame within the user interface, allowing the user to open, view, and / or edit the objects without leaving the communication platform.
[0118] As described above, in some examples, the presentation of (multiple) third-party objects and / or (multiple) third-party objects via blocks of the user interface may be mapped to separate communication channels, direct messages, and / or groups (e.g., organizations, workspaces, etc.), or otherwise associated with separate communication channels, direct messages, and / or groups. For example, if an object presented via the first block (in operation 810) is mapped to or otherwise associated with the first workspace, then the object can continue to be presented via the first block as long as the user is interacting with the same workspace (e.g., navigating between different communication channels and / or direct messages associated with the first workspace). However, application 140 may terminate the presentation of the object via the first block, at least in part, based on the detection that the user has navigated to a second workspace different from the first workspace. In at least one example, if application 140 receives a request to return to the first workspace, the object can be presented again via the first block. In some examples, the location within an object can be marked or otherwise identified such that when the application 140 returns to the first workspace, the object can be presented via the first block at the marked or otherwise identified location (e.g., such that the object opens at the same location within the object the user was interacting with before navigating away from the first workspace).
[0119] The same or similar techniques can be applied to navigation between different communication channels or direct messages within a group. For example, if an object presented via the first block (in operation 810) is mapped to or otherwise associated with the first communication channel or direct message, then the object can continue to be presented via the first block as long as the user is interacting with the same communication channel or direct message. However, application 140 can terminate the presentation of the object via the first block, at least in part based on the detection that the user has navigated to a second communication channel or direct message different from the first communication channel or direct message. In at least one example, if application 140 receives a request to return to the first communication channel or direct message, the object can be presented again via the first block. In some examples, a location within the object can be marked or otherwise identified such that when application 140 returns to the first communication channel or direct message, the object can be presented via the first block at the marked or otherwise identified location (e.g., such that the object opens at the same location within the object the user was interacting with before navigating away from the first communication channel or direct message).
[0120] Although operations 804 to 810 are described above as being performed by application 140, in some examples, operations 804 to 810 may be performed by additional or alternative functional components on user computing device 104. Additionally or alternatively, in some examples, operations 804 to 810 may be performed by integration management component 116. For example, integration management component 116 may cause an actuation mechanism to be associated with a reference to an object presented via a user interface of a communication platform, and may wait for an indication of whether input associated with the actuation mechanism has been detected. Based at least in part on receiving an indication that such input has been detected (e.g., from user computing device 104), integration management component 116 may retrieve the object, send the object to user computing device 104, and cause the object to be presented in a first block. That is, integration management component 116 may provide the object to user computing device 104, and application 140 may present the object via a frame, for example, as described above.
[0121] Figure 9 The illustration depicts an example process 900 for annotating a user interface to enable access to third-party objects associated with the user interface, as described herein.
[0122] In operation 902, the integration management component 116 can integrate a third-party platform into the communication platform, as described above with reference to operation 802.
[0123] In operation 904, the integration management component 116 can cause instructions from third-party platforms to be presented via the user interface of the communication platform. In some examples, instructions from third-party platforms integrated into the communication platform can be presented via a user interface associated with the communication platform. In some examples, such instructions can be presented as information associated with a communication channel. In some examples, such instructions can be presented via another feature of the user interface, such as a dashboard (e.g., a virtual space where data associated with one or more users, one or more communication channels, etc., can be aggregated), a sidebar, or other blocks or sub-blocks of the user interface. In some examples, such instructions can be associated with text elements, graphic elements, logos, etc.
[0124] In some examples, the integrated third-party platform may be mapped to or otherwise associated with a separate communication channel. That is, in some examples, at least in part, based on the third-party platform being mapped to or otherwise associated with a first communication channel, instructions from the third-party platform may be presented via the user interface while data associated with the first communication channel is presented via the user interface. However, if the third-party platform is not mapped to or otherwise associated with a second communication channel, instructions from the third-party platform may not be presented via the user interface while data associated with the second communication channel is presented. In some examples, such mapping or other association may be determined at least in part based on permission data, which may be associated with a separate communication channel, (multiple) direct messages, (multiple) users, (multiple) groups (e.g., (multiple) workspaces), and / or the like.
[0125] In operation 906, application 140 may determine whether a request has been received to identify references to (multiple) objects associated with a third-party platform. In some examples, the user may interact with the user interface to request annotations on (multiple) references to (multiple) objects available via the third-party platform to indicate this. In some examples, the user may interact with one of the instructions from the third-party platform to initiate such a request.
[0126] In operation 908, application 140 may analyze data presented via the user interface. In at least one example, based at least in part on receiving a request to identify multiple such references to objects(s), application 140 may analyze the data presented via the user interface to determine whether there are any references(s) to objects(s) associated with a third-party platform, as illustrated in operation 910. In some examples, such references(s) may be associated with multiple identifiers such as Uniform Resource Identifiers (URIs).
[0127] In operation 912, application 140 may associate an actuation mechanism with an object, wherein the actuation mechanism enables the retrieval of the object for presentation via a user interface. In at least one example, application 140 may cause the actuation mechanism to associate with the object, at least in part based on the detection of a reference to an object associated with a third-party platform. The actuation mechanism may include a link or other mechanism that can cause the associated object to be presented via a user interface, as described herein.
[0128] In some examples, if no request to identify multiple references to (multiple) objects is received (e.g., in operation 906) and / or the user interface does not include any references to (multiple) objects associated with a third-party platform (e.g., in operation 910), the process may return to operation 904. In some examples, process 900 may proceed from operation 902 to operation 908 (e.g., without performing operations 904 and / or 906). In such examples, based at least in part on the integration of a third-party platform into the communication platform, application 140 may automatically (e.g., without user input) cause references to (multiple) objects associated with the user interface to be annotated with an actuation mechanism.
[0129] Although operations 906 to 912 are described above as being performed by application 140, in some examples, operations 906 to 912 may be performed by additional or alternative functional components on user computing device 104. Additionally or alternatively, in some examples, operations 906 to 912 may be performed by integration management component 116. For example, integration management component 116 may determine whether a request has been received from user computing device 104, wherein the request is to identify references to (multiple) objects in a user interface associated with a third-party platform. Integration management component 116 may analyze data presented via the user interface, and if a reference to an object associated with a third-party platform is detected, integration management component 116 may cause an actuation mechanism to be associated with the reference to the object presented via the user interface of the communication platform.
[0130] Figure 10 The illustration shows an example process 1000, as described herein, for resulting in a group-based communication user interface presented via a third-party platform, wherein functionality associated with the communication platform is integrated into the third-party platform.
[0131] In operation 1002, integration management component 116 can provide functionality for integrating communications into a third-party platform. In some examples, integration management component 116 can facilitate the integration of functionality associated with the communications platform into the third-party platform. In some examples, the communications platform can be integrated into a web browser experience associated with the third-party platform. In some examples, as described above, the communications platform can be integrated into the third-party platform via a small application (e.g., an extension). In some examples, developers (as associated with the third-party platform) can install such an extension into the third-party platform. In at least one example, the extension can cause a frame to be loaded into a web browser within which the third-party platform is accessible. In some examples, the frame can access content associated with the communications platform and write that associated content into the frame. In some examples, the communications platform can be integrated into a native application associated with the third-party platform. In some examples, the communications platform can be integrated into the third-party platform by embedding an embeddable browser (e.g., a webview) into the native application associated with the third-party platform. In such examples, the native application can use the embeddable browser to display web page content. In other words, in such examples, as described in this article, a native application can have an embedded browser engine that can programmatically load content (e.g., multiple third-party objects) within the user interface. In some examples, such content can be loaded into a framework.
[0132] In operation 1004, the integration management component 116 can cause the actuation mechanism associated with the communication platform to be associated with the user interface of the third-party platform. In an example where functionality associated with the communication platform is integrated into the third-party platform, the user interface of the third-party platform, which can be presented via an application, web browser, etc., may include the actuation mechanism associated with the communication platform. In at least one example, the integration management component 116 can cause such an actuation mechanism to be presented.
[0133] In operation 1006, the integration management component 116 can determine whether input associated with the actuation mechanism has been detected. In at least one example, based at least in part on receiving an indication that input associated with the actuation mechanism has been detected, the third-party server(s)123 can send such an indication to the server(s)102(s). The integration management component 116 can receive this indication and can cause a group-based communication user interface to be presented within the user interface, wherein data associated with the third-party platform is presented in a first block of the user interface, and the group-based communication interface is presented via a second block of the user interface, as illustrated in operation 1008. That is, based at least in part on receiving an indication that the actuation mechanism has been actuated, the integration management component 116 can cause data associated with the communication platform to be presented via the user interface. In some examples, such data can be presented as a group-based communication user interface associated with the communication platform. In some examples, the group-based communication user interface can be presented via a frame (e.g., an inline frame) within the user interface. In some examples, data associated with the third-party platform (e.g., objects associated with it) can be presented via another frame within the user interface. In this way, users can interact with third-party platforms and communication platforms through the same user interface (e.g., without leaving the third-party platform).
[0134] In some examples, the user interface may be a new user interface rendered by a communication platform (e.g., a web application associated with the communication platform may render a new user interface). The new user interface may replace the user interface associated with the actuation mechanism. The new user interface may have multiple blocks, each of which may be associated with a frame (e.g., an inline frame) that may render data associated with the corresponding platform (e.g., a third-party platform and the communication platform). In some examples, the third-party platform may re-render the aforementioned user interface in operation 1004, at least in part based on the detection of input associated with a request to close the frame associated with the group-based communication user interface. That is, the previous user interface may be rendered by the third-party platform.
[0135] In some examples, if no input is received and / or detected, process 1000 may return to operation 1006 to wait for indication of input associated with the actuation mechanism.
[0136] In some examples, the state of the communication platform block can be associated with a specific third-party page or site, such that if a user navigates away from the third-party page or site while the communication platform block is associated with an open state, the communication platform block can be presented via the user interface when the user returns to the same third-party page or site at a later time. In some examples, if a third-party page or site is associated with a communication platform block associated with a closed state, the communication platform block may not be presented when the user returns to that page or site.
[0137] In some examples, communication channels or direct messages can be mapped to third-party platforms and / or objects. For example, if a communication channel or direct message is mapped to or otherwise associated with a third-party platform and / or object, it can continue to be presented via the second block as long as the user is interacting with the same third-party platform and / or object. However, based at least in part on the detection that the user has navigated to a different third-party platform and / or object (e.g., associated with a different domain), the communication channel or direct message may no longer be presented via the second block (and in some examples, the second block may not be presented at all). In at least one example, if the third-party platform and / or object is accessed later, the communication channel or direct message can again be presented via the second block. In some examples, a location within a communication channel or direct message may be marked or otherwise identified such that when the third-party platform and / or object is accessed later, the communication channel or direct message may be presented via a second block at the marked or otherwise identified location (e.g., such that the communication channel or direct message is opened at the same location within the communication channel or direct message that the user was interacting with before navigating away from the third-party platform and / or object).
[0138] in conclusion
[0139] While one or more examples of the techniques described herein have been described, various modifications, additions, arrangements, and equivalents thereof are included within the scope of the techniques described herein.
[0140] In the description of the embodiments, reference is made to the accompanying drawings, which form a part thereof, illustrating specific examples of the claimed subject matter by way of illustration. It should be understood that other examples may be used, and changes or modifications, such as structural alterations, may be made. Such examples, changes, or modifications do not necessarily depart from the scope of the intended claimed subject matter. While the steps herein may be presented in a certain order, in some cases the order may be changed so that certain inputs are provided at different times or in a different order without altering the functionality of the described system and method. The disclosed procedures may also be performed in different orders. Furthermore, the various calculations herein do not need to be performed in the disclosed order, and other examples using alternative orders of calculations can be readily implemented. In addition to reordering, calculations may also be decomposed into sub-computations with the same result.
[0141] Example Terms
[0142] A: A method for interacting with an object associated with a third-party platform in a group-based communication platform, the method comprising: associating an actuation mechanism with a reference to the object presented via a user interface of the group-based communication platform; retrieving the object from the third-party platform based at least in part on detecting input associated with the user interface; and presenting the object via the user interface, wherein one or more messages associated with the group-based communication platform are presented via a first block of the user interface, and the object is presented via a second block of the user interface, wherein the first block and the second block are presented simultaneously and are interactive independently from within the user interface of the group-based communication platform.
[0143] B: According to the method described in paragraph A, the one or more messages are associated with a communication channel of the group-based communication platform, and the first block represents the communication channel.
[0144] C: According to the method described in paragraph A or B, wherein the one or more messages are associated with direct messages of the group-based communication platform, and the first block represents the direct message.
[0145] D: The method according to any one of paragraphs A to C, wherein the actuation mechanism is associated with a logo representing the third-party platform.
[0146] E: The method according to any one of paragraphs A to D, wherein the object is presented via the second block for at least one of viewing, editing, or interacting with the object.
[0147] F: The method according to any one of paragraphs A to E, wherein the second block is associated with a resizing mechanism, the method further comprising: receiving input associated with the resizing mechanism, wherein the input associated with the resizing mechanism causes the second block to expand or shrink within the user interface; and resizing the first block and the second block at least in part based on the received input associated with the resizing mechanism.
[0148] G: The method according to any one of paragraphs A to F further includes: causing the second block to be presented via a new user interface, at least in part based on receiving a request to extract the second block from the user interface.
[0149] H: The method according to any one of paragraphs A to G, wherein the one or more messages are associated with at least one of a communication channel associated with a workspace or a direct message associated with the workspace, and wherein permissions associated with at least one of the communication channel, the direct message, or the workspace allow for integration of the third-party platform.
[0150] I: A system comprising: one or more processors; and one or more non-transitory computer-readable media including instructions, which, when executed by the one or more processors, cause the system to perform operations including: associating an actuation mechanism with a reference to an object associated with a third-party platform, wherein the object is presented via a user interface of a group-based communication platform; causing the object to be retrieved from the third-party platform based at least in part on detecting input associated with the user interface; and causing the object to be presented via the user interface, wherein one or more messages associated with the group-based communication platform are presented via a first block of the user interface, and the object is presented via a second block of the user interface, wherein the first block and the second block are presented simultaneously and are interactive independently from within the user interface of the group-based communication platform.
[0151] J: According to the system described in paragraph I, wherein the one or more messages are associated with a communication channel of the group-based communication platform, and the first block represents the communication channel.
[0152] K: According to the system described in paragraph I or J, wherein the one or more messages are associated with direct messages of the group-based communication platform, and the first block represents the direct message.
[0153] L: A system according to any one of paragraphs I to K, wherein the object is presented via the second block for at least one of viewing, editing, or interacting with the object.
[0154] M: A system according to any one of paragraphs I to L, wherein the second block is associated with a resizing mechanism, the operation further comprising: receiving input associated with the resizing mechanism, wherein the input associated with the resizing mechanism causes the second block to expand or shrink within the user interface; and resizing the first block and the second block at least in part based on the received input associated with the resizing mechanism.
[0155] N: The system according to any one of paragraphs I to M, the operation further includes: causing the second block to be presented via a new user interface, at least in part based on receiving a request to extract the second block from the user interface.
[0156] O: A system according to any one of paragraphs I to N, wherein the one or more messages are associated with at least one of a communication channel associated with a workspace or a direct message associated with the workspace, and wherein permissions associated with at least one of the communication channel, the direct message, or the workspace allow for integration of the third-party platform.
[0157] P: One or more non-transitory computer-readable media including instructions that, when executed by one or more processors, cause the one or more processors to perform operations including: associating an actuation mechanism with a reference to an object associated with a third-party platform, wherein the object is presented via a user interface of a group-based communication platform; causing the object to be retrieved from the third-party platform based at least in part on the detection of input associated with the user interface; and causing the object to be presented via the user interface, wherein one or more messages associated with the group-based communication platform are presented via a first block of the user interface, and the object is presented via a second block of the user interface, wherein the first block and the second block are presented simultaneously and are interactive independently from within the user interface of the group-based communication platform.
[0158] Q: According to paragraph P, one or more non-transitory computer-readable media, wherein the input is associated with the actuation mechanism, and wherein the object is presented via the second block for at least one of viewing, editing, or interacting with the object.
[0159] R: One or more non-transitory computer-readable media as described in paragraph P or Q, wherein the one or more messages (i) are associated with a communication channel of the group-based communication platform and the first block represents the communication channel, or (ii) wherein the one or more messages are associated with a direct message of the group-based communication platform and the first block represents the direct message.
[0160] S: According to any one of paragraphs P to R, the operation further includes: at least in part based on receiving a request to extract the second block from the user interface, causing the second block to be presented via a new user interface.
[0161] T: One or more non-transitory computer-readable media according to any one of paragraphs P to S, wherein the one or more messages are associated with at least one of a communication channel associated with a workspace or a direct message associated with the workspace, and wherein permissions associated with at least one of the communication channel, the direct message, or the workspace allow for integration of the third-party platform.
[0162] U. One or more non-transitory computer-readable media according to any one of paragraphs P to T, wherein the one or more messages are associated with at least one of a communication channel associated with a workspace or a direct message associated with the workspace, the operation further comprising: receiving a request to access a different communication channel associated with the workspace or a different direct message associated with the workspace; updating data presented via the first block at least in part based on receiving the request; and maintaining the presentation of the object via the second block at least in part based on the determination that the different communication channel or the different direct message is associated with the workspace.
[0163] V. One or more non-transitory computer-readable media according to any one of paragraphs P to T, wherein the one or more messages are associated with a first workspace, the method further comprising: receiving a request to access a second workspace; and stopping the rendering of the second block based at least in part on a determination that the second workspace is different from the first workspace.
[0164] W. A method comprising: providing functionality for integrating a group-based communication platform into a third-party platform; causing an actuation mechanism associated with the group-based communication platform to be associated with a user interface of the third-party platform; and causing a group-based communication interface to be presented within the user interface, at least in part based on the detection of input associated with the actuation mechanism, wherein data associated with the third-party platform is presented via a first block within the user interface, and the group-based communication interface is presented via a second block within the user interface, and wherein the first block and the second block are presented simultaneously and are capable of interacting independently.
[0165] X. One or more non-transitory computer-readable media comprising instructions that, when executed by one or more processors, cause the one or more processors to perform operations including: providing functionality for integrating a group-based communication platform into a third-party platform; causing an actuation mechanism associated with the group-based communication platform to be associated with a user interface of the third-party platform; and causing a group-based communication interface to be presented within the user interface, at least in part based on the detection of input associated with the actuation mechanism, wherein data associated with the third-party platform is presented via a first block within the user interface, and the group-based communication interface is presented via a second block within the user interface, and wherein the first block and the second block are presented simultaneously and are capable of interacting independently.
[0166] Y. A system comprising: one or more processors; and one or more non-transitory computer-readable media including instructions that, when executed by the one or more processors, cause the system to perform operations including: providing functionality for integrating a group-based communication platform into a third-party platform; causing an actuation mechanism associated with the group-based communication platform to be associated with a user interface of the third-party platform; and causing a group-based communication interface to be presented within the user interface, at least in part based on the detection of input associated with the actuation mechanism, wherein data associated with the third-party platform is presented via a first block within the user interface, and the group-based communication interface is presented via a second block within the user interface, and wherein the first block and the second block are presented simultaneously and are capable of interacting independently.
[0167] While the example clauses described above pertain to a particular implementation, it should be understood that, within the context of this document, the content of the example clauses can also be implemented by methods, devices, systems, computer-readable media, and / or other implementations. Furthermore, any of examples A through Y can be implemented individually or in combination with any other one or more of examples A through Y.
Claims
1. A method for interacting with objects associated with a third-party platform in a group-based communication platform, the method comprising: The actuation mechanism is associated with a reference to the object presented via the user interface of the group-based communication platform; The object is retrieved from the third-party platform based at least in part on the detection of input associated with the actuation mechanism; as well as The object is presented via the user interface, wherein one or more messages associated with the group-based communication platform are presented via a first block of the user interface, and the object is presented via a second block of the user interface, wherein the first block and the second block are presented simultaneously and can be interacted with independently from within the user interface of the group-based communication platform.
2. The method according to claim 1, wherein, The one or more messages are associated with a communication channel of the group-based communication platform, and the first block represents the communication channel.
3. The method according to claim 1, wherein, The one or more messages are associated with direct messages of the group-based communication platform, and the first block represents the direct message.
4. The method according to claim 1, wherein, The actuation mechanism is associated with a logo representing the third-party platform.
5. The method according to claim 1, wherein, The object is presented via the second block for at least one of viewing the object, editing the object, or interacting with the object.
6. The method according to claim 1, wherein, The second block is associated with a resizing mechanism, and the method further includes: Receive input associated with the resizing mechanism, wherein the input associated with the resizing mechanism causes the second block to expand or shrink within the user interface; and The first block and the second block are resized at least in part based on the input received in association with the resizing mechanism.
7. The method according to claim 1, further comprising: The second block is presented via a new user interface, at least in part, based on receiving a request to extract the second block from the user interface.
8. The method according to claim 1, wherein, The one or more messages are associated with at least one of a communication channel associated with the workspace or a direct message associated with the workspace, and wherein permissions associated with at least one of the communication channel, the direct message, or the workspace allow for integration with the third-party platform.
9. A system for interacting with objects associated with a third-party platform in a group-based communication platform, the system comprising: One or more processors; and One or more non-transitory computer-readable media including instructions, which, when executed by the one or more processors, cause the system to perform operations including: The actuation mechanism is associated with a reference to an object associated with a third-party platform, wherein the object is presented via a user interface of a group-based communication platform; The object is retrieved from the third-party platform, at least in part, based on the detection of input associated with the actuation mechanism; and This results in the object being presented via the user interface, wherein one or more messages associated with the group-based communication platform are presented via a first block of the user interface, and the object is presented via a second block of the user interface, wherein the first block and the second block are presented simultaneously and can be interacted with independently from within the user interface of the group-based communication platform.
10. The system according to claim 9, wherein, The one or more messages are associated with a communication channel of the group-based communication platform, and the first block represents the communication channel.
11. The system according to claim 9, wherein, The one or more messages are associated with direct messages of the group-based communication platform, and the first block represents the direct message.
12. The system according to claim 9, wherein, The object is presented via the second block for at least one of viewing the object, editing the object, or interacting with the object.
13. The system according to claim 9, wherein, The second block is associated with a resizing mechanism, and the operation further includes: Receive input associated with the resizing mechanism, wherein the input associated with the resizing mechanism causes the second block to expand or shrink within the user interface; and The first block and the second block are resized at least in part based on the input received in association with the resizing mechanism.
14. The system according to claim 9, wherein the operation further comprises: The second block is presented via a new user interface, at least in part, based on receiving a request to extract the second block from the user interface.
15. The system according to claim 9, wherein, The one or more messages are associated with at least one of a communication channel associated with the workspace or a direct message associated with the workspace, and wherein permissions associated with at least one of the communication channel, the direct message, or the workspace allow for integration with the third-party platform.
16. A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors, cause the one or more processors to perform an operation comprising: The actuation mechanism is associated with a reference to an object associated with a third-party platform, where, The object is presented via a user interface of a group-based communication platform; The object is retrieved from the third-party platform, at least in part, based on the detection of input associated with the actuation mechanism; as well as This results in the object being presented via the user interface, wherein one or more messages associated with the group-based communication platform are presented via a first block of the user interface, and the object is presented via a second block of the user interface, wherein the first block and the second block are presented simultaneously and can be interacted with independently from within the user interface of the group-based communication platform.
17. The non-transitory computer-readable medium according to claim 16, wherein, The input is associated with the actuation mechanism, and the object is presented via the second block for at least one of viewing the object, editing the object, or interacting with the object.
18. The non-transitory computer-readable medium according to claim 16, wherein, The one or more messages are (i) associated with a communication channel of the group-based communication platform, and the first block represents the communication channel, or (ii) wherein the one or more messages are associated with a direct message of the group-based communication platform, and the first block represents the direct message.
19. The non-transitory computer-readable medium of claim 16, further comprising: The second block is presented via a new user interface, at least in part, based on receiving a request to extract the second block from the user interface.
20. The non-transitory computer-readable medium of claim 16, wherein, The one or more messages are associated with at least one of a communication channel associated with the workspace or a direct message associated with the workspace, and wherein permissions associated with at least one of the communication channel, the direct message, or the workspace allow for integration with the third-party platform.
Citation Information
Patent Citations
Electronic board associated with a communication platform
US20220051169A1
Integrating actionable objects into an on-line chat communications platform
US20170134316A1
Improved developer tools for a communication platform background
WO2020123752A2