Group-based collaboration systems allow users to interact and work collaboratively to provide high levels of efficiency and creativity. These group-based communication systems offer a variety of tools for synchronous and asynchronous work which allow organizations to work effectively both in person and remotely. However, these tools may be inaccessible to users outside of the group-based collaboration systems. Additionally, third-party integrations may provide tools not available within the group-based communication system which could benefit from access to objects within the group-based communication system. Accordingly, what is needed is a way to allow third-party integrations and other third-party applications and to securely access objects from the group-based communication system.
Embodiments of the invention solve the above-mentioned problems by providing systems, methods, and computer-readable media for collaboration in a group-based communication system via a third-party integration. In some embodiments, the group-based communication system receives a request to initialize a collaboration instance controller from a third-party. This request may include configuration settings and information related to the access rights associated with a user of the group-based communication system, such as the user's login information for the group-based communication system. If the information is accepted, the group-based communication system may initialize the collaboration instance controller and provide it to the third party. Via the collaboration instance controller, the third party may request objects within the group-based communication system. If it is determined that the access rights provide access to the requested objects, the objects may be transmitted to the third party.
A first embodiment of the invention is directed to one or more non-transitory computer-readable media storing computer-executable instructions that, when executed by a processor, perform a method for collaboration in a group-based communication system via a integration, the method comprising receiving a first request to initialize a new collaboration instance controller from the integration, wherein the first request includes 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 integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller, determining that the integration has permission to access the one or more group-based communication system objects based on the indicia of access rights, and transmitting to the integration the one or more group-based communication system objects.
A second embodiment of the invention is directed to a method for collaboration in a group-based communication system via a integration, the method comprising receiving a first request to initialize a new collaboration instance controller from the integration, wherein the first request includes 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 integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller, determining that the integration has permission to access the one or more group-based communication system objects based on the indicia of access rights, and transmitting to the integration the one or more group-based communication system objects.
A third embodiment of the invention is directed to a system for collaboration in a group-based communication system via a integration, the system comprising a data store associated with the group-based communication system, and a processor programmed to perform a method for collaboration in a group-based communication system via a integration, the method comprising receiving a first request to initialize a new collaboration instance controller from the integration, wherein the first request includes 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 integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller, determining that the integration has permission to access the one or more group-based communication system objects based on the indicia of access rights, and transmitting to the integration the one or more group-based communication system objects.
Additional embodiments of the 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, wherein the machine learning model is trained using historic user data associated with the group-based communication system. In some such embodiments, the training of the machine learning model may be updated periodically based on use of triggers and automated workflows within the group-based communication system such that the accuracy of the suggestions improves over time.
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 invention will be apparent from the following detailed description of the embodiments and the accompanying drawing figures.
Embodiments of the invention are described in detail below with reference to the attached drawing figures, wherein:
The drawing figures do not limit the invention to the specific embodiments disclosed and described herein. The drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the invention.
Context and Concepts of the Invention
As used herein, the term “group-based communication system” refers to a collaborative communication system used within an organization and is distinct from a conventional email system. In some embodiments, the group-based communication system is a channel-based platform. Within the group-based communication system, communication may be organized into “channels,” each dedicated to a particular topic or set of users. Channels are generally long-lasting, persistent discussions of a particular topic. Members of a particular channel can post messages within that channel that are visible to other members of that channel together with other messages in that channel. Users may select a channel for viewing in order to see only those messages relevant to the topic of that channel without seeing messages posted in other channels on different topics. For example, a software development company may have different channels for each software product being developed, where developers working on each particular project can converse without bothering (or being bothered by) developers working on other projects. Because the channels are generally persistent and directed to a particular topic or group, users can quickly and easily refer back to previous communications for reference.
In some embodiments, the group-based communication system may include synchronous multimedia collaboration sessions. 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 disrupting the synchronous multimedia collaboration session for other users. In some embodiments, synchronous multimedia collaboration sessions may be based around a particular topic, a particular channel, or a set of users, while in other embodiments, synchronous multimedia collaboration sessions may exist without being tied to any particular channel, topic or set of users. Synchronous multimedia collaboration sessions may be short, ephemeral sessions from which no data is persisted. Alternatively, in some embodiments, synchronous multimedia collaboration sessions may be recorded, transcribed, and/or summarized for later review. Members of a particular synchronous multimedia collaboration session can post messages within a messaging thread associated with that synchronous multimedia collaboration session that are visible to other members of that synchronous multimedia collaboration session together with other messages in that thread. The “multimedia” in a synchronous multimedia collaboration session may include any or all of audio, video, screen sharing, collaborative document editing, whiteboarding, co-programming or any other form of media. A synchronous multimedia collaboration session may be started 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 start a synchronous multimedia collaboration session in a channel as a means of communicating with other members of that channel who are presently online. The user may have an urgent decision and want immediate verbal feedback from other members of the channel. Starting a synchronous multimedia collaboration session allows the user to start an immediate audio conversation with other members of the channel without requiring scheduling.
Communication data within 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 prioritizations such as by pinning or starring), tickets, channels, applications integrated into one or more channels, conversations (e.g., groups of messages that have been segmented as single units), workspaces (e.g., sets of channels, users, projects, tasks within an organization that may have their own sets of permissions and that may be organized substantially in line with an organization chart in some instances) or other data generated by or shared between users of the group-based communication system that are associated with an organization's communication data using the group-based communication system.
In some instances, the communication data may comprise data associated with a 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, or the like) with which the user is associated, an indication of whether the user is an owner or manager of any communication channels, an indication of whether the user has any communication channel restrictions, a plurality of messages, a plurality of emoji, 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 permissions data associated with permissions of individual users of the group-based communication system. In some embodiments, permissions associated with an individual user can be mapped to, or otherwise associated with, an account or profile associated with user data. Permissions can indicate which users can communicate directly with other users, which channels a user is permitted to access, restrictions on individual channels, which workspaces the user is permitted to access, and restrictions on individual workspaces, for example. In some embodiments, the permissions can support the group-based communication system by maintaining security for limiting access to a defined group of users. In some such embodiments, such users can be defined by common access credentials, group identifiers, or other criteria, as described above.
In some embodiments, the group-based communication system can be partitioned into different workspaces, which can be associated with different groups of users. 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. Users corresponding to such user identifiers may be referred to as “members” of the group. A workspace may comprise one or more channels that are unique to that workspace and/or one or more channels that are shared between one or more workspaces. In some embodiments, workspaces can be associated with one or more organization identifiers, which can be associated with organizations or other entities associated with the group-based communication system. In some embodiments, such data can be mapped to, or otherwise associated with, other types of data (e.g., user data, permission data, or channel data).
The subject matter of the invention is described in detail below to meet statutory requirements; however, the description itself is not intended to limit the scope of claims. Rather, the claimed subject matter might be embodied in other ways to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies. Minor variations from the description below will be understood by one skilled in the art and are intended to be captured within the scope of the claimed invention. Terms should not be interpreted as implying any particular ordering of various steps described unless the order of individual steps is explicitly described.
The following detailed description of embodiments of the invention references the accompanying drawings that illustrate specific embodiments in which the invention can be practiced. The embodiments are intended to describe aspects of the invention in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments can be utilized, and changes can be made without departing from the scope of the invention. The following detailed description is, therefore, not to be taken in a limiting sense. The scope of embodiments of the invention is defined only by the appended claims, along with the full scope of equivalents to which such claims are entitled.
In this description, references to “one embodiment,” “an embodiment,” or “embodiments” mean that the feature or features being referred to are included in at least one embodiment of the technology. Separate reference to “one embodiment” “an embodiment”, or “embodiments” in this description do not necessarily refer to the same embodiment and are also not mutually exclusive unless so stated and/or except as will be readily apparent to those skilled in the art from the description. For example, a feature, structure, or act described in one embodiment may also be included in other embodiments but is not necessarily included. Thus, the technology can include a variety of combinations and/or integrations of the embodiments described herein.
Operational Environment for Embodiments of the Invention
Computer-readable media include both volatile and nonvolatile media, removable and nonremovable media, and contemplate media readable by a database. For example, computer-readable media include (but are not limited to) RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile discs (DVD), holographic media or other optical disc storage, magnetic cassettes, magnetic tape, magnetic disk storage, and other magnetic storage devices. These technologies can store data temporarily or permanently. However, unless explicitly specified otherwise, the term “computer-readable media” should not be construed to include physical, but transitory, forms of signal transmission such as radio broadcasts, electrical signals through a wire, or light pulses through a fiber-optic cable. Examples of stored information include computer-useable instructions, data structures, program modules, and other data representations.
Finally, network interface card (NIC) 124 is also attached to system bus 104 and allows computer 102 to communicate over a network such as network 126. 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). NIC 124 connects computer 102 to local network 126, which may also include one or more other computers, such as computer 128, and network storage, such as data store 130. Generally, a data store such as data store 130 may be any repository from which information can be stored and retrieved 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. A data store may be accessible via a complex API (such as, for example, Structured Query Language), a simple API providing only read, write, and seek operations, or any level of complexity in between. Some data stores may additionally provide management functionality for data sets stored therein such as backup or versioning. Data stores can be local to a single computer such as computer 128, accessible on a local network such as local network 126, or remotely accessible over Internet 132. Local network 126 is in turn connected to Internet 132, which connects many networks such as local network 126, remote network 134 or directly attached computers such as computer 136. In some embodiments, computer 102 can itself be directly connected to Internet 132.
The system further comprises a group-based communication system server 158 that acts 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 discussed above with respect to
It should be understood that the group-based communication system as referred to herein may provide a communication platform for a plurality of users. Wherein each user may be associated with a specific organization. Said specific organization may be a small business, a corporation, or the like, as well as 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 can be provided for a plurality of users from a single organization, as well as a plurality of users from a plurality of organizations. In some embodiments, a plurality of channels is present 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. Further, users within the 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. Further, 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 follow that organization's security policy, in which only administrators can add users to certain channels.
Group-based communication system data store 162 is communicatively connected to group-based communication system server 158. As depicted, group-based communication system data store 162 is directly connected to group-based communication system server 158; however, any form of communicative connection (for example, network-attached storage (NAS), a network file system (NFS), or cloud-based storage) can be employed. Broadly speaking, group-based communication system data store 162 stores all of the information used by group-based communication system server 158. For example, group-based communication system data store 162 may store all of the messages with their associated channels, documents and images uploaded to particular channels, channel membership information, and/or user information. As previously discussed, 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-attached group-based communication system data store. Alternatively, or in addition, in any of these embodiments, data may be shared across multiple group-based communication system data stores.
The system further comprises a third-party integration server 164 that acts as a host for one or more third-party applications and/or third-party integrations (collectively, “third-party integrations” for brevity). While the term “third-party integration” is used for convenience in this Specification, third-party integrations may also be provided by the same party providing 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 discussed above with respect to
It should be understood that any of the client devices 152, 154, and 156, and the group-based communication system server 158 may comprise a processor, such as CPU 106 described with respect to
As depicted, parent window 200 includes workspace pane 202 for navigating between various workspaces in the group-based communication system. In some embodiments, the group-based communication system can be portioned into different workspaces, which can be associated with different groups of users. 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. Users corresponding to such user identifiers may be referred to as “members” of the group. For example, a user may be a part of a workspace for a job at Acme Software Development. The user may also be a member of a local volunteer organization that also uses the group-based communication system to collaborate. To navigate between the two groups, the user may use workspace pane 202 to change from the Acme workspace to the volunteer organization workspace. A workspace may comprise one or more channels that are unique to that workspace and/or one or more channels that are shared between one or more workspaces. For example, the Acme company may have a workspace for Acme software development projects, a workspace for Human Resources, and an additional workspace for general company matters. In some embodiments, workspaces can be associated with one or more organizations or other entities associated with the group-based communication system.
As depicted, parent window 200 further comprises document pane 210 that comprises information related to the current displayed document. In some embodiments, a group-based communication system channel pane (not depicted) is displayed together with document pane 210. In some embodiments, within the group-based communication system, documents may be modified and edited by one or more users. Users with the appropriate permissions and access can view, edit, or comment on the documents. Document pane 210 may comprise document toolbar 212, document controls 214, and document display 216. Document display 216 may display all of the content within the document including unstructured sections 218 and structured sections 220. The functionality of document editing pane 210 may be provided by the group-based communication system or by a third-party integration. Although a word-processing document is depicted in document editing pane 210, and type of document is contemplated for use with the 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. Channel list pane 204 may comprise a list of channels and documents to which the user has subscribed to or to which the user has been granted access or permissions to. Users can switch the currently displayed document to either another document, a channel, or a direct message by selecting another item in channel list pane 204.
In some embodiments, channel list pane 204 further includes direct message list 208. Direct message list 208 comprises a list of messages sent from a user directly to another user of the group-based communication system, called a direct message, and may be displayed in document pane 210 when selected. Direct messages may be sent to at least one other user. For example, the user may have a question for a manager, so the user may send a direct message to the manager asking the question. The manager may want to include another member of the group-based communication system in a response, so the manager may create a direct message group that includes the user and the other member of the group-based communication system. Direct messages may be sent to any number of users as multi-person direct messages. In some embodiments, direct messages can be sent to users within an organization, users outside of the organization, users of third-party applications, and/or any variety of users.
Document pane 210 may include document toolbar 212, which may display icons and menus which allow for the formatting of a document. For example, document toolbar 212 may provide a user the ability to bold, italicize, or underline fonts. In some embodiments, document toolbar 212 may provide users the ability to undo and redo actions. In further embodiments, document toolbar 212 may allow a user to modify the color of text. In still further embodiments, document toolbar 212 may allow a user to insert images, tables, and/or workflows. Document pane 210 may also display metadata for the currently selected document, including document name. Document pane 210 may also include document controls 214 for viewing members with access to the document, inviting a new member to the document, viewing information about the document, or other document-related functions. For example, document controls 214 may display icons indicating which users are currently viewing the document. In some embodiments, document pane 210 may display a workflow status which indicates which workflow step the workflow is currently on. For example, a workflow status may show that the document is currently in the process of an approval workflow step and the document is awaiting approval from a specific user. In further embodiments, the workflow status may show a summary of information within the workflow document. For example, the workflow document may include a table for users to insert their shirt size, and the workflow status may include a summary of the number of shirts of each size that were entered into the table.
Parent window 200 may also include search pane 222. Search pane 222 may allow users to search for content located in the current workspace of the group-based communication system. In some embodiments, the content searched may include documents. For example, a user may be looking for text within a document the user had previously accessed. In other embodiments, a user may search for meta content within the document, such as the name of workflows, workflow steps, or workflow tags, or the name of a user who created the document. The user may not remember which document the text was in, so the user may search for the text in search pane 222. In some embodiments, a user may only be able to search for documents that a user has permission to view. For example, if a document was not previously shared with a user, the document may not show up in the search results. In further embodiments, a user may have access to the document generally, but not to one or more specific sections of a document. In this instance, the user may only search based on content within the document that the user has permission to access. Users are not limited to searching within documents and may also search for messages, channels, members, and the like.
Document display 216 may display the selected document. In some embodiments, a user of the group-based communication system may edit the document if they have sufficient permissions. In further embodiments, a user of the group-based communication system may leave comments on the document. Documents may comprise free-form unstructured sections 218 and workflow-related structured sections 220. In some embodiments, unstructured sections 218 may include areas of the document in which a user can freely modify the document without any constraints. For example, a user may be able to freely type text to explain the purpose of the document. In some embodiments, a user may add a workflow by typing the name of or otherwise mentioning the workflow. In further embodiments, typing the at sign or a previously selected symbol or a previously determined special character or symbol may provide the user with a list of workflows which the user can select to add to the document. For example, a user may realize that a marketing team may need to sign off on a proposal and type “!Marketing Approval” to initiate a workflow which culminates in a member of the marketing team approving the proposal. In some embodiments, structured sections 220 may include text entry, selection menus, tables, checkboxes, tasks, calendar events, or any other document section. In further embodiments, structured sections may include text entry spaces which are a part of a workflow. For example, a user may enter text into a text entry space detailing a reason for approval, and then select a submit button which will advance the workflow to the next step of the workflow. In some embodiments, the user may be able to add, edit, or remove structured sections of the document that make up the workflow components.
Initially, an authenticated client 302 may send message 310 including a request to access third-party integration 304, where the authentication protocol between client 302 and group-based communication system server 306 is not depicted but may take place before or after message 310 is sent. Message 310 requests that third-party integration 304 initiate an integration interface with group-based communication system server 306. Message 310 may be sent in response to a user selecting to initiate a third-party integration within group-based communication system server 306. In some embodiments, the user has previously authorized the third-party integration to access their data. For example, the user may have previously authorized the third-party integration to utilize the user's credentials and thus 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 permission is stored by the group-based communication system server. In other embodiments, authorization occurs in response to the initiation of the integration controller. Such authorization by the user grants the third-party integration permission to access some or all group-based communication objects accessible to the user on their behalf. In response to message 310 requesting integration access, third-party integration 304 may reply with message 315 including an authentication request. Message 315 may ask for a user of client 302 to confirm that the user has appropriate access rights to the group-based communication system and/or request an authentication token allowing the third-party access to group-based communication system server 306 on the user's behalf. In some embodiments, the authentication token provides indicia (such as a manifest) of the set of objects to which access should be granted.
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 their login credentials that the user would ordinarily use to login to the group-based communication system. If message 320 is approved, the group-based communication system server 306 may send message 325 including a reply with a group-based communication system login token. In some embodiments, message 325 may be approved if the 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 select users of the group-based communication system may be permitted to access objects from within the group-based communication system through certain third-party applications. For example, the group-based communication system may approve requests from specific third-party applications which meet the security standards 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.
In response to receiving the group-based communication system login token, client 302 may provide authentication response 330 with the login token to the third-party integration 304. Using the login token, third-party integration 304 may send message 335 including a request for a controller using the login token to group-based communication system server 306. The controller may load data from third-party integration 304 and provide it to client 302, thereby permitting client 302 to access third-party data and UI controls provided by the third-party integration 304 without exposing the data of the group-based communication system directly. The controller can assist client 302 in rendering user interface objects associated with the third-party application such that the user interfaces rendered in the client are consistent with the user interfaces in the third-party integration. The controller also allows the client to leverage user interfaces provided by the third-party application so that the client does not have to implement its own version of the user interface associated with the third-party application. This is beneficial in reducing duplicate code that will need to be updated whenever the third-party integration code is updated. The controller can also assist client 302 in communication with third-party integration 304, such as assisting with configuration settings such that the configuration of the user interface rendered in the client is consistent with that of the third-party application. In some embodiments, message 335 may originate from client 302 and be sent to third-party integration 304. In further embodiments, the controller may be stored within client 302 directly. Message 335 may include the authentication information for a user of the group-based communication system and requests access rights for objects within the group-based communication system to which the user would ordinarily have access or to which the user has granted access. If the group-based communication system approves the request, it will send message 340 containing a reply with the controller back to third-party integration 304.
Once third-party integration 304 has an initialized controller, client 302 can proceed to interact with the third-party integration. Client 302 may send a message 345 including user input to the integration to third-party integration 304. For example, a user may wish to reference a channel from within the group-based communication system and input an identifier of the channel into a document on the third-party application. Third-party integration 304 may translate message 345 including user input to the integration into message 350 including a request for group-based communication system objects using the integration controller. For example, the third-party application may send a request for the list of all channels within the group-based communication system that correspond to a user's input and to which the user has (or has granted) access. Part or all of this list can then be provided in an autocomplete list, as shown below with respect to
In some embodiments, if group-based communication system server 306 detects a change to the group-based communication system object that was previously provided to the third-party application, group-based communication system server 306 may proactively send message 365 including an update to the one or more group-based communication system objects previously sent. Message 365 may provide third-party integration 304 with instructions 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.
Third-party integration pane 404 comprises information related to a third-party integration. In some embodiments, the third-party integration may be incorporated into the group-based communication system. In further embodiments the third-party integration may be a separate standalone application. For example, a third-party application may be a document editor, a collaborative whiteboard, an infinite canvas design application, a ticketing system, or any other application usable by one or more users of the group-based communication system.
As described above, it is desirable for the third-party integration to be able to provide a user experience customized for the user. As such, when the user first accesses the third-party integration, it may create a controller as described above with respect to
For example, if (as depicted) the third-party integration is a document editing platform, third-party applications may allow autocomplete functionality for group-based communication system objects. For example, if a user of the third-party application starts typing an identifier (such as a username or a channel name, as depicted) for a group-based communication system object, autocomplete box 406 may pop up to display possible options for the user to select. In some embodiments, the user of the third-party integration may select an option in autocomplete box 406 to select the group-based communication system object. In further embodiments, only group-based communication system objects that the user has permission to access may appear in autocomplete box 406.
Similarly, the third-party integration may display information from the group-based communication system such as channels, emojis, files, documents workflows, or users. For example, in some embodiments, the third-party application may display information such as the username of a user. In some such embodiments, clicking on the name of a channel or user in the third-party integration, may cause that channel or a direct messaging interface with that user to be displayed channel pane 402. For example, if the third-party integration is a ticketing system, then the user may be able to click on the name of the user reporting the ticket to initiate a direct messaging conversation with them. In further embodiments, hovering over the name of the user may display the status of the user.
In still further embodiments, the third-party application may display group-based communication system objects the same way as the group-based communication system displays objects natively. For example, users may embed group-based communication system messages, threads, or other objects in a document being edited. For example, continuing the example above of a ticketing system, a user might embed a direct-messaging conversation with a reporting user directly into a ticket for future reference. As described above, the user may be then able to continue that conversation directly from the third-party integration if desired. Broadly speaking, embodiments of the invention contemplate providing third-party integrations access to any operation of any group-based communication system object.
At step 504, the collaboration controller is initialized. In some embodiments, the collaboration controller may remain at the third-party integration. In further embodiments, the collaboration controller may be transmitted to the user (as, for example, JavaScript or other client-side code). The collaboration controller may enable 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 the authentication token. In further embodiments, the amount of time the collaboration controller functions may be determined based on the third-party integration. For example, a third-party integration may be thought of as 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 automatically be reset if the user has the appropriate permissions.
At step 506, a request for a group-based communication system object is received. In some embodiments, the request may be for more than one group-based communication system object. In some embodiments, a URL or other globally unique identifier for a group-based communication system object is received. In further embodiments, the request may be a partial request for a group-based communication system object. For example, the user may not know the name of the object and may start typing part of the name with the expectation that they will be provided with autocomplete results. In some embodiments, the request includes information related to the user who is requesting the object. For example, the request may include information related to the permissions of the user's account on the group-based communication system. In some embodiments, the request for an object may be sent via keyboard shortcuts.
At step 508, permissions for the one group-based communication system object are determined. In some embodiments, the permissions are determined based in part on the group-based communication system account of the user requesting the object. For example, if a user would have access to the object on the group-based communication system, then the user will be granted permission to retrieve the object. In further embodiments, permissions may vary based on how the user is requesting access to the object. For example, a channel within the group-based communication system may contain sensitive information such that the channel is set to not allow sharing to third-party integrations.
At step 510, the group-based communication system object is transmitted. In some embodiments, the group-based communication system object is sent 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 such that the group-based communication system object may be automatically updated within the third-party integration if any changes are made to the object from within the group-based communication system. For example, the group-based communication system object may be a user who later changes their status. This status update may be automatically transmitted to the third-party integration such that the new status will appear within the third-party integration.
In some embodiments, host JavaScript 604 may be used to display the standard group-based communication system components. Host JavaScript 604 may interface with collaboration SDK 606 to coordinate displaying of document component 608. In some embodiments, collaboration SDK 606 may communicate with host server 614 (which may, in some embodiments, be group-based communication system server 158) to acquire and store an authorization token in client 600. In further embodiments, collaboration SDK 606 communicates with document component 608 to coordinate the display. In further still embodiments, collaboration SDK 606 may communicate with multiple document components 608 simultaneously. Collaboration SDK 606 may also communicate with controller frame 612 to coordinate the settings and configurations of 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 for the overriding of behavior that client 600 may want more control over. For example, a platform delegate may allow for additional functionality specific to client 600 such as interaction with users of client 600, including functionality which requires cooperation from client 600, such as navigation.
In some embodiments, document component 608 may contain view frame 610. View frame 610 may directly render user interface elements such that they may be natively embedded within document component 608. In some embodiments, view frame 610 may be an iframe that client 600 uses as a rendering surface. View frame 610 may communicate directly with controller frame 612 to determine how the user interface and related components should be rendered. In some embodiments, elements from client 600 may be displayed within view frame 610. View frame 610 may be customized and configured based on collaboration SDK 606. For example, the user interface may be rendered to correspond to other user interface elements displayed within client 600. In some embodiments, view frame 610 is not exposed to client 600 directly.
Third-party server 616 provides external functionality to the third-party integration 304. For example, third-party server 616 may simply provide the HyperText Markup Language (HTML) and JavaScript (JS) code for the embedded iframe. Alternatively, third-party server 616 may provide other functionality. For example, where the third-party application is a document editing platform, third-party server 616 may provide functionality such as cloud storage, collaborative document editing, and document synchronization by communicating with third-party integration 304. In some embodiments, third-party server 616 may communicate directly with host server 614. For example, host server 614 and third-party server 616 may communicate to check or update access control lists, such as determining whether or not certain users have the appropriate permissions to access certain resources. Third-party server 616 may also communicate with controller frame 612. In some embodiments, controller frame 612 may exist within client 600 and act as the primary means for communicating with third-party server 616. For example, third-party server 616 may push changes to controller frame 612 via a web socket while controller frame 612 may load data into third-party server 616. Changes that a user makes within view frame 610 may be communicated to third-party server 616 to store changes to data, or to otherwise backup data in a safe and secure location. In some embodiments, documents created within client 600 using collaboration SDK 606 may be stored natively within third-party server 616.
Although the invention has been described with reference to the embodiments illustrated in the attached drawing figures, it is noted that equivalents may be employed, and substitutions made herein without departing from the scope of the invention as recited in the claims.
Number | Name | Date | Kind |
---|---|---|---|
6008804 | Pommier et al. | Dec 1999 | A |
7913178 | Gould et al. | Mar 2011 | B2 |
8924844 | Lynch | Dec 2014 | B2 |
9418388 | Young | Aug 2016 | B1 |
10692138 | Nguyen | Jun 2020 | B1 |
10848445 | Willmann | Nov 2020 | B1 |
11256387 | Huff et al. | Feb 2022 | B1 |
11301200 | Zhang et al. | Apr 2022 | B2 |
11374990 | Lansing et al. | Jun 2022 | B2 |
20040267871 | Pratley et al. | Dec 2004 | A1 |
20050132281 | Pan et al. | Jun 2005 | A1 |
20050193325 | Epstein | Sep 2005 | A1 |
20080183819 | Gould et al. | Jul 2008 | A1 |
20080229185 | Lynch | Sep 2008 | A1 |
20090157811 | Bailor et al. | Jun 2009 | A1 |
20090271696 | Bailor et al. | Oct 2009 | A1 |
20130080919 | Kiang et al. | Mar 2013 | A1 |
20130174032 | Tse et al. | Jul 2013 | A1 |
20130297680 | Smith | Nov 2013 | A1 |
20130318125 | Smith | Nov 2013 | A1 |
20130347070 | Cairns | Dec 2013 | A1 |
20140258972 | Savage | Sep 2014 | A1 |
20150358326 | Varshney | Dec 2015 | A1 |
20160315995 | Hausler et al. | Oct 2016 | A1 |
20170063749 | Gupta et al. | Mar 2017 | A1 |
20170132200 | Noland et al. | May 2017 | A1 |
20170310771 | Lewis | Oct 2017 | A1 |
20180157390 | Vas et al. | Jun 2018 | A1 |
20180276053 | Kesavan | Sep 2018 | A1 |
20180287982 | Draeger et al. | Oct 2018 | A1 |
20190058680 | Rosania et al. | Feb 2019 | A1 |
20190098087 | Johnston et al. | Mar 2019 | A1 |
20190102472 | Rensburg et al. | Apr 2019 | A1 |
20190108241 | Emerick et al. | Apr 2019 | A1 |
20190166330 | Ma et al. | May 2019 | A1 |
20190179876 | Zhang et al. | Jun 2019 | A1 |
20190190863 | Baker | Jun 2019 | A1 |
20190253430 | Gamache | Aug 2019 | A1 |
20200090135 | Malcangio | Mar 2020 | A1 |
20200279070 | Rose et al. | Sep 2020 | A1 |
20200293185 | Shedigumme | Sep 2020 | A1 |
20200348802 | Brito et al. | Nov 2020 | A1 |
20200387567 | Loforte et al. | Dec 2020 | A1 |
20210056184 | Modani | Feb 2021 | A1 |
20210075782 | Dunjic | Mar 2021 | A1 |
20210248556 | Venkatraman et al. | Aug 2021 | A1 |
20210397402 | Ashkenazi et al. | Dec 2021 | A1 |
20220078143 | Eirinberg | Mar 2022 | A1 |
20220086200 | Lansing et al. | Mar 2022 | A1 |
20220350896 | Whitcomb | Nov 2022 | A1 |
20220365740 | Chang et al. | Nov 2022 | A1 |
20230096672 | Bhat | Mar 2023 | A1 |
Entry |
---|
Karjoth, Günter. “The Authorization Service of Tivoli Policy Director.” Seventeenth Annual Computer Security Applications Conference. IEEE, 2001. (Year: 2001). |
“Die, Email, Die! A Flickr Cofounder Aims To Cut Us All Some Slack”, Readwriteweb, Lexisnexis, https://advance.lexis.com/api/permalink/33dd79e2-90f5-409d-ae27-5a2c7e86bf31/?context=1000516>. (dated Aug. 14, 2013, 4:15 PM) 2 pages. |
“How Slack changed the way we work by putting the customer experience first”, Repeat Customer Podcast, Episode 3, [online][retrieved May 9, 2019]. Retrieved from the Internet: <URL: https://www.zendesk.com/resources/slack-customer-experience/, (2019) 13 pages. |
Adrienne LaFrance, “The Triumph of Email”, Atlantic Online, Lexisnexis, https://advance.lexis.com/api/permalink/32d7ddd9-d4c1-4a73-86f7-08ab5842fde6/?context=1000516, (dated Jan. 6, 2016) 5 pages. |
David Auberbach, “Re-Animator. How Stewart Butterfield created Flickr and Slack out of the ashes of failed projects” [online][retrieved May 9, 2019]. Retrieved from the Internet: <URL: https://slate.com/business/2014/05/stewart-butterfield-flickr-and-slack-how-he-snatched-victory-from-the-jaws-of-defeat.html> (dated May 28, 2014, 2:48 PM) 8 pages. |
Ernie Smith, “Picking Up The Slack”, Tedium, [online][retrieved May 9, 2019]. Retrieved from the Internet: <URL: https://tedium.co/2017/10/17/irc-vs-slack-chat-history/>. (dated Oct. 17, 2017) 13 pages. |
Internet Relay Chat, Wikipedia, [online][retrieved May 30, 2019]. Retrieved from the Internet: <URL: https://en.wikipedia.org/wiki/Internet_Relay_Chat>. (dated May 28, 2019) 20 pages. |
Jonathan Vanian, “Why these startups think chat apps are the next big thing in workplace collaboration”, Gigaom, Lexisnexis, https://advance.lexis.com/api/permalink/e83778c8-09c8-43aa-9ba0-88526283de69/?context=1000516, (dated Aug. 1, 2014, 5:45 PM) 4 pages. |
Matsumoto, T. et al., “Chocoa Communicator—A New Communication System Based on Awareness and Text Communications-”, Fujitsu Sci. Tech. J., 36, 2, (Dec. 2000) 154-161. |
Matthew Ingram, “Flickr co-founder launches Slack, an all-in-one messaging tool designed to kill email forever”, Gigaom, Lexisnexis, https://advance.lexis.com/api/permalink/0b676b7c-aec3-4560-861e-d030d1dd008c/?context=1000516, (dated Feb. 12, 2014, 7:03 PM), 2 pages. |
Michael Carney, “Slack is thriving on a cocktail of whimsy and great timing”, Pandodaily, Lexisnexis, https://advance.lexis.com/api/permalink/dd2d4ee5-2ddf-4d3a-a1d9-3bcee5e38b74/?context=1000516, (dated Feb. 6, 2015, 2:12 AM) 3 pages. |
Mike Issac, “Slack, a Start-Up With an App to Foster Business Collaboration, Is Valued at $1.1 Billion”, The New York Times Blogs (Bits), Lexisnexis, https://advance.lexis.com/api/permalink/3eb84b34-a8f9-4d7d-9573-89d9598a4963/?context=1000516>. (dated Oct. 31, 2014) 2 pages. |
Oikarinen, J. & Reed, D., “Internet Relay Chat Protocol”, Request for Comments: 1459, Network Working Group, [online][retrieved May 30, 2019]. Retrieved from the Internet: <URL: https://www.rfc-editor.org/rfc/rfc1459.txt>. (dated May 1993) 57 pages. |
Rebecca Walberg, “Email biggest office waste of time: survey”, National Post, At FP10, Lexisnexis, https://advance.lexis.com/api/permalink/96268e3f-26ad-48ac-a98f-6c39804ebded/?context=1000516, (dated Mar. 4, 2014) 2 pages. |
Robert Hof, “Stewart Butterfield On How Slack Became A $2.8 Billion Unicorn”, Forbes, [online][retrieved May 9, 2019]. Retrieved from the Internet: <URL: https://www.forbes.com/sites/roberthof/2015/06/02/stewart-butterfield-on-how-slack-became-a-2-8-billion-unicorn-2/#7c31937d7d9c>. (dated Jun. 2, 2015, 3;25 PM), 3 pages. |
The Big Pivot w/ Slack's Stewart Butterfield, Masters of Scale Podcast, Episode 13 (Aired Nov. 14, 2017), https://mastersofscale.com/#/stewart-butterfield-the-big-pivot/, (dated Jan. 17, 2018) 27 pages. |
U.S. Appl. No. 17/564,506, Final Office Action dated Feb. 3, 2023. |
U.S. Appl. No. 17/589,584, Non-Final Office Action dated Jan. 20, 2023. |
Hu, Vincent C. et al.; Attribute Considerations for Access Control Systems; NIST Special Publication 800-205; U.S. Department of Commerce; pp. 1-42; https://doi.org/10.6028/NIST.SP.800-205; retrieved on Aug. 24, 2022. |
U.S. Appl. No. 17/589,692, Non-Final Office Action dated Jan. 18, 2023. |
Malik et al. A Comparison of Collaborative Access Control Models, IJACSA 8:3, 2017, pp. 209-206. (2017). |
U.S. Appl. No. 17/589,822, Non-Final Office Action dated Nov. 30, 2022. |
U.S. Appl. No. 17/564,506, Non-Final Office Action dated Oct. 6, 2022. |
PCT Patent Application PCT/US2022/052680 Written Opinion of the International Searching Authority and International Search Report dated Apr. 5, 2023. |
U.S. Appl. No. 17/589,822, Final Office Action dated Mar. 23, 2023. |
U.S. Appl. No. 17/564,506, Notice of Allowance dated Jun. 5, 2023. |
U.S. Appl. No. 17/589,584, Notice of Allowance dated May 18, 2023. |
U.S. Appl. No. 17/589,692, Final Office Action dated May 12, 2023. |
Bertino et al. Specifying and enforcing access control policies for XML document sources. World Wide Web 3 (2000), pp. 139-151, 2000. |
Number | Date | Country | |
---|---|---|---|
20230216816 A1 | Jul 2023 | US |