Collaboration Software Development Kit
The integration of third-party applications into group-based communication systems through collaboration instance controllers addresses the limitation of secure access, improving collaboration efficiency and user experience.
Patent Information
- Application Number
- JP2024538730
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-12-31
- Filing Date
- 2022-12-13
- Publication Date
- 2025-10-22
- Estimated Expiration
- 2042-12-13
AI Technical Summary
Existing group-based collaboration systems do not allow secure access to their objects by third-party applications, limiting the integration of additional tools that could enhance user collaboration and efficiency.
A system and method for third-party integration in group-based communication systems, enabling secure access to collaboration instance controllers, allowing third-party applications to request and receive objects based on user access rights, and providing a seamless user interface experience.
Enables secure and efficient integration of third-party applications within group-based communication systems, enhancing collaboration tools and user experience without duplicating code, and ensuring access control.
Smart Images

Figure 0007758440000001 
Figure 0007758440000002 
Figure 0007758440000003
Abstract
Description
[Background technology]
[0001] Group-based collaboration systems enable users to interact and collaborate to provide high levels of efficiency and creativity. These group-based communication systems offer a variety of tools for synchronous and asynchronous work, enabling organizations to work effectively both in person and remotely. However, these tools may not be accessible to users outside the group-based collaboration system. Additionally, third-party integrations may offer tools not available within the group-based communication system that could benefit from access to objects within the group-based communication system. Therefore, there is a need for a way to enable third-party integrations and other third-party applications to securely access objects from the group-based communication system. Summary of the Invention
[0002] Embodiments of the present invention solve the above-mentioned problems by providing a system, method, and computer-readable medium for collaboration in a group-based communication system via third-party integration. In some embodiments, the group-based communication system receives a request from a third party to initialize a collaboration instance controller. The request may include configuration settings and information regarding access rights associated with a user of the group-based communication system, such as the user's login information. If the information is accepted, the group-based communication system may initialize the collaboration instance controller and provide it to the third party. Through the collaboration instance controller, the third party may request an object in the group-based communication system. If it is determined that the access rights provide access to the requested object, the object may be sent to the third party.
[0003] A first embodiment of the present invention is directed to one or more non-transitory computer-readable media having stored thereon computer-executable instructions that, when executed by a processor, perform a method for collaboration in a group-based communication system via integration, the method including the steps of receiving a first request from an integration to initialize a new collaboration instance controller, the first request including configuration settings and indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining, based on the access rights indicia, that the integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the integration.
[0004] A second embodiment of the present invention is directed to a method for collaboration in a group-based communication system via integration, the method including the steps of receiving a first request from an integration to initialize a new collaboration instance controller, the first request including configuration settings and access right indications to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the integration via the new collaboration instance controller for one or more group-based communication system objects associated with the user; determining based on the access right indications that the integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the integration.
[0005] A third embodiment of the present invention is directed to a system for collaboration in a group-based communication system via integration, the system comprising: a data store associated with the group-based communication system; and a processor programmed to execute a method for collaboration in a group-based communication system via integration, the method including the steps of: receiving a first request from the integration to initialize a new collaboration instance controller, the first request including configuration settings and indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining based on the indicia of access rights that the integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the integration.
[0006] Additional embodiments of the present invention are directed to a machine learning model for determining one or more suggested triggers for a user based on user activity within a group-based communication system, the machine learning model being trained using historical user data associated with the group-based communication system. In some such embodiments, the training of the machine learning model may be periodically updated based on use of triggers and automated workflows within the group-based communication system such that the accuracy of the suggestions improves over time.
[0007] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Other aspects and advantages of the present invention will become apparent from the following Detailed Description of the Embodiments and the accompanying drawings. [Brief explanation of the drawings]
[0008] Embodiments of the present invention are described in detail below with reference to the accompanying drawings. [Figure 1A] 1 illustrates an exemplary hardware platform associated with certain embodiments of the present invention. [Figure 1B] 1 shows a system diagram including elements for carrying out certain embodiments of the present invention. [Figure 2] 1 illustrates an exemplary embodiment of a user interface for a group-based communication system for displaying documents. [Figure 3] 1 illustrates a system architecture associated with some embodiments of the present invention. [Figure 4] 1 illustrates a user interface associated with some embodiments of the present invention. [Figure 5] 1 shows a flowchart for some embodiments of the present invention. [Figure 6] 1 illustrates an exemplary system architecture diagram.
[0009] The drawings are not intended to limit the invention to the particular embodiments disclosed and described herein. The drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the invention. DETAILED DESCRIPTION OF THE INVENTION
[0010] Background and Concept of the Invention As used herein, the term "group-based communication system" refers to a collaborative communication system used within an organization and is different from traditional email systems. In some embodiments, the group-based communication system is a channel-based platform. Within a group-based communication system, communications may be organized into "channels," each dedicated to a specific topic or set of users. A channel is generally a long-running, self-sufficient discussion of a specific topic. Members of a particular channel can post messages in that channel that are visible to other members of that channel, along with other messages in that channel. A user may select a channel to browse to see only those messages related to that channel's topic, without seeing messages posted in other channels on different topics. For example, a software development company may have different channels for each software product under development, allowing developers working on each specific project to converse without disturbing (or being disturbed by) developers working on other projects. Because channels are generally persistent and targeted to a specific topic or group, users can quickly and easily refer to previous communications for reference.
[0011] In some embodiments, the group-based communication system may include synchronous multimedia collaboration sessions. The synchronous multimedia collaboration sessions may provide ambient, ad-hoc multimedia collaboration in the group-based communication system. Users of the group-based communication system can quickly and easily join and leave these synchronous multimedia collaboration sessions at any time without interrupting the synchronous multimedia collaboration session for other users. In some embodiments, the synchronous multimedia collaboration session may be centered around a particular topic, a particular channel, or a set of users; in other embodiments, the synchronous multimedia collaboration session may exist without being tied to any particular channel, topic, or set of users. The synchronous multimedia collaboration session may be a short, temporary session in which data is not persisted. Alternatively, in some embodiments, the synchronous multimedia collaboration session may be recorded, transcribed, and / or summarized for later review. Members of a particular synchronous multimedia collaboration session may post messages within a messaging thread associated with that synchronous multimedia collaboration session that are visible to other members of the synchronous multimedia collaboration session, along with other messages within the thread. "Multimedia" in a synchronous multimedia collaboration session may include any or all of audio, video, screen sharing, collaborative document editing, whiteboarding, collaborative programming, or any other form of media. A synchronized multimedia collaboration session may be initiated for a particular channel or direct message conversation by one or more members of that channel or direct message conversation. For example, a user may initiate a synchronized multimedia collaboration session in a channel as a means of communicating with other members of that channel who are currently online.A user may make an urgent decision and desire immediate verbal feedback from other members of the channel. By initiating a synchronous multimedia collaboration session, a user can initiate an immediate audio conversation with other members of the channel without the need for scheduling.
[0012] Communication data in a group-based communication system may include messages, queries, files (e.g., documents, spreadsheets, computer code, images, video, audio, and / or electronic contact information), mentions, users or user profiles, interactions (e.g., reactions, edits, deletions, and / or prioritization by pinning or starring, etc.), tickets, channels, applications integrated into one or more channels, conversations (e.g., a group of messages segmented as a single unit), workspaces (e.g., a set of channels, users, projects, tasks within an organization that may have its own set of permissions and in some cases may be organized substantially consistent with an organizational chart), or other data generated by or shared among users of the group-based communication system that are associated with the organization's communication data using the group-based communication system.
[0013] In some instances, the communication data may include data associated with the user (e.g., a user profile), including, but not limited to, a user identifier, one or more communication channel identifiers associated with communication channels to which the user has been granted access, one or more group identifiers for groups (or organizations, teams, entities, etc.) with which the user is associated, an indication of whether the user is the owner or administrator of any communication channels, an indication of whether the user has any communication channel restrictions, a plurality of messages, a plurality of emojis, a plurality of conversations, a plurality of conversation topics, an avatar, an email address, a real name (e.g., Austin Author), a username (e.g., austin_a), a password, user preferences and / or settings, a time zone, a status, a token, and other user-specific information. In some embodiments, the group-based communication system may additionally or alternatively store permission data associated with the permissions of individual users of the group-based communication system. In some embodiments, the permissions associated with individual users may be mapped to or otherwise associated with an account or profile associated with the user data. Permissions may indicate, for example, which users can communicate directly with other users, which channels users are permitted to access, restrictions on individual channels, which workspaces users are permitted to access, and restrictions on individual workspaces. In some embodiments, permissions may support group-based communication systems by maintaining security to limit access to defined groups of users. In some such embodiments, such users may be defined by common access credentials, group identifiers, or other criteria, as described above.
[0014] In some embodiments, a group-based communication system may be partitioned into different workspaces that may be associated with different user groups. Each workspace may be associated with a group identifier, and one or more user identifiers may be mapped to or otherwise associated with the group identifier. Users corresponding to such user identifiers may be referred to as “members” of the group. A workspace may include one or more channels that are unique to that workspace and / or one or more channels that are shared among one or more workspaces. In some embodiments, a workspace may be associated with one or more organization identifiers, which may be associated with organizations or other entities associated with the group-based communication system. In some embodiments, such data may be mapped to or otherwise associated with other types of data (e.g., user data, permission data, or channel data).
[0015] The subject matter of the present invention is described in detail below to satisfy statutory requirements. However, the description itself is not intended to limit the scope of the claims. Rather, the claimed subject matter may be embodied in other ways to include different steps or combinations of steps similar to those described in this document, in conjunction with other current or future technologies. Minor variations from the following description will be understood by those skilled in the art and are intended to be captured within the scope of the claimed invention. No term should be construed as implying any particular ordering of the various steps described, unless the order of individual steps is explicitly described.
[0016] The following detailed description of embodiments of the present invention refers to the accompanying drawings, which show, by way of illustration, specific embodiments in which the invention may be practiced. The embodiments are intended to describe aspects of the present invention in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments may be utilized, and changes may be made without departing from the scope of the present invention. Therefore, the following detailed description is not to be taken in a limiting sense. The scope of the embodiments of the present invention is defined only by the appended claims, along with the full scope of equivalents to which such claims are entitled.
[0017] In this description, a reference to "one embodiment," "an embodiment," or "embodiments" means that one or more referenced features are included in at least one embodiment of the technology. Separate references to "one embodiment," "an embodiment," or "embodiments" in this description do not necessarily refer to the same embodiment, nor are they mutually exclusive, unless so stated and / or readily apparent to one of ordinary skill in the art from the description. For example, a feature, structure, or operation described in one embodiment may, but is not necessarily, included in other embodiments. Thus, the technology may include various combinations and / or integrations of the embodiments described herein.
[0018] Operating Environment for Embodiments of the Invention FIG. 1A illustrates an exemplary hardware platform for certain embodiments of the present invention. The computer 102 can be a desktop computer, a laptop computer, a server computer, a mobile device such as a smartphone or tablet, or any other form factor of a general-purpose or special-purpose computing device. For illustrative purposes, several components are shown with the computer 102. In some embodiments, certain components may be located differently or not present. Additional components may be present. The computer 102 includes a system bus 104, which allows other components of the computer 102 to communicate with each other. In certain embodiments, there may be multiple buses, or components may communicate directly with each other. A central processing unit (CPU) 106 is connected to the system bus 104. Also attached to the system bus 104 are one or more random access memory (RAM) modules 108. Also attached to the system bus 104 is a graphics card 110. In some embodiments, the graphics card 110 may not be a physically separate card, but rather may be integrated into the motherboard or the CPU 106. In some embodiments, graphics card 110 has a separate graphics processing unit (GPU) 112 that can be used for graphics processing or general-purpose computing (GPGPU). GPU memory 114 is also present on graphics card 110. A display 116 is connected (directly or indirectly) to graphics card 110 for user interaction. In some embodiments, a display is not present, while in other embodiments, it is integrated into computer 102. Similarly, peripherals such as a keyboard 118 and a mouse 120 are connected to system bus 104. Like display 116, these peripherals may or may not be integrated into computer 102. In some embodiments, additional peripherals, such as a microphone or video camera, may also be present and connected to system bus 104.In some embodiments, such peripherals may be removably connected to computer 102 via wired or wireless connections. In other embodiments, such as a tablet or smartphone, these peripherals are integrated into computer 102. Also connected to system bus 104 is local storage 122, which may be any form of computer-readable media and may be located internal to computer 102 or removably attached externally.
[0019] Computer-readable media includes both volatile and nonvolatile media, both removable and non-removable media, and contemplates media readable by a database. For example, computer-readable media includes (but is not limited to) RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVDs), holographic media or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage, and other magnetic storage devices. These technologies can store data temporarily or permanently. However, unless expressly specified otherwise, the term "computer-readable media" should not be interpreted to include physical but transitory forms of signal transmission, such as radio broadcasts, electrical signals over wires, or light pulses over fiber optic cables. Examples of stored information include computer-usable instructions, data structures, program modules, and other data representations.
[0020] Finally, a network interface card (NIC) 124 is also attached to the system bus 104, enabling the computer 102 to communicate over a network, such as network 126. The NIC 124 can be any form of network interface known in the art, such as Ethernet, ATM, fiber, BLUETOOTH, or Wi-Fi (i.e., the IEEE 802.11 family of standards). The NIC 124 connects the computer 102 to a local network 126, which may also include one or more other computers, such as computer 128, and network storage, such as data store 130. In general, a data store, such as data store 130, may be any repository that can store information and retrieve it as needed. Examples of data stores include relational or object-oriented databases, spreadsheets, file systems, flat files, directory services such as LDAP and Active Directory, or email storage systems. The data store may be accessible via a complex API (e.g., a structured query language), a simple API that provides only read, write, and seek operations, or any level of complexity in between. Additionally, some data stores may provide management functionality for the data sets stored therein, such as backup or version control. A data store may be local to a single computer, such as computer 128, accessible over a local network, such as local network 126, or remotely accessible via the Internet 132. Local network 126 is connected to the Internet 132, which connects many networks, such as local network 126, remote network 134, or directly connected computers, such as computer 136. In some embodiments, computer 102 itself may be directly connected to the Internet 132.
[0021] FIG. 1B shows a system diagram including elements of a system 150 for implementing certain embodiments of the present invention. System 150 comprises any number of client devices, such as client device 152, client device 154, and client device 156. As illustrated in FIG. 1B, the client devices may be any of a desktop computer, a laptop computer, a mobile phone, a tablet, or any other device suitable for allowing users to access a group-based communication system. Users may switch from one client device to another or may access the group-based communication system via multiple devices simultaneously. The group-based communication system may be accessible via dedicated software on the client device or via a web browser on the client device. In some embodiments, a channel administrator can access management functions via any client device. In other embodiments, management functions can be accessed only from a limited subset of client devices (e.g., only via client device 152). In some examples, the group-based communication system is a channel-based platform with multiple messaging channels available to select users.
[0022] The system further includes a group-based communication system server 158 that serves as a host for the group-based communication system. The group-based communication system server 158 may be a dedicated server, a shared server, or any other form of computing device as described above with respect to FIG. 1A . While a single group-based communication system server 158 is shown, embodiments having multiple such group-based communication system servers are contemplated to provide scale, redundancy, and / or isolation between different instances of the group-based communication system. For example, a particular organization using a group-based communication system may not want its group-based communication system hosted on the same server as a competitor's group-based communication system for security reasons. The group-based communication system server 158 is communicatively coupled to the client devices 152, 154, and 156 via a network 160. The network 160 may be a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), or the Internet. Broadly speaking, any type of network is contemplated for providing communication between the various components of the system 150. The group-based communication system server 158 may provide web server functionality to enable web-based clients and non-web server functionality to enable clients to use dedicated apps. Alternatively, both web-based clients and dedicated app clients may use a single web server, or the web server may be a gateway that provides web-based access to the dedicated app server. Other techniques for enabling communication between various types of client applications are also contemplated.
[0023] It should be understood that the group-based communication system referred to herein may provide a communication platform for multiple users. Each user may be associated with a particular organization. The particular organization may be a small business, a corporation, or the like, or any other group of users. The group-based communication system is operable to provide communication services to any combination of users. For example, in some embodiments, communication services may be provided to multiple users from multiple organizations as well as multiple users from a single organization. In some embodiments, multiple channels exist within the group-based communication system. Users may be added to each channel such that users within the channel have access to messages and files posted within the channel. Furthermore, users within a channel have the ability to post messages and upload files within the channel. In some embodiments, users may be added to a particular channel by an administrator, such as an administrator within a particular organization. Alternatively, in some embodiments, users may be added by any user within the channel. Furthermore, in some embodiments, channel parameters, such as who can add users, may be set by the channel creator. For example, channels created by a particular organization may be subject to the security policy of that organization, in which case only administrators may add users to a particular channel.
[0024] Group-based communication system data store 162 is communicatively connected to group-based communication system server 158. As illustrated, group-based communication system data store 162 is directly connected to group-based communication system server 158, although any form of communication connection (e.g., network-attached storage (NAS), network file system (NFS), or cloud-based storage) may be employed. Broadly speaking, group-based communication system data store 162 stores all information used by group-based communication system server 158. For example, group-based communication system data store 162 may store all messages along with their associated channels, documents and images uploaded to particular channels, channel membership information, and / or user information. As previously mentioned, multiple group-based communication system servers may be present in system 150. In such embodiments, each group-based communication system server may have its own copy of group-based communication system data store 162. Alternatively, multiple group-based communication system servers may share a single network-connected group-based communication system data store. Alternatively or additionally, in any of these embodiments, data may be shared across multiple group-based communication system data stores.
[0025] The system further comprises a third-party integration server 164 that serves as a host for one or more third-party applications and / or integrations (collectively, “third-party integrations” for brevity). While the term “third-party integration” is used herein for convenience, the third-party integrations may be provided by the same party that provides the group-based communication system. The third-party integration server 164 may be a dedicated server, a shared server, or any other form of computing device described above with respect to FIG. 1A . While a single third-party integration server 164 is shown, embodiments having multiple such third-party integration servers are also contemplated to provide scale, redundancy, and / or isolation between different third-party integrations. The third-party integration server 164 is communicatively coupled to the group-based communication system server 158 via the network 160. The third-party integration server 164 may provide web server functionality that enables web-based clients and non-web server functionality that enables clients to use dedicated apps. Alternatively, both the web-based clients and the dedicated app clients may both use a single web server, or the web server may be a gateway providing web-based access to the dedicated app server. Other techniques for enabling communication between various types of client applications are also contemplated.
[0026] It should be understood that any of the client devices 152, 154, and 156, as well as the group-based communication system server 158, may include a processor, such as the CPU 106 described with respect to FIG. 1A. Any of the functions described herein with respect to a processor may be performed by a processor within any of these devices. In some embodiments, for example, a processor within the group-based communication system server may perform a first process step, and a processor within the client device performs a second process step.
[0027] 2 illustrates an exemplary embodiment of a user interface for a group-based communication system. A parent window 200 is shown that includes multiple panes. As illustrated, the parent window 200 includes a workspace pane 202, a channel list pane 204 that includes a channel and document list 206 and a direct message list 208, and a document pane 210 that includes a document toolbar 212, document controls 214, and a document display 216. In some embodiments, a user can interact with the panes to navigate and utilize various features available within the group-based communication system.
[0028] As shown, parent window 200 includes a workspace pane 202 for navigating between various workspaces within the group-based communication system. In some embodiments, the group-based communication system can be partitioned into different workspaces that can be associated with different user groups. Each workspace can be associated with a group identifier, and one or more user identifiers can be mapped to or otherwise associated with the group identifier. A user corresponding to such a user identifier can be referred to as a “member” of the group. For example, a user can be part of a workspace for a job at Acme Software Development. The user can also be a member of a local volunteer organization that uses the group-based communication system for collaboration. To navigate between two groups, a user can use workspace pane 202 to change from Acme’s workspace to the volunteer organization’s workspace. A workspace can include one or more channels specific to that workspace and / or one or more channels shared between one or more workspaces. For example, Acme Corporation can have a workspace for Acme software development projects, a workspace for human resources, and an additional workspace for general company matters. In some embodiments, a workspace can be associated with one or more organizations or other entities associated with the group-based communication system.
[0029] As shown, parent window 200 further includes a document pane 210 containing information related to the currently displayed document. In some embodiments, a group-based communication system channel pane (not shown) is displayed along with document pane 210. In some embodiments, documents may be modified and edited by one or more users within the group-based communication system. Users with appropriate permissions and access can view, edit, or comment on the document. Document pane 210 may include a document toolbar 212, document controls 214, and a document display 216. Document display 216 may display all content within the document, including an unstructured section 218 and a structured section 220. The functionality of document editing pane 210 may be provided by the group-based communication system or a third-party integration. While a word processing document is shown in document editing pane 210, any type of document is contemplated for use with the present invention, including spreadsheet editing, multimedia editing, image editing, and code editing, and each type of document editing may be provided by a different third-party integration. The channel list pane 204 may contain a list of channels and documents to which the user is subscribed or to which the user has been given access or permissions. The user can switch from the currently displayed document to another document, channel, or direct message by selecting another item in the channel list pane 204.
[0030] In some embodiments, the channel list pane 204 further includes a direct message list 208. The direct message list 208 includes a list of messages, called direct messages, sent directly from the user to another user of the group-based communication system and may be displayed in the document pane 210 when selected. A direct message may be sent to at least one other user. For example, a user may have a question for a manager, in which case the user may send the manager a direct message asking the question. The manager may want to include another member of the group-based communication system in the response, in which case the manager may create a direct message group including the user and the other member of the group-based communication system. A direct message may be sent to any number of users as a multi-person direct message. In some embodiments, a direct message may be sent to users within an organization, users outside the organization, users of third-party applications, and / or any variety of users.
[0031] The document pane 210 may include a document toolbar 212 that may display icons and menus that allow document formatting. For example, the document toolbar 212 may provide the user with the ability to bold, italicize, or underline fonts. In some embodiments, the document toolbar 212 may provide the user with the ability to undo and redo actions. In further embodiments, the document toolbar 212 may allow the user to modify text color. In further embodiments, the document toolbar 212 may allow the user to insert images, tables, and / or workflows. The document pane 210 may also display metadata for the currently selected document, including the document name. The document pane 210 may include document controls 214 for viewing members who have access to the document, inviting new members to the document, viewing information about the document, or other document-related functions. For example, the document controls 214 may display an icon indicating which user is currently viewing the document. In some embodiments, the document pane 210 may display a workflow status indicating which workflow step the workflow is currently on. For example, the workflow status may indicate that the document is currently in an approval workflow step and is awaiting approval from a particular user. In a further embodiment, the workflow status may indicate a summary of the information in the workflow document. For example, the workflow document may include a table into which users insert their shirt sizes, and the workflow status may include a summary of the number of shirts of each size entered in the table.
[0032] The parent window 200 may also include a search pane 222. The search pane 222 may allow a user to search for content located within the current workspace of the group-based communication system. In some embodiments, the searched content may include documents. For example, a user may look for text within a document that the user previously accessed. In other embodiments, a user may search for meta content within a document, such as the name of a workflow, workflow step, or workflow tag, or the name of the user who created the document. A user may not remember which document the text was in, in which case the user may search for the text in the search pane 222. In some embodiments, a user may only search for documents that the user has permission to view. For example, if a document was not previously shared with the user, the document may not appear in search results. In further embodiments, a user may have access to a document generally, but not to one or more specific sections of the document. In this case, the user may only search based on content within a document to which the user has permission to access. A user is not limited to searching within documents; they may also search for messages, channels, members, etc.
[0033] The document display 216 may display a selected document. In some embodiments, users of the group-based communication system may edit the document if they have sufficient permissions. In further embodiments, users of the group-based communication system may leave comments on the document. The document may include a free-form unstructured section 218 and a workflow-related structured section 220. In some embodiments, the unstructured section 218 may include an area of the document where a user is free to modify the document without constraints. For example, a user may free-type text to describe the purpose of the document. In some embodiments, a user may add a workflow by typing or otherwise referring to the name of the workflow. In further embodiments, typing an at sign or a previously selected symbol or a previously determined special character or symbol may provide the user with a list of workflows from which the user can select to add to the document. For example, a user may recognize that the marketing team may need to sign off on a proposal and may type “IMarketing Approval” to initiate a workflow that culminates with a member of the marketing team approving the proposal. In some embodiments, structured section 220 may include a text entry, a selection menu, a table, a checkbox, a task, a calendar event, or any other document section. In further embodiments, a structured section may include a text entry space that is part of a workflow. For example, a user may enter text into the text entry space detailing the reason for approval and then select a submit button that advances the workflow to the next step in the workflow. In some embodiments, a user may be able to add, edit, or delete structured sections of a document that make up a workflow component.
[0034] 3 shows a data flow diagram 300 illustrating an exemplary communication protocol between elements of a system for implementing certain embodiments of the present invention. In some embodiments, the system may include a client 302, a third-party integration 304, and a group-based communication system server 306. The client 302 may be a computer, a mobile device, or any other means of accessing servers and applications. In some embodiments, the third-party integration 304 may operate within the client 302. In further embodiments, the third-party integration 304 may operate remotely (e.g., on a third-party server) and communicate with the client over a network, such as the local network 126 or the Internet 132. The group-based communication system server 306 may host a group-based communication system, also as described above with respect to FIG. 2.
[0035] Initially, the authenticated client 302 may send a message 310 including a request to access the third-party integration 304; an authentication protocol between the client 302 and the group-based communication system server 306 is not shown but may occur before or after the message 310 is sent. The message 310 requests that the third-party integration 304 initiate an integration interface with the group-based communication system server 306. The message 310 may be sent in response to a user selecting to initiate the third-party integration within the group-based communication system server 306. In some embodiments, the user has pre-authorized the third-party integration to access their data. For example, the user may have pre-authorized the third-party integration to utilize the user's credentials and therefore does not need to provide additional authorization. In some such embodiments, a long-lived authentication token is persisted by the third-party integration. In other embodiments, the access permissions are stored by the group-based communication system server. In other embodiments, the authorization occurs in response to activation of an integration controller. Such authorization by the user grants the third-party integration access to some or all group-based communication objects accessible to the user on behalf of the user. In response to message 310 requesting federated access, third-party integration 304 may reply with message 315 containing an authentication request. Message 315 may ask the user of client 302 to confirm that the user has appropriate access rights to the group-based communication system and / or may request an authentication token that enables the third-party access to group-based communication system server 306 on behalf of the user. In some embodiments, the authentication token provides an indication (e.g., a manifest) of the set of objects to which access should be granted.
[0036] In response to message 315, client 302 may send message 320 including a request for a group-based communication system login token. In some embodiments, the user may include login credentials that the user normally uses to log in to the group-based communication system. If message 320 is authorized, group-based communication system server 306 may send message 325 including a response with the group-based communication system login token. In some embodiments, message 325 may be authorized if group-based communication system server 306 determines that the login credentials correspond to an active user of the group-based communication system. In further embodiments, only selected users of the group-based communication system may be permitted to access objects from within the group-based communication system through specific third-party applications. For example, the group-based communication system may approve requests from specific third-party applications that meet the security criteria of the group-based communication system. In some embodiments, messages 320 and 325 may be omitted, and client 302 may be able to generate an authentication token without communicating with group-based communication system server 306.
[0037] In response to receiving the group-based communication system login token, the client 302 may provide an authentication response 330 with the login token to the third-party integration 304. Using the login token, the third-party integration 304 may send a message 335 to the group-based communication system server 306 including a request for a controller using the login token. The controller may load data from the third-party integration 304 and provide it to the client 302, thereby allowing the client 302 to access third-party data and UI controls provided by the third-party integration 304 without directly exposing the group-based communication system data. The controller can assist the client 302 in rendering user interface objects associated with the third-party application so that the user interface rendered at the client matches the user interface at the third-party integration. The controller also allows the client to leverage the user interface provided by the third-party application, eliminating the need for the client to implement its own version of the user interface associated with the third-party application. This is beneficial for reducing duplicate code that needs to be updated every time the third-party integration code is updated. The controller may also assist the client 302 in communicating with the third-party integration 304, such as assisting with configuration settings so that the configuration of the user interface rendered at the client matches the configuration of the third-party application. In some embodiments, the message 335 may originate from the client 302 and be sent to the third-party integration 304. In further embodiments, the controller may be stored directly within the client 302. The message 335 may include authentication information for the user of the group-based communication system, requesting access to objects within the group-based communication system to which the user would normally have access and to which the user has granted access.If the group-based communication system approves the request, it sends a message 340 containing a response with the controller back to the third-party integration 304 .
[0038] Once the third-party integration 304 has an initialized controller, the client 302 can proceed to interact with the third-party integration. The client 302 may send a message 345 to the third-party integration 304 that includes user input to the integration. For example, a user may wish to reference a channel from within the group-based communication system and enter the channel's identifier into a document on a third-party application. The third-party integration 304 may convert the message 345 that includes the user input to the integration into a message 350 that includes a request for a group-based communication system object that uses the integration controller. For example, the third-party application may send a request for a list of all channels in the group-based communication system that correspond to the user's input and to which the user has access (or has granted access). Some or all of this list may then be provided in an auto-complete list, as shown below with respect to FIG. 4. The group-based communication system server 306 may send a message 355 that includes a response indicating one or more group-based communication system objects. In some embodiments, the group-based communication system server 306 may directly send one or more group-based communication system objects that correspond to the user's input. In other embodiments, the group-based communication system server 306 may instead send an indicia of the object (e.g., the name of the matching channel). In other embodiments, the group-based communication system may send a renderable surface object to the third-party application. For example, a document editing integration may include its own user interface and functionality. By providing a renderable surface object to the third-party application, the third-party application can be effectively embedded within the group-based communication system without having to re-implement the user interface and functionality within the group-based communication system. An advantage of such an embodiment is that the effort of duplicating code (and the attendant risk of introducing new bugs) is avoided.A further advantage is that the third-party server can provide additional functionality, such as cloud storage, synchronization, and interoperability with other instances of third-party applications outside the group-based communication system. In further embodiments, only group-based communication system objects to which the user has access may be included. The third-party integration 304 may provide a message 360 as a customized response to the client 302, providing a customized user experience. For example, a JSON object indicating the names of matching objects may be sent for inclusion in a dropdown shown below with respect to FIG. 4. The message 360 may include data, instructions, or any other information needed to display or enable interaction with the group-based communication system internal to the third-party integration to the user of the client 302. For example, the name of a channel may be displayed, and when the cursor is hovered over it, it provides additional information about the channel, such as the number of users, when the channel was last updated, or any other information about the channel.
[0039] In some embodiments, if the group-based communication system server 306 detects a change to a group-based communication system object previously provided to a third-party application, the group-based communication system server 306 may proactively send a message 365 containing updates to one or more previously sent group-based communication system objects. The message 365 may provide instructions to the third-party integration 304 to update the group-based communication system object for display. For example, the group-based communication system object may be a user, and the update may be an indication that the user has changed their status.
[0040] FIG. 4 illustrates a user interface for some embodiments of the present invention. A user interface 400 including multiple panes is shown. As illustrated, the user interface 400 includes a channel pane 402 and a third-party integration pane 404. The channel pane 402 contains information related to the currently displayed channel. As described above, in some embodiments, within a group-based communication system, communications may be organized into "channels," with each channel dedicated to a particular topic or set of users. Members of a particular channel may post messages within that channel that are visible to other members of that channel, along with other messages within that channel. A user may select a channel to view in order to see only those messages related to the channel's topic, without seeing messages posted in other channels related to different topics.
[0041] The third-party integration pane 404 includes information about third-party integrations. In some embodiments, the third-party integrations may be integrated into the group-based communication system. In further embodiments, the third-party integrations may be separate, standalone applications. For example, the third-party applications may be document editors, collaborative whiteboards, infinite canvas design applications, ticketing systems, or any other applications usable by one or more users of the group-based communication system.
[0042] As discussed above, it is desirable for a third-party integration to be able to provide a customized user experience for the user, so when a user first accesses a third-party integration, a controller may be created as described above with respect to Figure 3. Using that controller, the third-party integration can leverage a group-based set of communication system objects that the user has access to.
[0043] For example, if the third-party integration is a document editing platform (as shown), the third-party application may enable an auto-complete feature for group-based communication system objects. For example, when a user of the third-party application begins typing an identifier for the group-based communication system object (such as a username or channel name, as shown), an auto-complete box 406 may pop up to display options from which the user can select. In some embodiments, a user of the third-party integration may select an option in the auto-complete box 406 to select the group-based communication system object. In further embodiments, only group-based communication system objects for which the user has access permissions may appear in the auto-complete box 406.
[0044] Similarly, a third-party integration may display information from a group-based communication system, such as channels, emojis, files, document workflows, or users. For example, in some embodiments, a third-party application may display information such as a user's username. In some such embodiments, clicking on a channel or user's name in a third-party integration may display a direct messaging interface with that channel or user in the channel pane 402. For example, if the third-party integration is a ticketing system, a user may click on the name of a user reporting a ticket to start a direct messaging conversation with that user. In further embodiments, hovering the cursor over a user's name may display the user's status.
[0045] In further embodiments, third-party applications may display group-based communication system objects in the same manner as the group-based communication system displays objects natively. For example, a user may embed a group-based communication system message, thread, or other object into a document being edited. For example, continuing with the ticketing system example above, a user may embed a direct messaging conversation with a reporting user directly into a ticket for future reference. As described above, the user may be able to continue that conversation directly from a third-party integration, if desired. Broadly speaking, embodiments of the present invention contemplate providing third-party integration access to any operation of any group-based communication system object.
[0046] FIG. 5 shows an example flowchart illustrating the operation of a method 500 for collaboration between a group-based communication system and a third-party application. In some embodiments, method 500 enables a third-party integration to communicate with the group-based communication system and access objects from within the group-based communication system. At step 502, a request to a collaboration controller is received. In some embodiments, the request may be received at a group-based communication system server and originate from a third-party server corresponding to the third-party integration. For example, the third-party integration may be a web-based application that includes document creation and editing, and a user of the web-based application may wish to insert information from the group-based communication system into the document. In some embodiments, the request to the collaboration controller may include configuration settings. For example, the request may include information regarding how the collaboration controller should be displayed, such as whether to display the collaboration controller in a light mode, a dark mode, and / or a high-contrast mode. In further embodiments, an authorization token may be included in the request. For example, an authenticated user of the group-based communication system may request and receive a login token to the group-based communication system that validates the user, which the user can provide to the third-party server to authorize the third-party server to access the user's objects on the user's behalf.
[0047] In step 504, the collaboration controller is initialized. In some embodiments, the collaboration controller may remain with the third-party integration. In further embodiments, the collaboration controller may be sent to the user (e.g., as JavaScript or other client-side code). The collaboration controller may allow the user to obtain information from the group-based communication system. In some embodiments, the collaboration controller may function for a predetermined amount of time, as controlled by an authentication token. In further embodiments, the amount of time the collaboration controller functions may be determined based on the third-party integration. For example, the third-party integration may be considered more secure, such that the group-based communication system allows the collaboration controller to function for a longer period of time. In some embodiments, the collaboration controller may be automatically reset if the user has appropriate permissions.
[0048] In step 506, a request for a group-based communication system object is received. In some embodiments, the request may be for two or more group-based communication system objects. In some embodiments, a URL or other globally unique identifier for the group-based communication system object is received. In further embodiments, the request may be a partial request for the group-based communication system object. For example, a user may not know the name of the object and may begin typing part of the name, hoping to be provided with auto-complete results. In some embodiments, the request includes information about the user requesting the object. For example, the request may include information about the permissions of the user's account on the group-based communication system. In some embodiments, the request for the object may be sent via a keyboard shortcut.
[0049] In step 508, permissions for a group-based communication system object are determined. In some embodiments, permissions are determined based in part on the group-based communication system account of the user requesting the object. For example, if the user has access to the object on the group-based communication system, the user is given permission to search for the object. In further embodiments, permissions may vary based on how the user is requesting access to the object. For example, a channel in the group-based communication system may contain sensitive information, and the channel may be configured to not allow sharing to third-party integrations.
[0050] In step 510, the group-based communication system object is transmitted. In some embodiments, the group-based communication system object is transmitted from the group-based communication system to the third-party integration. The group-based communication system object may be transmitted as information related to the object or as a pointer to the object. In some embodiments, multiple group-based communication system objects may be transmitted. In further embodiments, a listener may be transmitted with the group-based communication system object so that if any changes are made to the object from within the group-based communication system, the group-based communication system object may be automatically updated in the third-party integration. For example, the group-based communication system object may be a user who later changes its status. This status update may be automatically transmitted to the third-party integration so that the new status appears in the third-party integration.
[0051] FIG. 6 illustrates an exemplary system architecture diagram for implementing some embodiments of the present invention. A client 600 is shown, which may be a computer, a mobile device, or any other means of accessing servers and applications. The client 600 may communicate with a host server 614 and a third-party server 616. In some embodiments, the client 600 may include a host page 602 and a controller frame 612. The host page 602 is referred to herein as a “page” for simplicity, although embodiments in which the host page 602 is instead a host frame are also contemplated. The host page 602 provides a further advantage of the present invention by allowing complex user interfaces from third-party applications to be embedded within the host frame 602. For example, as illustrated, one or more view frames 610 are embedded in the host page 602 as iframes and passed to the controller as a rendering surface. This avoids the complexity required to embed complex user interfaces and user interface elements directly into the host page 602 and the need to deal with JavaScript encapsulation issues, Cascading Style Sheets issues, and general interoperability issues that arise if the user interface is embedded directly into the host page 602. Such an approach also provides a consistent user interface for third-party applications that is consistent with external implementations of the group-based communication system. In some embodiments, the host page 602 may include a host JavaScript 604, a collaboration SDK 606, and a document component 608. The host page 602 may be part of or embedded within the group-based communication system.
[0052] In some embodiments, host JavaScript 604 may be used to display standard group-based communication system components. Host JavaScript 604 may interface with collaboration SDK 606 to coordinate the display of document components 608. In some embodiments, collaboration SDK 606 may communicate with host server 614 (which in some embodiments may be group-based communication system server 158) to obtain and store authorization tokens on client 600. In further embodiments, collaboration SDK 606 communicates with document components 608 to coordinate the display. In yet another embodiment, collaboration SDK 606 may communicate with multiple document components 608 simultaneously. Collaboration SDK 606 may also communicate with controller frame 612 to coordinate setting and configuration information coming from third-party server 616. In some embodiments, collaboration SDK 606 may include a platform delegate interface provided by client 600 to allow overrides of behavior over which client 600 may want more control. For example, the platform delegate may enable additional functionality specific to the client 600, such as interaction with the user of the client 600, including functionality that requires cooperation from the client 600, such as navigation.
[0053] In some embodiments, the document component 608 may include a view frame 610. The view frame 610 may directly render user interface elements such that the user interface elements are natively embedded within the document component 608. In some embodiments, the view frame 610 may be an iframe that the client 600 uses as a rendering surface. The view frame 610 may communicate directly with the controller frame 612 to determine how the user interface and associated components should be rendered. In some embodiments, elements from the client 600 may be displayed within the view frame 610. The view frame 610 may be customized and configured based on the collaboration SDK 606. For example, the user interface may be rendered to correspond to other user interface elements displayed within the client 600. In some embodiments, the view frame 610 is not directly exposed to the client 600.
[0054] The third-party server 616 provides external functionality to the third-party integration 304. For example, the third-party server 616 may simply provide Hypertext Markup Language (HTML) and JavaScript (JS) code for the embedded iframe. Alternatively, the third-party server 616 may provide other functionality. For example, if the third-party application is a document editing platform, the third-party server 616 may provide functionality such as cloud storage, collaborative document editing, and document synchronization by communicating with the third-party integration 304. In some embodiments, the third-party server 616 may communicate directly with the host server 614. For example, the host server 614 and the third-party server 616 may communicate to check or update access control lists, such as determining whether a particular user has appropriate permissions to access a particular resource. The third-party server 616 may also communicate with the controller frame 612. In some embodiments, the controller frame 612 may reside within the client 600 and serve as the primary means for communicating with the third-party server 616. For example, the third-party server 616 may push changes to the controller frame 612 via web sockets, and the controller frame 612 may load the data onto the third-party server 616. Changes that a user makes within the view frame 610 may be communicated to the third-party server 616 to store the changes to the data or to otherwise back up the data in a safe and secure location. In some embodiments, documents created within the client 600 using the collaboration SDK 606 may be stored natively within the third-party server 616.
[0055] The features described above and claimed below can be combined in various ways without departing from the scope of the present invention. The following examples illustrate some possible non-limiting combinations.
[0056] (A1) One or more non-transitory computer-readable media having stored thereon computer-executable instructions that, when executed by a processor, perform a method for collaboration in a group-based communication system via third-party integration, the method including: receiving a first request from the third-party integration to initialize a new collaboration instance controller, the first request including configuration settings and an indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third-party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining, based on the indicia of access rights, that the third-party integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the third-party integration.
[0057] (A2) For the non-transitory computer-readable medium represented as (A1), third-party integration enables one or more third-party objects to be natively displayed within the group-based communication system.
[0058] (A3) For the non-transitory computer-readable medium represented as (A1) or (A2), the one or more group-based communication system objects are a channel, a workspace, a user, a file, or an emoji.
[0059] (A4) For the non-transitory computer-readable medium represented as any of (A1) to (A3), the third-party integration is performed within a client of the group-based communication system.
[0060] (A5) For the non-transitory computer-readable medium represented as any of (A1) to (A4), the one or more group-based communication system objects include a document, and the sending to the third-party integration step further includes instructions for natively displaying the document.
[0061] (A6) For a non-transitory computer-readable medium represented as any of (A1) to (A5), the first request to initialize the new collaboration instance controller further includes an authorization token, and the step of initializing the new collaboration instance controller is further based on validating the authorization token.
[0062] (A7) For a non-transitory computer-readable medium represented as any of (A1) to (A6), further including the steps of detecting an update to at least one of the one or more group-based communication system objects, and transmitting the update to at least one of the one or more group-based communication system objects to a third-party integration.
[0063] (B1) A method for collaboration in a group-based communication system via a third-party integration, the method including the steps of: receiving a first request from a third-party integration to initialize a new collaboration instance controller, the first request including configuration settings and an indication of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third-party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining based on the access rights indication that the third-party integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the third-party integration.
[0064] (B2) For the method depicted as (B1), third-party integration allows one or more third-party objects to be natively displayed within the group-based communication system.
[0065] (B3) For the method represented as (B1) or (B2), the one or more group-based communication system objects are a channel, a workspace, a user, a file, or an emoji.
[0066] (B4) For the method represented as any of (B1) to (B3), the third-party integration is performed within a client of the group-based communication system.
[0067] (B5) For the method represented as any of (B1) to (B4), the one or more group-based communication system objects include a document, and the step of sending to the third-party integration further includes instructions for natively displaying the document.
[0068] (B6) For the method represented as any of (B1) to (B5), the first request to initialize the new collaboration instance controller further includes an authorization token, and the step of initializing the new collaboration instance controller is further based on validating the authorization token.
[0069] (B7) For the method represented as any of (B1) to (B6), further including the steps of detecting an update to at least one of the one or more group-based communication system objects, and sending the update to the at least one of the one or more group-based communication system objects to a third-party integration.
[0070] (C1) A system for collaboration in a group-based communication system via third-party integration, comprising: a data store associated with the group-based communication system; and a processor programmed to execute a method for collaboration in a group-based communication system via third-party integration, the method including: receiving a first request from the third-party integration to initialize a new collaboration instance controller, the first request including configuration settings and an indication of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third-party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining based on the access rights indication that the third-party integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the third-party integration.
[0071] (C2) For the system represented as (C1), third-party integration allows one or more third-party objects to be natively displayed within the group-based communication system.
[0072] (C3) For systems represented as (C1) or (C2), the third-party integration is performed within the client of the group-based communication system.
[0073] (C4) For a system represented as any of (C1) to (C3), the one or more group-based communication system objects include a document, and the sending to the third-party integration step further includes instructions for natively displaying the document.
[0074] (C5) For a system represented as any of (C1) to (C4), the first request to initialize the new collaboration instance controller further includes an authorization token, and the step of initializing the new collaboration instance controller is further based on validating the authorization token.
[0075] (C6) For a system represented as any of (C1) to (C5), the method further includes detecting an update to at least one of the one or more group-based communication system objects; and transmitting the update to the at least one of the one or more group-based communication system objects to a third-party integration.
[0076] Although the present invention has been described with reference to the embodiments illustrated in the accompanying drawings, it should be noted that equivalents may be used and substitutions may be made herein without departing from the scope of the invention as set forth in the claims.
[0077] Having thus described various embodiments of the present invention, what is claimed to be new and desired to be protected by Letters Patent includes the following:
Claims
1. 1. One or more non-transitory computer-readable media having stored thereon computer-executable instructions that, when executed by a processor, perform a method for collaboration in a group-based communication system via third-party integration, the method comprising: receiving a first request from the third-party integration to initialize a new collaboration instance controller, the first request including configuration settings and indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third-party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining, based on the access right indicia, that the third-party integration has permission to access the one or more group-based communication system objects; sending the one or more group-based communication system objects to the third-party integration; 1. A non-transitory computer-readable medium comprising:
2. The non-transitory computer-readable medium of claim 1 , wherein the third-party integration enables one or more third-party objects to be displayed as native user interface elements within the group-based communication system.
3. The non-transitory computer-readable medium of claim 1 , wherein the one or more group-based communication system objects are a channel, a workspace, a user, a file, or an emoji.
4. The non-transitory computer-readable medium of claim 1 , wherein the third-party integration is performed within a client of the group-based communication system.
5. 10. The non-transitory computer-readable medium of claim 1, wherein the one or more group-based communication system objects include a document, and wherein the sending to the third-party integration step further includes instructions for displaying the document as a native user interface element.
6. 2. The non-transitory computer-readable medium of claim 1, wherein the first request to initialize the new collaboration instance controller further includes an authorization token, and wherein initializing the new collaboration instance controller is further based on validating the authorization token.
7. detecting updates to at least one of the one or more group-based communication system objects; sending the update of the at least one of the one or more group-based communication system objects to the third-party integration; The non-transitory computer-readable medium of claim 1 , further comprising:
8. 1. A method for collaboration in a group-based communication system via third-party integration, comprising: receiving a first request from the third-party integration to initialize a new collaboration instance controller, the first request including configuration settings and indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third-party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining, based on the access right indicia, that the third-party integration has permission to access the one or more group-based communication system objects; sending the one or more group-based communication system objects to the third-party integration; A method comprising:
9. The method of claim 8 , wherein the third-party integration enables one or more third-party objects to be displayed as native user interface elements within the group-based communication system.
10. The method of claim 8 , wherein the one or more group-based communication system objects are a channel, a workspace, a user, a file, or an emoji.
11. The method of claim 8 , wherein the third-party integration is performed within a client of the group-based communication system.
12. The method of claim 8 , wherein the one or more group-based communication system objects include a document, and the sending to the third-party integration step further includes instructions for displaying the document as a native user interface element.
13. The method of claim 8 , wherein the first request to initialize the new collaboration instance controller further includes an authorization token, and wherein initializing the new collaboration instance controller is further based on validating the authorization token.
14. detecting updates to at least one of the one or more group-based communication system objects; sending the update of the at least one of the one or more group-based communication system objects to the third-party integration; The method of claim 8 further comprising:
15. 1. A system for collaboration in a group-based communication system via third-party integration, comprising: a data store associated with the group-based communication system; a processor programmed to execute the method for collaboration in the group-based communication system via third-party integration; The method comprises: receiving a first request from the third-party integration to initialize a new collaboration instance controller, the first request including configuration settings and indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third-party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining, based on the access right indicia, that the third-party integration has permission to access the one or more group-based communication system objects; sending the one or more group-based communication system objects to the third-party integration; Including, the system.
16. The system of claim 15 , wherein the third-party integration enables one or more third-party objects to be displayed as native user interface elements within the group-based communication system.
17. The system of claim 15 , wherein the third-party integration is performed within a client of the group-based communication system.
18. 16. The system of claim 15, wherein the one or more group-based communication system objects include a document, and wherein the sending to the third-party integration step further includes instructions for displaying the document as a native user interface element.
19. 16. The system of claim 15, wherein the first request to initialize the new collaboration instance controller further includes an authorization token, and wherein initializing the new collaboration instance controller is further based on validating the authorization token.
20. The method comprises: detecting updates to at least one of the one or more group-based communication system objects; sending the update of the at least one of the one or more group-based communication system objects to the third-party integration; The system of claim 15 further comprising:
Citation Information
Patent Citations
Method, apparatus, and computer program product for selectively granting permissions to group-based objects in a group-based communication system
JP2021509746A
System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
US20140258972A1