Video room cross-application creation and facilitation
The video room system addresses inefficiencies and inflexibilities in conventional digital communication by integrating application functionalities for efficient, flexible, and secure cross-platform video conferencing through unified access and intelligent link sharing.
Patent Information
- Application Number
- JP2021073461
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-03-09
- Filing Date
- 2021-04-23
- Publication Date
- 2025-08-26
- Estimated Expiration
- 2041-04-23
AI Technical Summary
Conventional digital communication systems are inefficient and inflexible, requiring extensive user interactions and navigation across multiple applications for group video calls, limiting cross-platform compatibility, and lacking flexibility in sharing and accessing video conferencing links.
A video room system that integrates functionalities of multiple applications to create and facilitate cross-platform video conferencing by providing entry points within a first messaging application, allowing seamless transition to a second messaging application for video room creation, and surfacing video room links through various channels including social networking feeds.
Improves efficiency by reducing computing resource usage and user interactions, enhances flexibility by enabling video calls across different devices and platforms, and improves security by limiting link sharing and authenticating devices based on their registration status.
Smart Images

Figure 0007729732000001 
Figure 0007729732000002 
Figure 0007729732000003
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Application No. 63 / 014,928, filed April 24, 2020, entitled "GENERATING AND FACILITATING MULTI-USER VIDEO ROOMS," and U.S. Non-Provisional Application No. 17 / 196733, filed March 9, 2021, entitled "CROSS-APPLICATION GENERATING AND FACILITATING OF VIDEO ROOMS," the entire disclosures of which are incorporated herein by reference. [Background technology]
[0002] Advances in software and hardware platforms have led to various improvements in systems that connect client devices over the Internet. For example, digital communication systems are now capable of providing device-to-device video calling, allowing users to communicate with each other face-to-face over long distances. Some digital communication systems have even been developed that allow groups of three or more devices to connect within a common video conference.
[0003] Despite these advances, however, conventional digital communication systems still suffer from certain shortcomings, particularly in their efficiency and flexibility. For example, some conventional systems inefficiently utilize computing resources, such as processing power, processing time, and memory, when processing an excessive number of user interactions to generate group video calls. More specifically, conventional systems require client devices to navigate through many layers, applications, and / or interfaces to access desired data or functionality in order to initiate a video call and / or locate other client devices / users to invite to the group video call. Indeed, many conventional systems are siloed in that they are specific to group video calls and therefore require independent navigation of multiple unrelated applications, for example, to initiate a group video call in a video calling application and to distribute invitations for a group video call via an external contacts application without a connection to the video calling application.
[0004] In addition to being inefficient, some conventional digital communication systems are also inflexible. For example, some conventional systems are strictly limited to facilitating group video calls only between devices that share a common platform. Specifically, these conventional systems often require that devices in a common video conference utilize a particular software application or have an account with a particular software service entity. Even in the case of conventional systems that can facilitate video calls across different platforms, these conventional systems nevertheless strictly require client devices to invite other client devices in a limited number of ways, such as by sharing a link for a particular video conference.
[0005] Thus, there are drawbacks associated with conventional digital communication systems. [Prior art documents] [Patent documents]
[0006] [Patent Document 1] U.S. Provisional Application No. 63 / 014,928 [Patent Document 2] U.S. Non-Provisional Patent Application No. 17 / 196733 [Patent Document 3] U.S. Patent Application No. 11 / 503,093 [Patent Document 4] U.S. Patent Application No. 12 / 977,027 [Patent Document 5] U.S. Patent Application No. 12 / 978265 [Patent Document 6] U.S. Patent Application No. 13 / 632,869 Summary of the Invention
[0007] One or more embodiments described herein provide benefits and solve one or more of the above or other problems in the art through a system, method, and non-transitory computer-readable medium that can efficiently and flexibly create video rooms to facilitate cross-platform video conferencing for a group of client devices by accessing functionality of a second messaging application as a result of user interactions within a first messaging application. More specifically, the disclosed system can flexibly create video rooms that remain open for commitment-free access by multiple user devices in a come-and-go manner. To create video rooms, the disclosed system can provide different entry points for creating (and / or entering) video rooms from multiple applications, such as lightweight messaging applications that do not have the ability to create video rooms but are integrated with the video room creation application. The disclosed system can also flexibly surface video rooms, for example, by automatically providing a video room link for display in a chat interface where a video room element is selected along with the video room link, and / or automatically providing a video room link in a social networking feed based on connections between users. The disclosed system can further facilitate video conferencing within a multi-platform video room between a creator device and invitee devices associated with co-users of a social networking system and / or users not associated with the social networking system.
[0008] Additional features and advantages of the present application will be set forth in the description that follows, and in part will be obvious from the description, or may be learned by practice of such exemplary embodiments.
[0009] The detailed description refers to the drawings, which are briefly described below. [Brief explanation of the drawings]
[0010] [Figure 1] FIG. 1 is a block diagram of an environment for implementing a video room system, according to one or more embodiments. [Figure 2] FIG. 1 illustrates an example sequence flow of a video room system for generating and distributing a video room link for a video room, according to one or more embodiments. [Figure 3] FIG. 1 illustrates an exemplary sequence of actions for authenticating an invitee device, according to one or more embodiments. [Figure 4] FIG. 1 illustrates an exemplary call interface of a first messaging application, according to one or more embodiments. [Figure 5] FIG. 1 illustrates an exemplary new calling interface of a first messaging application, according to one or more embodiments. [Figures 6A-6B] FIG. 1 illustrates an exemplary chat interface for accessing a video room element from a first messaging application, according to one or more embodiments. [Figures 7A-7B] FIG. 10 illustrates another exemplary chat interface for accessing a video room element from a first messaging application, according to one or more embodiments. [Figure 8] FIG. 1 illustrates an example redirection notification for accessing a second messaging application from a first messaging application, according to one or more embodiments. [Figure 9A]FIG. 10 illustrates another example redirection notification for accessing a second messaging application from a first messaging application, according to one or more embodiments. [Figure 9B] FIG. 10 illustrates an exemplary video room creation interface associated with a second messaging application, according to one or more embodiments. [Figure 10] FIG. 10 illustrates an exemplary video room setup interface of a second messaging application, according to one or more embodiments. [Figure 11] FIG. 1 illustrates an example redirect notification for accessing a first messaging application from a second messaging application after creating a video room, according to one or more embodiments. [Figure 12] FIG. 1 illustrates an exemplary chat selection interface for sharing a video room link within a first messaging application, according to one or more embodiments. [Figure 13] 1 illustrates an exemplary message composition interface for composing a message including a video room link within a first messaging application, according to one or more embodiments. [Figure 14] FIG. 1 illustrates an exemplary chat interface for providing a video room link within a chat thread of a first messaging application, according to one or more embodiments. [Figure 15] FIG. 1 illustrates an exemplary social networking interface for surfacing video room links based on connections between users, according to one or more embodiments. [Figure 16] FIG. 10 illustrates an exemplary chat interface of a second messaging application for surfacing a video room link, according to one or more embodiments. [Figure 17] FIG. 1 illustrates an exemplary video room interface for facilitating video conferencing between devices, according to one or more embodiments. [Figure 18] FIG. 1 is an illustrative schematic diagram of a computing device including various components of a video room system, according to one or more embodiments. [Figure 19] FIG. 1 illustrates an example flow of acts for generating and providing a video room link utilizing functionality of a second messaging application based on user interaction within a first messaging application, according to one or more embodiments. [Figure 20] FIG. 1 is a block diagram of an exemplary computing device, according to one or more embodiments. [Figure 21] FIG. 1 illustrates an exemplary network environment of a networking system, according to one or more embodiments. [Figure 22] FIG. 1 illustrates a social graph, according to one or more embodiments. DETAILED DESCRIPTION OF THE INVENTION
[0011] One or more embodiments described herein provide benefits and solve one or more of the above or other problems in the art through a video room system that can create video rooms to facilitate video communication among a group of client devices. In particular, the video room system can utilize different functionalities of multiple integrated applications together to create a video room (e.g., by handing off between the applications). For example, the video room system can provide an entry point for creating a video room within a first lightweight messaging application on a creator device to transition to a second messaging application that includes further functionality for creating a video room. The video room system can further surface the created video room within the first messaging application (and / or the second messaging application) based on activity of the creator device. The video room system can also surface the video room in other manners based on connections between users within a social graph of a social networking system. Upon receiving an indication from an invitee device of selection of a video room link to enter the video room, the video room system can further authenticate the invitee device and add the invitee device to the video room.
[0012] As described above, a video room system can utilize multiple applications together to create a video room. In particular, the video room system can provide an entry point within a first messaging application in the form of a selectable video room element to access a second messaging application. Indeed, the video room system can access and utilize the second messaging application to create a video room in response to a user selection of a video room element from within the user interface of the first messaging application. The first messaging application can be a lightweight application with limited functionality (e.g., not including functionality for creating a video room), and the second messaging application can be a larger application (e.g., with the functionality necessary to create a video room). For example, to keep messaging and other communications secure between devices utilizing the first messaging application, the video room system can utilize end-to-end encryption to keep most of the user information within the first messaging application private at the device side. This requires the video room system to access the functionality (e.g., API) of the second messaging application to perform some tasks (e.g., creating a video room) that require additional user information not immediately available via the first messaging application.
[0013] As also described above, the video room system can provide different entry points within the first messaging application for creating a video room (e.g., by transitioning or handing off to a second messaging application). More particularly, the video room system can provide selectable video room elements within various user interfaces of the first messaging application, such as a video call list interface, a chat interface (e.g., in a message attachment menu), and / or a new call interface. The video room system can surface the video room differently to invitee devices based on receiving an indication of a selection of different video room elements within the different user interfaces.
[0014] Based on receiving an indication of a user selection of a video room element within a specific user interface of the first messaging application, the video room system can further determine how to create a video room. For example, the video room system can determine that the first messaging application does not have the ability to create a video room and can determine whether a second messaging application with video room creation functionality is installed on the creator device. Based on determining whether the second messaging application is installed on the creator device, the video room system can select between the second messaging application and a browser application to create a video room link. For example, based on determining that the second messaging application is installed on the creator device, the video room system can access the second messaging application. On the other hand, based on determining that the second messaging application is not installed on the creator device, the video room system can access the browser application and navigate to a specific website with video room creation functionality. The video room link can be shareable to invite invitee devices in a chat associated with a chat interface of the first messaging application to enter the video room.
[0015] As just described, the video room system can determine that the creator device has a second messaging application installed. In response, the video room system can access the second messaging application to create a video room. In some embodiments, the video room system provides a notification for display within the first messaging application to request permission (or a prompt) to access the second messaging application. Upon receiving an indication of a user selection to hand off to the second messaging application, the video room system can access functionality of the second messaging application to create a video room and to provide a video room creation interface for display on the creator device.
[0016] Based on generating the video room and the corresponding video room link for sharing access to the video room, the video room system can surface the video room link to the invitee device in various manners. For example, the video room system can receive an indication of a user selection of a video room element associated with a particular chat of a first messaging application, and the video room system can automatically (e.g., without additional user input) populate a chat interface for the chat with the video room link. As another example, the video room system can determine connections between users indicated by a social graph associated with a social networking system (and / or a second messaging application) and, based on the connections, automatically surface the video room link in a social networking feed and / or other interface of the second messaging application.
[0017] The video room system can further limit the sharing of the video room link. More specifically, the video room system can determine whether the video room link has been shared a threshold number of times (e.g., whether the video room link has been surfaced or provided to a threshold number of invitee devices). Based on the video room system determining that the video room link has been shared at least the threshold number of times, the video room system can limit the number of invitee devices with which the video room link can be shared. For example, the video room system can limit the number of invitee recipients of a single message including a particular video room link for which the sharing threshold has been met.
[0018] Additionally, the video room system can facilitate video conferencing between devices in the video room. For example, the video room system can add invitee devices and creator devices to the video room. The video room system can also receive video and audio data from devices in the video room and provide video and audio data to devices in the video room. In some embodiments, the video room system can allow one invitee device to access the video room differently than another invitee device. For example, the video room system can determine that a first invitee device is associated with a second messaging application and therefore allow the first invitee device to access the video room via the second messaging application. The video room system can further determine that a second invitee device is not associated with the second messaging application and therefore allow the second invitee device to access the video room via a browser application.
[0019] In some embodiments, the video room system can create and facilitate a waiting room or video room lobby. Specifically, the video room system can create a digital space that invitee devices can enter without yet entering the video room. For example, the video room system can add invitee devices to the video room lobby to wait for the creator device to start the video room (e.g., if the invitee device enters before the creator device). As another example, the video room system can add invitee devices to the video room lobby based on other criteria, such as the closeness / connectivity between user accounts and whether the invitee device is attempting to enter the video room via a shared link or via a link that is not explicitly shared (e.g., surfaced in a social networking feed) to the invitee device. Additional details regarding video room lobbies are provided below.
[0020] As alluded to above, video room systems can offer several advantages over conventional digital communication systems. In particular, video room systems can improve efficiency over conventional digital communication systems. While some conventional systems require extensive user interaction (and subsequent processing of such extensive user interaction) navigating across multiple separate applications to create digital meetings for video conferencing and invite participants to those digital meetings, video room systems significantly reduce the number of user interactions. For example, rather than requiring navigation between siloed video calling applications from separate sharing or messaging applications (e.g., by tapping through multiple layers / interfaces within the operating system and within the separate applications), video room systems can provide unified access to create a video room using the functionality of a second messaging application directly within a first messaging application. Thus, video room systems utilize fewer computing resources, such as processing time, processing power, and memory, in processing user interactions to access desired data and / or functionality, as well as in rendering and displaying numerous user interfaces for such navigation.
[0021] In addition to improving efficiency, video room systems can also improve flexibility over many conventional digital communication systems. In particular, in contrast to those conventional systems that require registration and / or users of specific applications to access video calls, video room systems can more flexibly facilitate video calls between different device types and across different software applications. Furthermore, while some conventional systems are fixed on sharing links for video calls through limited messaging and email channels, video room systems can flexibly (and automatically) surface access to video rooms based on social networking information in addition to various messaging channels. Furthermore, in some embodiments, the video room system can automatically provide the video room link by adapting to the specific behavior of the creator device, for example, by providing the video room link for display within a specific chat interface where the video room element was selected to create the video room. Thus, not only does the video room system improve the flexibility of sharing video rooms compared to conventional systems, but the video room system also improves the discoverability of video rooms and further reduces the number of user interactions required for such sharing.
[0022] Beyond the improvements described above, video room systems can further improve security over conventional digital communication systems. For example, in contrast to conventional systems that allow unlimited and / or indiscriminate sharing of links or invitations for video meetings, video room systems can limit the sharing of video room links. In particular, upon determining that a video room link has been shared with a threshold number of invitee devices, the video room system can limit the number of invitee devices that can be recipients of a single messaging message containing the video room link. In some embodiments, the video room system further improves video room security by limiting (e.g., in total or within a single invitation message) the number of anonymous invitees (e.g., invitees without social media accounts) that can be invited to the video room.
[0023] Furthermore, with regard to improved security, in contrast to conventional systems that either do not authenticate devices before allowing access to a video call or employ general security measures to uniformly authenticate all devices, the video room system can use different authentication procedures to verify the authenticity of different invitee devices. Indeed, the video room system can utilize different authentication procedures based on whether a particular invitee device is registered with a social networking system (and / or with a particular application) and / or based on the entry point from which the invitee device accessed the video room. Specifically, for invitee devices whose users are members of a particular social networking system (or for invitee devices requesting access via a link shared within a particular application), the video room system can access the particular social networking data user to verify authenticity and establish that the invitee device is trustworthy. On the other hand, for invitee devices whose users are not registered with the social networking application (or for invitee devices that request access via a video room link shared outside of a particular application), the video room system may have access to different information, such as browser data, the number of join attempts by the invitee device within a time period, and / or IP address.
[0024] As indicated by the above description, the present disclosure utilizes various terms to describe the features and advantages of a video room system. For example, as used herein, the term “video room” refers to a digital space, environment, or interface for participant devices to connect for the transmission of audio and video information as part of a video chat. A video room also refers to a digital space (e.g., a uniform resource locator or “URL”) maintained on one or more servers that, once created, remains open and available for access by creator and invitee devices (e.g., in an enter and exit manner for at least a threshold time period and in accordance with video room settings). A video room can facilitate video chatting among a threshold number (e.g., 50 or 100) of participant devices. A video room may remain open for a threshold time period (of no video room activity) or until the host device disables and / or locks the video room. Rather than being tied to the time frame of a meeting or some other event, the video room may remain open for days, weeks, or months, thereby allowing participant devices to enter and exit the video room for impromptu interactions between participant devices. In some embodiments, the video room is accessible by users of the social networking system and by users not associated with the social networking system, and by different types of client devices running different applications (e.g., a second messaging application or a browser application).
[0025] Relatedly, the term “creator device” refers to a computing device associated with a creator user (e.g., a user utilizing the creator device to initiate, organize, or create a video room). The creator device can also receive user input to distribute a video room link to provide access to the video room. Similarly, the term “invitee device” refers to a computing device associated with an invitee user (e.g., a user of a computing device granted access to a video room created by the creator device). The invitee device can receive the video room link in one form or another and can enter the video room based on user interaction with the video room link. For example, the invitee device can receive a video room link shared by the creator device or surfaced in a social networking feed (without explicit sharing by the creator device). Indeed, the video room system can determine that a particular user is invited (i.e., is an invitee) based on factors other than an explicit invitation from the creator (e.g., connections in a social graph).
[0026] As described above, the video room system can integrate access to functionality associated with a second messaging application within a first messaging application. For example, a “first messaging application” can include a messaging application that is lightweight, smaller in size, secure, and / or requires fewer computing resources to operate (compared to the second messaging application). The first messaging application may not include functionality for creating a video room, but may include functionality for chat messaging between devices, including end-to-end encryption of messages, and may further present a graphical user interface including a video room element for creating a video room by accessing the second messaging application. Furthermore, the term “second messaging application” can refer to a heavier messaging application that includes more functionality than the first messaging application, including functionality for generating or creating a video room. In some embodiments, the second messaging application is associated with a social networking system and accesses social networking information (e.g., a social graph) associated with a user to perform one or more functions.
[0027] As also described above, the video room system can generate a video room link to provide an invitee device with access to the video room. As used herein, the term “video room link” refers to a link or selectable user interface element that, upon user selection, provides access to a specific video room (or causes the invitee device to request access to a specific video room). The video room link can include information related to the creator and / or creator device, the name of the corresponding video room, and / or address information for the digital space of the video room. In some embodiments, the video room link can be a deep link that includes information to cause a computing device (e.g., an invitee device) to access or open a specific application upon selection of the video room link. For example, the video room link can cause the invitee device to determine whether a second messaging application is installed and open the second messaging application (or a browser application if the second messaging application is not installed) to access the video room. A video room link can have different configurations depending on where and / or with whom the video room link is shared (e.g., via text message to an anonymous user or within a social networking application to known collaborative users), thereby causing the device to perform different functions at its discretion.
[0028] Furthermore, the video room system can generate and provide a video room element within the graphical user interface of the first messaging application. As used herein, the term “video room element” refers to a selectable user interface element for generating or creating a video room. In some embodiments, the video room element is a deep link that, upon selection, causes the video room system to perform some function. Indeed, upon selection of a video room element displayed within the graphical user interface of the first messaging application, the video room system can determine whether a second messaging application is installed on the creator device and access the functionality of the second messaging application to generate the video room. Based on determining whether the second messaging application is installed on the creator device, the video room system can select between the second messaging application and a browser application to generate a video room link.
[0029] If a second messaging application is not installed, selection of the video room element may cause the video room system to access a browser application capable of creating a video room (e.g., via a video room creation website). In some embodiments, the video room element includes location information that indicates the particular user interface in which the video room element is displayed. Thus, the video room system may access the location information about the video room element to determine how to deliver the video room link for the created video room (e.g., within a particular chat interface if the selected video room element was in a location within that chat interface or within a menu of that chat interface).
[0030] In one or more embodiments, the video room system can determine connections in a social graph between a user and co-users of a social networking system. As used herein, the term "co-user" refers to a user associated with a social networking system. A co-user refers to a user who is registered with the social networking system (e.g., has a user account within the social networking system) and whose relationship or connection to another co-user may be determined via the social graph and / or via user interactions within one or more applications, such as a second messaging or social networking application.
[0031] As used herein, the term "browser application" refers to an application operable to access and interact with websites over the Internet. For example, a browser application may communicate with a server to access an online space or address to view and interact with content, such as digital images, text, and / or digital video. In some cases, a browser application may access a particular website that facilitates communication between devices to generate and distribute messages containing text, digital images, digital video, and / or video room links.
[0032] Additional details regarding the video room system will now be provided with reference to the figures. For example, Figure 1 shows a schematic diagram of an exemplary environment for implementing a video room system 102, according to one or more embodiments. An overview of the video room system 102 will be described with reference to Figure 1. Thereafter, a more detailed description of the components and processes of the video room system 102 will be provided with reference to subsequent figures.
[0033] 1, the environment includes server(s) 106, creator device 108, invitee devices 114a-114n, and network 116. Each of the components of the environment can communicate over network 116, which can be any suitable network over which computing devices can communicate. Exemplary networks are described in more detail below with respect to FIGS. 20 and 21.
[0034] As described above, the environment includes an author device 108. The author device 108 may be one of a variety of computing devices, including a smartphone, a tablet, a smart television, a desktop computer, a laptop computer, a virtual reality device, an augmented reality device, or any other computing device described with respect to FIGS. 20 and 21 . The author device 108 may receive user input from a user in the form of user actions, such as touch gestures, clicks, etc., with respect to user interface elements displayed as part of the first messaging application 110 and / or the second messaging application 112 (or social networking applications). In some embodiments, the author device 108 is associated with a user of the social networking system 104, and the user has a social media account or is registered with the social networking system 104. The author device 108 may also provide information related to the user input to the server(s) 106. Thus, the video room system 102 on the server(s) 106 can receive user input information from the creator device 108 to direct actions within the first messaging application 110, such as sending a message, selecting a video room element to create a video room, sharing or distributing a video room link within a chat interface, or navigating within the first messaging application 110.
[0035] As also described above, the environment includes invitee devices 114a-114n. In particular, the invitee devices 114a-114n, like the creator device 108, can be one of a variety of computing devices, including a smartphone, a tablet, a smart television, a desktop computer, a laptop computer, a virtual reality device, an augmented reality device, or any other computing device described with respect to Figures 20 and 21. The invitee device 114a can be associated with an invitee who has a profile in the social networking system 104, and the invitee device 114n can be associated with an invitee who does not have an account or profile in the social networking system 104. Additionally, the invitee devices 114a-114n can receive input from the invitee regarding user interface elements displayed in the first messaging application 110 or the second messaging application 112. For example, the invitee devices 114a-114n can receive input to select a video room link to enter the video room and / or to exit the video room, to invite someone to enter the video room, to send a message, and / or to navigate within the first messaging application 110 or the second messaging application 112 via touch gestures, clicks, etc. The invitee devices 114a-114n can further communicate with the server(s) 106 to provide input information to the video room system 102.
[0036] As shown, the creator device 108 and the invitee devices 114a-114n include a first messaging application 110 and a second messaging application 112. However, in some embodiments, the invitee device 114n may not include the second messaging application 112 and may not be associated with the social networking system 104, but instead may enter the video room via a separate application, such as a browser application. The first messaging application 110 and / or the second messaging application 112 may be a web application, a native application (e.g., a mobile application, a desktop application, a web-based browser application, etc.) installed on the creator device 108 and / or the invitee device 114, or a cloud-based application whose functionality is implemented in whole or in part by the server(s) 106. The first messaging application 110 and the second messaging application 112 may have different functionality and may communicate by sending data back and forth. For example, the first messaging application 110 may be a smaller, lighter application primarily for chat or other messaging, and the second messaging application 112 may be a larger application with additional functionality, including messaging, calling, and facilitating video rooms for video conversations. In some embodiments, the creator device 108 and / or the invitee device (e.g., invitee device 114a or 114n) include additional applications, such as a social networking application that presents a social networking interface, including an activity feed, a news feed, a friends interface, and / or message threads.
[0037] The first messaging application 110 and the second messaging application 112 can present or display information, including messaging interfaces, to a user, such as a creator or an invitee. In some embodiments, the first messaging application 110 provides a video room element for the creator to navigate to the second messaging application 112 to create a video room. The second messaging application 112 then presents selectable options for creating a video room and for setting various preferences or settings related to the video room. Additionally, the second messaging application 112 includes functionality for facilitating or managing a video room for the creator device 108 and the invitee devices 114a-114n to video chat together. The first messaging application 110 also generates a data packet indicating a particular location, such as a chat thread and / or a particular location within the chat thread, so that after returning from creating a video room in the second messaging application 112, the first messaging application 110 can display the same chat thread and / or a location with the chat thread.
[0038] 1 , the environment includes server(s) 106. The server(s) 106 may generate, store, process, receive, and transmit electronic data, such as creator profile information, invitee profile information, other social media account information, video room information, user interaction information, affinity information, and user input. For example, the server(s) 106 may transmit data to the creator device 108 to provide a video room interface via the second messaging application 112 and / or a chat interface via the first messaging application 110. In some embodiments, the server(s) 106 comprise a content server. The server(s) 106 may also comprise an application server, a communication server, a web hosting server, a social networking server, a video communication server, or a digital communication management server.
[0039] 1, the server(s) 106 can also include a video room system 102 (e.g., implemented as part of a social networking system 104). The social networking system 104 can communicate with the creator device 108 and / or the invitee devices 114a-114n. While FIG. 1 shows the video room system 102 located on the server(s) 106, in some embodiments, the video room system 102 can be implemented by (e.g., can be located completely or partially on) one or more other components of the environment. For example, the video room system 102 can be implemented by the invitee device 114, the creator device 108, and / or a third-party device.
[0040] In some embodiments, although not shown in FIG. 1 , the environment may have a different arrangement of components and / or a different number or set of components overall. For example, invitee devices 114 and / or creator devices 108 may communicate directly with video room system 102, bypassing network 116. Additionally, video room system 102 may include one or more databases (e.g., social media account databases) stored on server(s) 106 or elsewhere in the environment. In some embodiments, all or part of video room system 102 may be located on and implemented by different devices in the environment. For example, video room system 102 may be implemented by one or more of server(s) 106, creator device 108, and / or invitee devices 114a-114n.
[0041] As described above, the video room system 102 can create and facilitate a video room for a video conference between a creator device (e.g., the creator device 108) and one or more invitee devices (e.g., the invitee devices 114a-114n) by utilizing the functionality of the second messaging application 112 via user interaction with the first messaging application 110. Figure 2 shows a sequence flow diagram including acts performed by the creator device 108, the video room system 102, and the invitee devices 114a-114n for cross-application creation of a video room, according to one or more embodiments.
[0042] 2, the video room system 102 performs acts 202 for determining connections between users via a social graph. In particular, the video room system 102 determines connections between a creator and invitees who are co-users of the social networking system 104, as indicated by affinity (and an associated magnitude or measure of affinity, such as indicated by an affinity coefficient, as described with respect to FIGS. 21-22). For example, the video room system 102 determines closeness between the creator and invitee based on interactions between the creator and invitee (e.g., messaging, tagging, posts from one that mention the other) as well as some degree of separation in the social graph (e.g., friends, or friends of friends). In some embodiments, the video room system 102 determines connections, such as friends of the creator, followers of the creator, and / or co-users followed by the creator.
[0043] To determine connections between users according to device settings, the video room system 102 monitors actions related to the creator device 108 and the invitee devices 114a-114n within a social networking or messaging application (e.g., the second messaging application 112) associated with the social networking system 104. For example, the video room system 102 identifies messages (e.g., the number of messages or the frequency of messages) between the creator device 108 and the invitee device 114a via the second messaging application 112 that indicate connections between the users. Based on the creator's social graph, the video room system 102 further determines whether the creator and one or more of the invitees are friends (or friends of friends) within the social networking system 104.
[0044] As further shown, the video room system 102 performs an act 204 to provide a video room element within a graphical user interface of the first messaging application 110. In particular, the video room system 102 provides the video room element within an interface, such as a video call list interface, a chat interface, or a new call interface, of the first messaging application 110. The video room system 102 thus provides the video room element for display on the creator device 108 within one or more user interfaces as different entry points for creating a video room.
[0045] In some embodiments, the first messaging application 110 includes functionality for initiating group calls between multiple devices, for example, the video room system 102 replaces a group call element with a video room element in the chat interface of the first messaging application 110.
[0046] In some embodiments, the video room system 102 determines to provide a video room element as part of the first messaging application 110 based on various factors. For example, the video room system 102 provides the video room element based on the number of participants (or participant devices) in a chat or the number of invitees (or invitee devices) for a group call. In some cases, the video room system 102 determines that the number of invitees (or invitee devices) invited to the group call exceeds a threshold number (e.g., 8 or 10). In these cases, based on this determination, the video room system 102 provides the video room element instead of the group call element for display within the first messaging application 110. For example, if there are six participants (e.g., the creator device and five invitee devices) in a chat with a threshold of 5, the video room system 102 replaces the group call element with the video room element in the chat interface. Thus, in these embodiments, a creator can start a video room and invite chat participants to the video room. Additional details regarding the location and arrangement of video room elements within the graphical user interface are provided below with reference to subsequent figures.
[0047] 2 , the creator device 108 performs act 206 to provide an instruction to the video room system 102 to create a video room. For example, the creator device 108 detects a user interaction selecting a video room element from within the user interface of the first messaging application 110 and provides an instruction to the video room system 102 indicating the selection of the video room element, including an identifier and / or location of the video room element. Accordingly, the video room system 102 receives the instruction to create the video room from the creator device 108. Based on receiving the instruction to create the video room, the video room system 102 determines the location and / or identification information of the selected video room element. As a result, upon completion of creating and / or joining the video room, the video room system 102 can return the creator to the same location within the first messaging application 110 (e.g., by displaying the same chat interface or the same location within the chat interface).
[0048] As shown, the video room system 102 further performs act 208 for utilizing the second messaging application 112 to generate the video room. In particular, the video room system 102 accesses functionality (e.g., an API) associated with the second messaging application to generate the video room. In response to receiving an instruction to generate the video room (e.g., from a user selection of a video room element), the video room system 102 accesses specific video room generation functionality associated with the second messaging application 112. For example, the video room system 102 redirects or hands off from the first messaging application 110 to the second messaging application 112 to generate the video room. In effect, the video room system 102 determines that the second messaging application 112 has been installed on the creator device 108 and provides a prompt requesting permission to access the second messaging application 112.
[0049] In addition to generating the video room itself, the video room system 102 also generates a video room link for accessing the video room. In particular, the video room system 102 generates a secure video room link by including a hash or token in the video room link that prevents unauthorized users from entering the video room. For example, the video room system 102 generates a link hash that has a specific number of characters (e.g., 16 characters) and satisfies an entropy threshold.
[0050] Additionally, the video room system 102 configures the video room link for different invitee devices differently (e.g., a different video room link for the invitee device 114a versus the invitee device 114n). Specifically, the video room system 102 configures the video room link for the invitee device 114n that is not associated with an account in the social networking system 104 (and / or enters the video room via a browser not associated with the first messaging application 110) to be different from the video room link for the invitee device 114a that is associated with an account in the social networking system 104 (and / or enters the video room via the second messaging application 112). For example, the video room system 102 configures the video room link for the invitee device 114a by including social networking system information about the video room link. Meanwhile, the video room system 102 configures a video room link for the invitee device 114n (or an invitee device associated with an anonymous user) by generating a link hash that contains a certain number of characters (e.g., 16) and satisfies a threshold level of entropy so that it is statistically unlikely that a computer will be able to guess the link hash over a period of time (e.g., 100 years).
[0051] Based on confirmation from the creator device 108, the video room system 102 creates a video room, assigns the creator device 108 as the administrator of the video room (e.g., the user who controls the settings), and provides a video room settings interface for display on the creator device 108 as part of the second messaging application 112. Indeed, as shown in FIG. 2 , the creator device 108 performs act 210 for providing the video room settings. In particular, the creator device 108 receives input from the creator within the video room settings interface for setting the video room settings. Thus, the video room system 102 receives the video room settings from the creator device. From the video room settings interface, the video room system 102 receives user input instructions for various video room settings, including locking and unlocking the video room, setting limits on the number of participants in the video room, sharing a link to the video room, exiting the video room (e.g., leaving the video room while still leaving the video room open for other participants / invitees), exiting the video room (e.g., removing all participants / invitees and disabling the video room link), and ascertaining which participants are currently in the video room.
[0052] In some embodiments, the video room system 102 determines when or if the creator device 108 has left the video room and restricts entry to the video room accordingly. Based on determining that the creator device 108 has left the video room, the video room system 102 locks the video room to prevent additional invitee devices from entering the video room. In some cases, after the creator device 108 leaves the video room, the video room system 102 allows invitee devices already in the video room to stay and continue the video conference. In one or more embodiments, the video room system 102 further notifies invitee devices in the video room that the creator device 108 has left the video room and further notifies the invitee devices if the creator device 108 has returned to the video room. Upon the creator device 108's return, the video room system 102 allows additional invitee devices to enter the video room.
[0053] 2 , the video room system 102 performs act 212 for surfacing a video room link. In particular, the video room system 102 provides the video room link to one or more invitee devices 114a-114n in response to sharing by the creator device 108 and / or automatically without prompting by the creator device 108. For example, the video room system 102 automatically (e.g., without user input from the creator) surfaces the video room link in the social networking feeds (e.g., news feeds or messaging feeds) of invitees who are co-users of the social networking system 104. Indeed, based on the connection determined in act 202 (e.g., based on the affinity or relationship between the creator and the co-user invitee), the video room system 102 determines that the affinity between the creator and the co-user invitee satisfies a threshold affinity and provides the video room link in the social networking feeds of the co-user invitee.
[0054] In some embodiments, the video room system 102 determines how to provide the video room link to the invitee devices based on information related to the video room elements initially selected to create the video room. Specifically, the video room system 102 determines a location related to the video room elements selected to create the video room, such as a location within a particular user interface or menu of the first messaging application 110. For example, if the video room system 102 determines that the selected video room elements were within a menu of a particular chat, the video room system 102 determines to automatically provide the video room link within the chat thread upon creating the video room. However, if the video room system 102 determines that the selected video room elements were within a new call interface or a video call list interface of the first messaging application 110, the video room system 102 determines to provide an option (e.g., a chat selection interface or an invitee selection interface) for the creator to select which of the invitee devices 114a-114n to provide the video room link to.
[0055] In one or more embodiments, the video room system 102 determines whether the invitee is registered with the social networking system 104 as part of determining how to surface the video room link. Additionally, the video room system 102 determines whether the invitee is registered with the second messaging application 112. For example, if the video room system 102 determines that the invitee is registered with both the social networking system 104 and the second messaging application 112, the video room system 102 surfaces the video room link within the user interface of the second messaging application 112 (e.g., within the discovery pane of a chat interface). On the other hand, if the video room system 102 determines that the invitee is registered with the social networking system 104 but not the second messaging application 112, the video room system 102 surfaces the video room link within the invitee's social networking feed (and / or within the discovery pane of a user interface within the social networking application), provided that the invitee also has a threshold affinity with the creator. The video room system 102 thus improves the flexibility and discoverability of video rooms compared to conventional systems that rely solely on the explicit sharing of links for video meetings, although the video room system 102 also allows creator devices 108 to share video room links via text messages, emails, and other messaging systems.
[0056] As described above, the video room system 102 automatically surfaces the video room link to some invitees based on social graph information (e.g., friends in a social networking system or other users within a threshold closeness / affinity to the creator). In some embodiments, the video room system 102 surfaces the video room link based on some degree of separation (e.g., only to friends of the creator, friends of friends of the creator, and / or friends of invitees who enter the video room). The video room system 102 also determines other factors for automatically surfacing the video room link, such as the number of users in the video room (e.g., to refrain from automatically surfacing if the video room is full, or to select only those with the strongest affinity for video rooms with limited capacity).
[0057] According to device settings and in accordance with area restrictions, the video room system 102 further determines additional factors for automatically surfacing a video room link, including the recency of the invitee's participation in the same video room (or a different video room), the number of people in the lobby for the video room, the lock status of the video room, platform restrictions on which applications are allowed to access the video room, and the latency of the invitee devices 114a-114n. For example, the video room system 102 is unlikely to provide a video room link to an invitee device if there is high latency and / or if the invitee associated with the invitee device has previously been invited to the video room but has never entered it. In some embodiments, the video room system 102 generates a ranked list of the invitee devices 114a-114n and automatically surfaces the video room link to a threshold number of the top-ranked invitee devices. For example, the video room system 102 generates a ranked list based on social graph information, user interactions, and other factors described above (e.g., by scoring each invitee using a weighted combination of factors and comparing the scores).
[0058] In one or more embodiments, the video room system 102 utilizes a machine learning model (e.g., a neural network) to determine which invitee devices should surface the video room link. For example, the video room system 102 utilizes a machine learning model trained to predict which invitee devices will join a video room given the video room link. In some cases, the video room system 102 inputs information into the machine learning model, such as affinity information between user accounts, recency of joining the same video room (or different video rooms), the number of people in the lobby for the video room, the lock status of the video room, platform restrictions on which applications are allowed to access the video room, and / or the latency of the invitee devices. The machine learning model then generates a prediction of whether the invitee device will join the video room (or predicts the probability or likelihood of joining the video room). The video room system 102 therefore provides the video room link to invitee devices predicted to join the video room (or whose join probability meets a threshold join probability).
[0059] In one or more embodiments, the video room system 102 ranks video rooms to determine which video rooms should be surfaced to the invitee device (e.g., the invitee device 114a). For example, the video room system 102 identifies multiple video rooms (e.g., video rooms created by the invitee's friends or other connections) that can be surfaced to the invitee device 114a based on the factors described above. The video room system 102 ranks the video rooms based on factors such as the recency of the video room's creation, the number of participants in the video room, connections to the creator, and / or connections to other participants in the video room. From the ranked list of video rooms, the video room system 102 identifies the number of top-ranked video room links (e.g., 1 or 3) to surface for display on the invitee device 114a (e.g., in a social networking feed).
[0060] In some embodiments, the video room system 102 limits the number of times a given video room link can be shared or forwarded. For example, the video room system 102 limits the video room link to a total of five shares or forwards (e.g., by a single device or cumulatively across all devices sharing the link). In these or other embodiments, the video room system 102 modifies the video room link based on the number of shares associated with the video room link. For example, the video room system 102 reduces the number of simultaneous recipients for a given video room link (e.g., the video room link may be sent to a limited number of recipients in a single message). Specifically, once the video room system 102 determines that the video room link has been shared a threshold number of times, the video room system 102 limits the number of simultaneous recipients for the video room link (e.g., invitee devices to which the video room link may be shared at one time or via a single message). Thus, initially, a new video room link may be shareable to up to five invitee devices at a time, and a video room link that has been shared a threshold number of times may be limited to a single invitee device per message.
[0061] 2, the invitee devices 114a-114n perform act 214 for providing instructions for entering a video room. In particular, the invitee devices 114a-114n provide an indication of user selection of a video room link for entering the video room. In some embodiments, the invitee device 114a provides different instructions than the invitee device 114n. For example, the invitee device 114a provides an indication of selection of a video room link configured to access the second messaging application 112 to enter the video room, and the invitee device 114n provides an indication of selection of a video room link configured to access a browser application to enter the video room. Indeed, as described, the video room system 102 configures the video room link differently for different invitee devices based on whether the invitee device is associated with the second messaging application 112 (or with the social networking system 104). Thus, the video room system 102 receives instruction(s) or request(s) to enter the video room from the invitee devices 114a-114n based on the user selection(s) of the video room link.
[0062] Additionally, the video room system 102 monitors entry attempts by the invitee devices 114a-114n. More specifically, the video room system 102 determines the number of entry attempts for a particular invitee device (e.g., invitee device 114a) and slows down the experience for the invitee device 114a if the invitee device 114a exceeds a threshold number of entry attempts within a time period. For example, the video room system 102 slows down the processing of user interactions and / or the presentation of various user interface elements to slow down the user experience of the invitee device 114a if the invitee device 114a exceeds the threshold number of entry attempts. In some cases, the video room system 102 increases the response time for the invitee device 114a to slow down the experience. In some embodiments, the video room system 102 prevents new entry attempts by the invitee device 114a for the time interval. Thus, by penalizing invitee devices with excessive entry attempts (and by using high-entropy link hashes), the video room system 102 prevents bots or unwanted users from entering the video room through brute force guessing or hacking of the video room link.
[0063] In one or more embodiments, the video room system 102 also receives instructions from the creator device 108 to enter the video room. Indeed, in some cases, such as in response to the creator selecting a video room element to create the video room from a particular interface, the video room system 102 automatically adds the creator device 108 to the video room without further input from the creator. However, in other cases, such as in response to the creator selecting a video room element from a different interface, the video room system 102 generates the video room but does not add the creator device 108 to the video room. Instead, the video room system 102 provides a video room link to the creator device 108 and then requires user interaction from the creator to select the video room link to add the creator device 108 to the video room.
[0064] 2 , the video room system 102 performs act 216 to authenticate the inviting device(s). In particular, the video room system 102 performs act 216 based on receiving (via the invitee device) an indication(s) of a user selection to enter the video room. As described above, the video room system 102 performs different authentication procedures for different invitee devices. For example, the video room system 102 authenticates different invitee devices differently based on factors such as whether the invitee device (or the corresponding invitee) is associated with the second messaging application 112 and / or the social networking system 104. Other authentication factors include whether the invitee device requested to enter the video room via an anonymous video room link (e.g., a video room link shared outside the first messaging application 110, the second messaging application 112, and the social networking system 104) or the trust score of the invitee device.
[0065] Indeed, depending on the authentication factors associated with the invitee device, the video room system 102 may have access to more or less information about the user associated with the invitee device. For example, the video room system 102 may access information from a social networking account in the social networking system 104 to verify the user's authenticity (e.g., by ensuring that the user is not a bot). In particular, the video room system 102 verifies the user based on various social networking information, such as the account's age, interaction history, and / or a social graph indicating relationships with other verified / authentic users.
[0066] In some embodiments, the video room system 102 accesses different information (or a different amount of information) about an invitee device that is not associated with the social networking system 104. For example, the video room system 102 authenticates an invitee device by accessing information such as browser data (including the invitee device's IP address), the number of entry attempts over a threshold time period, and / or an identification cookie associated with the invitee device. In some cases, the video room system 102 accesses the same or different information about an invitee device that requests to enter a video room via a video room link shared via text message, email, or other entry point outside the social networking system 104. Additional details regarding authenticating invitee devices are provided below with reference to subsequent figures.
[0067] 2, the video room system 102 performs act 218 to add invitee device(s) to the video room. In particular, the video room system 102 adds authorized invitee devices (e.g., invitee devices 114a-114n) to the video room (or to the video room lobby) and prevents unauthorized invitee devices from accessing the video room. The video room system 102 adds invitee devices to the video room by granting access to the video room (e.g., a URL) and allowing the invitee devices to participate in the video conference within the video room.
[0068] In some embodiments, the video room system 102 notifies the user account of an entry attempt by a blocked user account. Specifically, the video room system 102 determines or identifies user accounts that have been blocked by a particular invitee device (e.g., invitee device 114a) or by a particular user account. Upon detecting that the blocked user account has requested permission to access the video room or otherwise attempted to enter a video room that the invitee device 114a is already in, the video room system 102 provides an indication to the invitee device 114a (or other participant device) that a blocked user account is attempting to enter the video room. The invitee device 114a can therefore exit the video room or terminate its access to the video room to avoid contact with the blocked user account. In some cases, the video room system 102 notifies both the blocked user account and the user account that blocked the other user, while in other cases, the video room system 102 notifies only the user account that blocked the other user account.
[0069] In one or more embodiments, the video room system 102 adds invitee devices associated with blocked user accounts to a video room lobby to wait for the blocking user account's invitee devices to leave. Indeed, in some cases, the video room system 102 creates and maintains a video room lobby for a particular video room. The video room system 102 determines which invitee devices to add to the video room lobby, which invitee devices to add to the video room from the video room lobby, which invitee devices to add directly to the video room without first entering the video room lobby, and when to do any of the above.
[0070] In some cases, the video room system 102 generates a video room lobby specific to a particular video room. Upon receiving an entry request from an invitee device to enter a video room, the video room system 102 determines which invitee devices to add directly to the video room and which invitee devices to add to the video room lobby. For example, the video room system 102 adds a threshold number of invitee devices directly to the video room and adds any additional invitee devices to the video room lobby. In some embodiments, the video room system 102 selects invitee devices that enter via a link explicitly shared by the creator device 108 to be added directly to the video room. In other embodiments, the video room system 102 selects a threshold number of invitee devices associated with a user account with the highest affinity score to the creator user account to be added directly to the video room.
[0071] The video room system 102 adds invitee devices that enter through other links (e.g., links not explicitly shared with the invitee device) to the video room lobby. Additionally, the video room system 102 adds invitee devices associated with user accounts that have a lower affinity (e.g., lower than a threshold) to the creator user account to the video room lobby. In some cases, the video room system 102 adds invitee devices with lower trust scores to the video room lobby. In these or other cases, the video room system 102 adds invitee devices that enter through links shared by user accounts other than the creator user account to the video room lobby.
[0072] In one or more embodiments, the video room system 102 adds invitee devices to the video room from the video room lobby. For example, if a threshold number of invitee devices for the video room has not been met, the video room system 102 selects invitee devices (e.g., up to the threshold number) to add to the video room from the video room lobby. In some cases, the video room system 102 automatically (e.g., without user input) selects invitee devices to add to the video room from the video room lobby, for example, by selecting invitee devices (from among the invitee devices in the video room lobby) associated with a user account that has the highest affinity to the creator user account. In at least one embodiment, the video room system 102 receives user interaction from the client device 108 selecting one or more invitee devices to add to the video room from the video room lobby (e.g., from within the video room lobby interface).
[0073] Additionally, the video room system 102 performs acts 220 to facilitate video conferencing in the video room. More specifically, the video room system 102 receives data, such as video and audio streams, from client devices, such as the creator device 108 and the invitee devices 114a-114n. The video room system 102 also provides video and audio data from the creator device 108 to the invitee devices 114a-114n and provides video and audio data from the invitee devices 114a-114n to the creator device 108 and to the other invitee devices 114a-114n.
[0074] In some embodiments, the creator device 108 controls the video room. For example, the video room system 102 limits the number of participants that can be in the video room at one time according to the video room settings set by the creator device 108. When that number is met, the video room system 102 can add any additional invitee devices that request to enter the video room to a lobby associated with the video room. Upon detecting that an invitee device has left the video room, the video room system 102 can add the new invitee device to the video room (e.g., the invitee device that has been in the lobby the longest and / or has the closest connection / affinity to the creator).
[0075] As described above, the video room system 102 keeps a video room open (and keeps the video room link valid and functional) for a threshold time period (e.g., 4 hours, 1 hour, or 30 minutes) until the video room expires or the creator device 108 disables the video room link. In fact, the video room system 102 keeps the video room link active even if no users are in the video room until the threshold time period. Thus, invitee devices 114a-114n can freely enter and exit the video room (unless the room is locked, in which case the invitee devices 114a-114n can exit but cannot enter). In one or more embodiments, the video room system 102 maintains the video room permanently for days, weeks, or months without tying the video room to a specific meeting or event.
[0076] Further, as described above, the video room system 102 can authenticate invitee devices requesting entry into the video room. In particular, the video room system 102 can utilize different authentication procedures for invitee devices that enter via different video room links and / or that are associated with invitees who do or do not have accounts in the social networking system 104. Figure 3 illustrates authenticating an invitee device 114a using a first authentication procedure and authenticating an invitee device 114n using a second authentication procedure, according to one or more embodiments.
[0077] 3, the video room system 102 receives an indication of a user selection of a video room link from the invitee device 114a. Based on receiving the indication of the user selection of the video room link (or a request to enter the video room), the video room system 102 further performs act 302 to determine registration of the corresponding invitee in the social networking system 104. In some embodiments, the video room system 102 determines registration of the invitee in the second messaging application 112 in addition to (or as an alternative to) determining registration in the social networking system 104. In the same or other embodiments, the video room system 102 determines the configuration of the video room link for which the invitee device 114a is requesting to enter the video room. For example, the video room system 102 determines whether the video room link was surfaced in a chat in the first messaging application 110, in the second messaging application 112, in a social networking feed, or provided in a text message or email.
[0078] In one or more embodiments, the video room system 102 treats video room links surface differently in different applications. For example, the video room system 102 prioritizes entry attempts by invitee devices based on the selection of video room links surfaced in different applications. In some cases, the video room system 102 first adds invitee devices that enter via a video room link in a chat in a first messaging application 110 to the video room. The video room system 102 also next adds invitee devices that enter via a video room link in a chat in a second messaging application 112, followed by invitee devices that enter via a video room link surfaced in a social networking feed, and then invitee devices that enter via a video room link in a text message or email. In some cases, if the number of invitee devices attempting to enter the video room exceeds a threshold number of invitee devices for the video room, the video room system 102 denies entry to one or more invitee devices based on priority.
[0079] Based on determining that an invitee associated with the invitee device 114a is registered with the social networking system and / or the second messaging application 112 (and / or based on determining that a video room link has surfaced in the second messaging application 112 or a social networking feed), the video room system 102 performs act 304 to authenticate the invitee device 114a using a first authentication procedure. For example, the video room system 102 analyzes social networking information such as connections between the invitee and co-users of the social networking system 104 (e.g., connections between trusted and untrusted co-users and behavioral information within the social networking system 104). Additionally, the video room system 102 analyzes profile information, such as the age of the social networking account or profile and the completeness of the profile, as part of the authentication procedure.
[0080] 3, the video room system 102 further receives an indication of a user selection of a video room link from the invitee device 114n. Based on receiving the indication of the user selection of the video room link (or a request to enter the video room), the video room system 102 further performs act 306 to determine registration of the corresponding invitee in the social networking system 104. In some embodiments, the video room system 102 determines registration of the invitee in the second messaging application 112 in addition to (or as an alternative to) determining registration in the social networking system 104. In the same or other embodiments, the video room system 102 determines the configuration of the video room link for which the invitee device 114n is requesting to enter the video room. For example, the video room system 102 determines whether the video room link was surfaced in a chat in the first messaging application 110, in the second messaging application 112, in a social networking feed, or provided in a text message or email.
[0081] As shown, the video room system 102 further performs act 308 to authenticate the invitee device 114n (or the invitee) based on determining that the invitee device 114n is not registered with the social networking system 104 (or with the second messaging application 112). Indeed, the video room system 102 determines that additional information is needed to authenticate the invitee device 114n based on the invitee device 114n not being associated with the social networking system 104 (and therefore not having readily available social networking information). Accordingly, the video room system 102 performs different authentication procedures to access information such as browser data (e.g., one or more cookies), the total number of entry attempts received from the invitee device 114n, the number of entry attempts in a given time period, and the IP address of the invitee device 114n. In some embodiments, the video room system 102 accesses all or part of this information to perform the authentication procedure. The video room system 102 implements a more thorough authentication procedure (e.g., by having access to more information) for anonymous devices (e.g., devices that are not invited but potentially attempt to enter the video room).
[0082] As part of the authentication procedure, in some embodiments, the video room system 102 determines a trust score for the invitee device 114a and the invitee device 114n, etc. (or for the corresponding invitee). For example, the video room system 102 determines a trust score to indicate a measure of trust, as determined based on analyzed information (e.g., related to acts 304 or 308). If the video room system 102 determines that the trust score satisfies a threshold, the video room system 102 determines that the invitee device (or invitee) is authentic or valid and may enter the video room. On the other hand, if the video room system 102 determines that the trust score does not satisfy the threshold, the video room system 102 determines that the invitee device (or invitee) is not authentic and may not enter the video room.
[0083] In some embodiments, not only does the video room system 102 use different authentication procedures for different invitee devices (e.g., invitee devices 114a and 114n), but the video room system 102 also uses different authentication procedures for different applications. For example, the first messaging application 110 and the second messaging application 112 do not necessarily share the same way of identifying and / or authenticating users. In some cases, the video room system 102 authenticates a first user of the first messaging application 110 using a first authentication procedure (e.g., act 308) and authenticates a second user of the second messaging application using a second authentication procedure (e.g., act 304).
[0084] As described above, the video room system 102 may provide an entry point within the user interface of the first messaging application 110 for creating a video room (through functionality of the second messaging application 112). Indeed, for the entry point for creating a video room, the video room system 102 may provide a video room element within the user interface of the first messaging application 110. Figure 4 illustrates an author device 108 displaying a call interface 402 including a video room element 404, according to one or more embodiments.
[0085] As shown in Figure 4, the video room system 102 provides (or displays) a call interface 402 of the first messaging application 110 in response to a user interaction with the call element (indicated by a telephone-shaped icon near the bottom of the user interface). Figure 4 shows the call element in a navigation menu that includes various navigation options, such as a status element for viewing a status interface, a call element for viewing the call interface 402, a camera element for viewing a camera interface, a chat element for viewing a chat menu interface, and a settings element for entering a settings interface.
[0086] In some embodiments, the video room system 102 provides a call history for display within the call interface 402. Within the call interface 402, the video room system 102 provides a video room element 404 that can be selected to create a video room. Based on a user selection of the video room element 404, the video room system 102 accesses (the functionality of) the second messaging application 112 to create the video room. In some embodiments, the video room system 102 accesses the second messaging application 112 further based on determining that the first messaging application 110 does not have the capability to create a video room and determining that the creator device 108 has a version of the second messaging application 112 installed that is capable of creating video rooms.
[0087] As another entry point for creating a video room, the video room system 102 can provide a new call interface that includes a video room element as part of the first messaging application 110. In particular, the video room system 102 can provide (or display) the new call interface based on a user interaction of selecting the new call element (e.g., the phone-shaped icon with a “+” sign in the upper right corner of the call interface 402 in FIG. 4). FIG. 5 illustrates the creator device 108 displaying the new call interface 502 that includes a video call list 506 of users associated with the creator (e.g., users also registered with the first messaging application 110) and the video room element 404, according to one or more embodiments.
[0088] 5, the video room system 102 populates the video call list 506 by identifying invitees with accounts registered with the first messaging application 110 and / or by identifying invitee devices of users associated with the creator and having the first messaging application 110 installed. Additionally (or alternatively), the video room system 102 identifies co-users of the social networking system 104 and / or determines relationships or affinities between the creator and co-users based on various interactions with each other or with various web content. In some embodiments, the video room system 102 thus generates the video call list 506 to include users who have at least a threshold strength of relationship (or threshold affinity) with the creator and who are registered with the first messaging application 110.
[0089] As described above, the video room system 102 can provide entry points within a chat interface. In particular, the video room system 102 can provide a chat interface to display a chat thread between an author and one or more other users of a first messaging application. FIG. 6A shows a chat interface 602 for a “Family Chat” that includes various users in the chat thread, such as “Person 1,” “Person 3,” etc., according to one or more embodiments. As shown, in FIG. 6A , the video room system 102 provides an attachment option 603 for display within the chat interface 602, which is selectable to access a message attachment menu.
[0090] Indeed, based on receiving an indication of a user selection of the attachment option 603, the video room system 102 can provide a message attachment menu for display within the chat interface 602, where the message attachment menu can include a video room element for creating a video room. Figure 6B illustrates an author device 108 displaying a chat interface 602 including a message attachment menu 604, according to one or more embodiments.
[0091] 6B, the message attachment menu 604 includes options for the creator to share various content within the chat, including photos, documents, locations, or contact information for various contacts. Additionally, the video room system 102 includes a video room element 606 within the message attachment menu 604.
[0092] Upon receiving a user interaction indication selecting the video room element 606, the video room system 102 accesses functionality of the second messaging application 112 to create the video room. In some embodiments, the video room system 102 also automatically provides a video room link (to access the created video room) within the chat thread of the chat interface 602 (i.e., based on the video room originating from the creator's selection of the video room element 606 within the message attachment menu 604).
[0093] In addition to the entry points described above, the video room system 102 can also provide a video room element within a new call menu of the chat interface. For example, FIG. 7A shows the creator device 108 displaying a chat interface 702 (for "family chat") that includes a new call element 703, according to one or more embodiments. Upon receiving an indication of user interaction with the new call element 703, the video room system 102 provides the new call menu for display within the chat interface 702.
[0094] 7B illustrates an author device 108 displaying a chat interface 702 including a new call menu 704, according to one or more embodiments. As illustrated in FIG. 7B, the new call menu 704 includes a video room element 706. As described above, the video room system 102 generates the video room based on a user interaction with the video room element 706. In particular, the video room system 102 accesses, utilizes, and / or redirects the author to the second messaging application 112 to generate the video room. Similar to the description of FIG. 6B, once the video room system 102 generates the video room by determining that the selected video room element 706 is relevant to the chat interface 702, it can automatically provide a video room link for the video room within the chat thread of the chat interface 702.
[0095] As described above, based on user interaction with the video room element, the video room system 102 can create a video room by accessing, utilizing, and / or redirecting to a second messaging application 112. FIG. 8 illustrates an author device 108 displaying a redirection notification 802 within a new call interface 800, according to one or more embodiments. The video room system 102 can similarly redirect from any of the above interfaces shown in FIGS. 4-7B that include a video room element.
[0096] As shown in FIG. 8 , the redirection notification 802 includes a continue option 804 and a cancel option 806. The redirection notification 802 further includes the instruction, "To create a room, go to Facebook Messenger." In response to user interaction with the continue option 804, the video room system 102 accesses the second messaging application 112 and displays the video room settings interface. Conversely, in response to user interaction with the cancel option 806, the video room system 102 cancels the redirection and the creation of the video room. Relatedly, FIG. 9A illustrates an alternative (or additional) redirection notification 902 including an open option 904, according to one or more embodiments. Based on user selection of the open option 904, the video room system 102 accesses and / or redirects the second messaging application 112 to create the video room.
[0097] Based on receiving a user interaction indication to proceed to the second messaging application 112 to create the video room, the video room system 102 can transition to the second messaging application 112 to provide a video room creation interface. In particular, the video room system 102 can transition the creator device 108 from displaying the interface of the first messaging application 110 to displaying the interface of the second messaging application 112. Figure 9B illustrates a video room creation interface 906 associated with the second messaging application 112, according to one or more embodiments.
[0098] 9B, the video room system 102 generates and provides a video room creation interface 906 for display on the creator device 108. In particular, the video room system 102 generates the video room creation interface 906 to include several selectable options or elements. For example, the video room creation interface 906 includes a settings option 908, a room activity option 910, and a create room option 912.
[0099] In response to a user interaction selecting settings option 908 (Settings), the video room system 102 provides a video room settings interface, as described with respect to FIG. 10 . In response to a user interaction with room activity option 910 (Room Activity), the video room system 102 provides a display of user activity related to the video room. For example, the video room system 102 provides display elements indicating user accounts that have requested to enter the video room, user accounts that are already in the video room, and / or user accounts that have exited the video room. In some cases, the video room system 102 generates and provides a chronological history of all activity within the video room. In these or other cases, the video room system 102 generates the history to further include an indication of any shared media within the video room (including the name of the media, the user account that shared the media, and when the sharing occurred).
[0100] In response to a user interaction selecting the create room option 912, the video room system 102 generates the video room. In particular, the video room system 102 generates the video room according to the settings set by the creator device 108 (described with respect to FIG. 10 ). For example, as described above, the video room system 102 makes the virtual space accessible via a link for other devices to enter.
[0101] As described above, the video room system 102 can provide a video room settings interface for creating a video room. FIG. 10 illustrates an author device 108 displaying a video room settings interface 1002, according to one or more embodiments. As shown in FIG. 10, the video room settings interface 1002 includes options for changing several settings for the video room. For example, the video room settings interface 1002 includes a selectable option for locking the video room to prevent additional users / devices from entering. Additionally, the video room settings interface 1002 includes a selectable option for sharing a video room link to generate a video room link that can be shared via the first messaging application 110, the second messaging application 112, a text messaging application, or an email application. Additionally, the video room settings interface 1002 includes a selectable option for exiting the video room, which causes the author device 108 to exit the video room and the video room system 102 to force all invitee devices joining the video room to exit and disable the video room link. Additionally, the video room settings interface 1002 includes a selectable option to exclude certain participants from the video room.
[0102] In some embodiments, within the video room settings interface 1002, the video room system 102 provides additional audience control to the creator device 108. In particular, the video room system 102 allows the creator device 108 to control the number of users in the video room, whether certain users can enter the video room, and / or what types of devices can enter the video room. For example, the video room system 102 provides a selectable option for setting a threshold number of participants for the video room. As another example, the video room system 102 provides a selectable option for identifying user accounts that are prohibited, blocked, or prevented from entering the video room. Additionally, the video room system 102 provides a selectable option for indicating what types of entry attempts are allowed access to the video room (e.g., only devices accessing from the second messaging application 112 and / or devices associated with users who have accounts with the social networking system 104). For example, the creator device 108 can indicate that "people with the link," "only people on Facebook," or "only people on Messenger" can enter.
[0103] The video room system 102 further provides audience control to the creator device 108 by allowing the creator device 108 to lock the video room. In some embodiments, the video room system 102 locks the video room only with an explicit input to lock the video room. In other embodiments, the video room system 102 locks the video room when the creator device 108 leaves the video room, but the video room system 102 keeps the video room active.
[0104] After creating the video room via the second messaging application 112, the video room system 102 can transition to the first messaging application 110. In particular, the video room system 102 can access the first messaging application 110 and provide a redirection notification requesting permission to return the creator to a previous location (e.g., a location with a particular chat or chats at the time the creator selected the video room element). In some embodiments, the video room system 102 redirects to the first messaging application 110 upon user interaction selecting the video room link sharing element. FIG. 11 illustrates an author device 108 displaying a video room sharing interface 1102 associated with the second messaging application 112 and including a redirection notification 1104, according to one or more embodiments.
[0105] 11 , the video room sharing interface 1102 includes a video room link sharing element (a button with the text "Send link on WhatsApp"). Based on receiving an indication of a user interaction with the video room link sharing element, the video room system 102 provides a redirection notification 1104 ("Messenger wants to open WhatsApp") requesting permission to display within the video room sharing interface 1102 and to return to the first messaging application 110. In some cases, the video room system 102 receives an instruction to provide the redirection notification 1104 from the operating system of the creator device 108. Indeed, some operating systems require user consent before transitioning from one application to another (e.g., via a deep link).
[0106] For example, when generating a video room link, the video room system 102 generates a data packet to be included as part of the video room link. In some cases, the data packet includes information such as a chat thread identifier and / or a chat location identifier. Based on the chat thread identifier and / or the chat location identifier, the video room system 102 redirects the creator device 108 to a specific chat location for inserting the video room link. Thus, the video room system 102 redirects the creator device 108 from the second messaging application 112 to the first messaging application 110 and provides (or causes the creator device 108 to display) the same chat thread (and / or the same location within the chat thread) that the creator device 108 was viewing when the creator selected the video room element. In some embodiments, the second messaging application 112 has an open protocol to facilitate redirection to any first-party application (e.g., an application associated with the social networking system 104) that originally initiated a transaction in (or transition to) the second messaging application 112.
[0107] 12 illustrates the creator device 108 displaying a chat selection interface 1202 for the first messaging application 110 based on redirection from the second messaging application 112, according to one or more embodiments. As shown in FIG. 12, the video room system 102 provides the chat selection interface 1202 through which the creator can select a chat with which to share the generated link for the video room. The chat selection interface 1202 shows a selection indicator 1204 indicating that the creator selected “Family Chat” as the chat with which to share the generated video room link.
[0108] Based on detecting a selection of a chat with which to share the video room link, the video room system 102 can provide (or cause the creator device 108 to display) a message assembly interface for sending the video room link. In some embodiments, the video room system 102 can provide a message assembly interface including the video room link based on the creator's selection of a video room link share element (e.g., without first providing the chat selection interface 1202 of FIG. 12 ). FIG. 13 shows the creator device 108 displaying a message assembly interface 1302 (e.g., “Family Chat”) that includes a video room link 1304, according to one or more embodiments. Indeed, based on the selection of the chat from the chat interface 1202 (or based on the selection of the video room link share element to share the video link generated for the particular chat), the video room system 102 populates a chat message with the video room link 1304 to add to the “Family Chat,” as shown in the message assembly interface 1302.
[0109] Additionally, the message assembly interface 1302 includes a selectable send option 1306 (Send) for sending a chat message that includes the video room link 1304 to the chat. Thus, other users (e.g., invitee devices 114a-114n) in the "family chat" can enter the video room by selecting the video room link 1304. In effect, the video room system 102 adds the invitee device to the video room based on detecting or identifying the selection of the video room link 1304.
[0110] As described above, the video room system 102 can provide a chat interface based on a user selection of the send option 1306. In some embodiments, the video room system 102 can provide a chat interface including a video room link based on an author selection of a video room link sharing element (e.g., without first providing the chat selection interface 1202 of FIG. 12 and / or the message assembly interface 1302 of FIG. 13). Along these lines, FIG. 14 illustrates an author device 108 displaying a chat interface 1402 including a video room link 1404 based on user interaction with the send option 1306 (or based on automatically sending the video room link 1404), according to one or more embodiments.
[0111] In addition to the chat interface 1402 displayed on the creator device 108, the video room system 102 provides a similar interface for display on invitee devices associated with the users in the chat (e.g., invitee devices 114a-114n). As shown, the video room system 102 provides a video room link 1404 within the chat interface 1402 (and corresponding chat interfaces on other devices) so that other members of the chat can select the video room link 1404 to enter the video room.
[0112] As described above, the video room system 102 can surface a video room link to an invitee device. In particular, the video room system 102 can provide the video room link for display within the social networking feed of the invitee (or a user who is considered to be an invitee based on their connection with the creator). Figure 15 illustrates an invitee device 114a displaying a social networking interface 1502 that includes a social networking feed 1506 (e.g., a "news feed"), according to one or more embodiments. The social networking feed 1506 is scrollable to view additional content, such as posts and status updates, below the viewable portion shown in Figure 15.
[0113] As shown in FIG. 15 , the social networking interface 1502 includes two video room links: a video room link 1504 and a video room link 1508. The video room system 102 provides the video room link 1504 for display within the discovery pane of the social networking interface 1502 based on determining that an invitee associated with the invitee device 114a has at least a threshold affinity with the creator user. In some cases, as described, the video room system 102 utilizes a machine learning model to determine the likelihood that the invitee device 114a will enter the video room based on factors such as affinity and previous participation in the video room. In either case, the video room system 102 surfaces the video room link 1504 within the social networking interface 1502 based on the affinity and / or machine learning model prediction. As an additional or alternative location within the social networking interface 1502, the video room system 102 provides the video room link 1508 for display within the social networking feed 1506.
[0114] In some cases, some locations may be more likely to result in entering a video room than other locations. The video room system 102 may therefore determine whether to provide the video room link 1504 or the video room link 1508 (or both) based on the affinity between the user accounts and / or the probability of entering the video room. For example, the video room system 102 may determine that providing the video room link 1504 at a location in a banner fixed to the top portion of the social networking interface 1502 will make it more likely that the invitee device 114a will enter the video room. Thus, the video room system 102 may provide the video room link 1504 in response to determining a higher affinity between the invitee user account and the creator user account and / or determining a higher probability of entering. Conversely, the video room system 102 may provide the video room link 1508 in response to determining a lower affinity score and / or a lower probability.
[0115] In addition to (or as an alternative to) providing a video room link within a social networking feed, the video room system 102 can provide the video room link for display within the second messaging application 112. In particular, the video room system 102 can provide the video room link for display within a chat interface of the second messaging application 112. Figure 16 illustrates an invitee device 114a displaying a chat interface 1602 of the second messaging application 112, according to one or more embodiments.
[0116] 16 , chat interface 1602 includes a video room link 1604 and a video room link 1606 for a video room associated with the creator device 108. As shown, the video room system 102 provides the video room link 1604 within the discovery pane of the second messaging application 112. The video room system 102 also (or alternatively) provides the video room link 1606 for display within a chat menu of selectable chat elements for viewing chat threads within the second messaging application 112.
[0117] The video room system 102 surfaces the video room link 1604 based on determining an affinity between the invitee user account and the creator user account in the social networking system 104 and / or based on determining a probability of entry via a machine learning model. Additionally or alternatively, the video room system 102 provides the video room link 1606 based on the same criteria.
[0118] In some embodiments, the video room system 102 provides the video room link 1604 and / or the video room link 1606 based on additional or alternative criteria. As an example, the video room system 102 determines that an invitee associated with the invitee device 114a is registered with the second messaging application 112. As described above, the second messaging application 112 is associated with and has access to social networking information of the social networking system 104, such as social graph and behavioral data.
[0119] As described above, based on detecting or receiving a selection of a video room link from one or more of the invitee devices 114a-114n in the chat, the video room system 102 can facilitate video chatting between the creator device 108 and one or more invitee devices 114a-114n. Indeed, the video room system 102 can provide and display video streams captured by cameras of various client devices, such as the creator device 108 and the invitee device 114a. Figure 17 illustrates the creator device 108 displaying a video room interface 1702, according to one or more embodiments.
[0120] 17, the video room interface 1702 includes multiple video streams from each of the devices of the people in the video room. In some embodiments, the video room system 102 provides different sized windows for different streams within the video room. For example, the video room system 102 identifies a dominant speaker and provides the stream from the device associated with the dominant speaker as the largest window within the video room interface 1702.
[0121] To determine the dominant speaker, in some cases, the video room system 102 analyzes volume amplitudes associated with invitee devices in the video room. For example, the video room system 102 determines the volume amplitudes associated with each invitee device and compares the amplitudes to ascertain which invitee device is dominant. In some cases, the video room system 102 determines the dominant speaker based on a threshold volume amplitude. For example, the video room system 102 identifies an invitee device with a volume amplitude that satisfies a volume threshold as the dominant speaker. Furthermore, the video room system 102 adjusts or modifies the volume threshold based on the volume amplitudes of the invitee devices. For example, if the video room system 102 determines high volume amplitudes for some invitee devices, the video room system 102 automatically increases the volume threshold. Conversely, if the video room system 102 determines low volume amplitudes for all (or a subset) of the invitee devices, the video room system 102 decreases the volume threshold.
[0122] 18, additional details regarding the components and capabilities of video room system 102 are provided. In particular, FIG. 18 illustrates an exemplary schematic diagram of video room system 102 on an exemplary computing device 1800 (e.g., creator device 108, server(s) 106, and / or one or more of invitee devices 114a-114n). As shown in FIG. 18, video room system 102 may include a user interface manager 1802, a video room creation manager 1804, a video room link manager 1806, a video room facilitation manager 1808, and a storage manager 1810.
[0123] As described above, video room system 102 includes a user interface manager 1802. In particular, user interface manager 1802 manages, maintains, provides, displays, presents, renders, or rasterizes user interface elements within one or more user interfaces of first messaging application 110, second messaging application 112, and / or social networking applications associated with social networking system 104. For example, user interface manager 1802 provides video room elements and video room links for display in the user interfaces in accordance with the description above.
[0124] As shown, the video room system 102 also includes a video room creation manager 1804. In particular, the video room creation manager 1804 manages, maintains, generates, or creates video rooms. For example, the video room creation manager 1804 creates video rooms based on user interactions with video room elements. Additionally, the video room creation manager 1804 determines video room settings based on input from the creator device 108. The video room creation manager 1804 communicates with a storage manager 1810 to store video room data (e.g., video room URLs) in a database 1812.
[0125] Additionally, the video room system 102 includes a video room link manager 1806. In particular, the video room link manager 1806 generates, maintains, manages, identifies, provides, displays, or distributes video room links for video rooms. In some embodiments, the video room link manager 1806 communicates with the user interface manager 1802 to provide the video room link within a particular user interface on the creator device 108 and / or one or more of the invitee devices 114a-114n. For example, the video room link manager 1806 determines and receives input from the creator device 108 to share a video room link with a particular invitee device. Additionally, the video room link manager 1806 determines connections between creators and invitees to automatically surface video room links, as described above.
[0126] Additionally, the video room system 102 includes a video room facilitation manager 1808. In particular, the video room facilitation manager 1808 facilitates video conferences within the video room by receiving and providing video and audio streams from participating devices that have permission to access the video room. Additionally, the video room facilitation manager 1808 keeps the video room open (even with no participating devices) for a threshold time period or until the creator closes the video room.
[0127] In one or more embodiments, each of the components of the video room system 102 communicates with one another using any suitable communication technology. Additionally, the components of the video room system 102 may communicate with one or more other devices, including one or more client devices described above. While the components of the video room system 102 are shown as separate in FIG. 18 , it will be appreciated that any of the sub-components may be combined into fewer components, such as a single component, or split into more components to service a particular implementation. Additionally, while the components of FIG. 18 are described with respect to the video room system 102, at least some of the components for performing operations in conjunction with the video room system 102 described herein may be implemented on other devices in the environment.
[0128] Components of the video room system 102 may include software, hardware, or both. For example, components of the video room system 102 may include one or more instructions stored on a computer-readable storage medium and executable by a processor of one or more computing devices (e.g., computing device 1800). When executed by one or more processors, the computer-executable instructions of the video room system 102 cause the computing device 900 to perform the methods described herein. Alternatively, components of the video room system 102 may comprise hardware, such as a dedicated processing device for performing a certain function or group of functions. Additionally or alternatively, components of the video room system 102 may include a combination of computer-executable instructions and hardware.
[0129] Furthermore, components of the video room system 102 that perform the functions described herein may be implemented, for example, as part of a standalone application, as a module of an application, as a plug-in for an application, including a content management application, as one or more library functions that can be called by other applications, and / or as a cloud computing model. Thus, components of the video room system 102 may be implemented as part of a standalone application on a personal computing device or a mobile device. Alternatively or additionally, components of the video room system 102 may be implemented in any application that enables the creation and delivery of marketing content to users, including, but not limited to, various applications.
[0130] 1-18, corresponding text, and examples provide several different systems, methods, and non-transitory computer-readable media for generating and providing video room links using a cross-application process that includes accessing functionality of a second messaging application through user interaction within a first messaging application. In addition to the above, embodiments may also be described in terms of flowcharts that include acts to achieve a particular result. For example, FIG. 19 shows a flowchart of an exemplary sequence of acts according to one or more embodiments.
[0131] While Figure 19 illustrates acts according to some embodiments, alternative embodiments may omit, add to, rearrange, and / or modify any of the acts shown in Figure 19. The acts of Figure 19 may be performed as part of a method. Alternatively, a non-transitory computer-readable medium may comprise instructions that, when executed by one or more processors, cause a computing device to perform the acts of Figure 19. In still further embodiments, a system may perform the acts of Figure 19. Additionally, the acts described herein may be repeated or performed in parallel with each other or with different instances of the same or other similar acts.
[0132] FIG. 19 shows an example series of acts 1900 for generating and providing a video room link for a video room by accessing functionality of a second messaging application as a result of user interaction within a first messaging application. The series of acts 1900 includes an act 1902 of providing a video room element within the first messaging application. In particular, act 1902 may include providing a selectable video room element for generating a video room for video conferencing between two or more devices for display within a chat interface of the first messaging application on the creator device. The series of acts 1900 may include an act of generating a video call list interface for display within the first messaging application on the creator device based on a social graph indicating connections between the creator associated with the creator device and co-users of the social networking system, the video call list interface comprising a listing of co-users who have connections to the user in the social graph and who are eligible to be invited to the video room via the first messaging application. The series of acts 1900 may also include an act of providing a second video room element for display within the video call list interface.
[0133] As shown, the series of acts 1900 also includes an act of receiving instructions to create a video room 1904. In particular, act 1904 can involve receiving instructions to generate the video room from an author device and based on user interactions selecting video room elements.
[0134] The series of acts 1900 further includes an act of determining whether a second messaging application has been installed 1906. In particular, act 1906 may involve determining whether a second messaging application has been installed on the creator device based on the instructions to generate the video room.
[0135] As further shown in FIG. 19 , the series of acts 1900 includes an act 1908 of generating a video room link. In particular, act 1908 may involve selecting from the second messaging application and a browser application to generate a video room link that is shareable to invite invitee devices in a chat associated with a chat interface of the first messaging application to enter a video room based on determining whether the second messaging application is installed on the creator device. In some cases, act 1908 may involve utilizing one or more features of the second messaging application to generate a video room link that is shareable to invite invitee devices in a chat associated with the chat interface of the first messaging application to enter a video room based on determining that the second messaging application is installed on the creator device. Additionally (or alternatively), act 1908 may involve utilizing a browser application to generate a video room link that is shareable to invite invitee devices in a chat associated with the chat interface of the first messaging application to enter a video room based on determining that the second messaging application is not installed on the creator device.
[0136] Further, the series of acts 1900 may include an act 1910 of providing a video room link. In particular, act 1910 may involve automatically providing the video room link for display within chat interfaces of a first messaging application on the creator device and the invitee device based on generating the video room link. Act 1910 (or another act in the series of acts 1900) may include an act of automatically surfacing the video room link within one or more social networking feeds of the collaborative users based on connections between the user and the one or more collaborative users based on generating the video room link. Act 1910 may involve determining a location within the chat thread where the video room element will be displayed at the selected time and providing the video room link for display at the location within the chat thread.
[0137] The series of acts 1900 may also include an act of providing a chat selection interface comprising a listing of selectable chat elements for display within the first messaging application and for sharing the video room link in a chat associated with the creator device based on generating the video room link. The series of acts 1900 may also include an act of determining that the video room link has been shared at least a threshold number of times, and an act of limiting the number of invitees with whom the video room link may be shared in a single message based on determining that the video room link has been shared at least the threshold number of times.
[0138] Further, the series of actions 1900 may include, based on receiving an indication of user interaction with the video room link, causing a first invitee device associated with the second messaging application to access the second messaging application to enter the video room, and causing a second invitee not associated with the second messaging application to access a browser to enter the video room.
[0139] Embodiments of the present disclosure may comprise or utilize special purpose or general purpose computers, including computer hardware such as, for example, one or more processors and system memory, as described in more detail below. Embodiments within the scope of the present disclosure also include physical and other computer-readable media for carrying or storing computer-executable instructions and / or data structures. In particular, one or more of the processes described herein may be implemented, at least in part, as instructions embodied in a non-transitory computer-readable medium and executable by one or more computing devices (e.g., any of the media content access devices described herein). Generally, a processor (e.g., a microprocessor) receives instructions from a non-transitory computer-readable medium (e.g., memory, etc.) and executes those instructions, thereby performing one or more processes, including one or more of the processes described herein.
[0140] Computer-readable media may be any available media that can be accessed by a general-purpose or special-purpose computer system. Computer-readable media that store computer-executable instructions are non-transitory computer-readable storage media (devices). Computer-readable media that carry computer-executable instructions are transmission media. Thus, by way of example, and not limitation, embodiments of the present disclosure may comprise at least two distinctly different kinds of computer-readable media: non-transitory computer-readable storage media (devices) and transmission media.
[0141] Non-transitory computer-readable storage media (devices) include RAM, ROM, EEPROM, CD-ROM, (e.g., RAM-based) solid-state drives ("SSD"), flash memory, phase-change memory ("PCM"), other types of memory, other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store desired program code means in the form of computer-executable instructions or data structures and that can be accessed by a general-purpose or special-purpose computer.
[0142] A "network" is defined as one or more data links that enable the transport of electronic data between computer systems and / or modules and / or other electronic devices. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a transmission medium. Transmission media may include networks and / or data links that may be used to carry desired program code means in the form of computer-executable instructions or data structures and that may be accessed by a general-purpose or special-purpose computer. Combinations of the above should also be included within the scope of computer-readable media.
[0143] Furthermore, upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures may be automatically transferred from transmission media to non-transitory computer-readable storage media (devices) (or vice versa). For example, computer-executable instructions or data structures received over a network or data link may be buffered in RAM within a network interface module (e.g., a "NIC") and then ultimately transferred to computer system RAM and / or to less volatile computer storage media (devices) in the computer system. Thus, it should be understood that non-transitory computer-readable storage media (devices) may be included in computer system components that also (or even primarily) utilize transmission media.
[0144] Computer-executable instructions comprise instructions and data that, when executed on, for example, a processor, cause a general-purpose computer, a special-purpose computer, or a special-purpose processing device to perform a certain function or group of functions. In some embodiments, computer-executable instructions are executed on a general-purpose computer to transform the general-purpose computer into a special-purpose computer that implements elements of the present disclosure. Computer-executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. Although the subject matter has been described in language specific to structural features and / or methodological acts, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts set forth above. Rather, the described features and acts are disclosed as exemplary forms of implementing the claims.
[0145] Those skilled in the art will appreciate that the present disclosure may be practiced in networked computing environments with many types of computer system configurations, including personal computers, desktop computers, laptop computers, message processors, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, cellular phones, PDAs, tablets, pagers, routers, switches, etc. The present disclosure may also be practiced in distributed system environments where tasks are performed by both local and remote computer systems that are linked through a network (either by hardwired data links, wireless data links, or a combination of hardwired and wireless data links). In a distributed system environment, program modules may be located in both local and remote memory storage devices.
[0146] Embodiments of the present disclosure may also be implemented in a cloud computing environment. As used herein, "cloud computing" is defined as a model for enabling on-demand network access to a shared pool of configurable computing resources. For example, cloud computing may be adopted in the market to provide ubiquitous, convenient, on-demand access to a shared pool of configurable computing resources. The shared pool of configurable computing resources may be rapidly provisioned through virtualization, released with low management effort or service provider interaction, and then scaled accordingly.
[0147] Cloud computing models may be composed of various characteristics, such as, for example, on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured service. Cloud computing models may also expose various service models, such as, for example, Software as a Service ("SaaS"), Platform as a Service ("PaaS"), and Infrastructure as a Service ("IaaS"). Cloud computing models may also be deployed using different deployment models, such as private cloud, community cloud, public cloud, hybrid cloud, etc. As used herein and in the claims, a "cloud computing environment" is an environment in which cloud computing is employed.
[0148] FIG. 20 illustrates a block diagram of an exemplary computing device 2000 (e.g., server(s) 106, creator device 108, and / or invitee device 114) that may be configured to perform one or more of the processes described above. It will be appreciated that one or more computing devices, such as computing device 2000, may implement video room system 102. As illustrated by FIG. 20, computing device 2000 may comprise a processor 2002, a memory 2004, a storage device 2006, an I / O interface 2008, and a communication interface 2010, which may be communicatively coupled via a communication infrastructure 2012. While an exemplary computing device 2000 is illustrated in FIG. 20, the components illustrated in FIG. 20 are not limiting. In other embodiments, additional or alternative components may be used. Furthermore, in some embodiments, computing device 2000 may include fewer components than those illustrated in FIG. 20. Next, the components of the computing device 2000 shown in FIG. 20 will be described in further detail.
[0149] In one or more embodiments, processor 2002 includes hardware for executing instructions, such as those making up a computer program. For example, to execute instructions, processor 2002 may retrieve (or fetch) instructions from an internal register, an internal cache, memory 2004, or storage device 2006, decode them, and execute them. In one or more embodiments, processor 2002 may include one or more internal caches for data, instructions, or addresses. For example, processor 2002 may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in an instruction cache may be copies of instructions in memory 2004 or storage device 2006.
[0150] The memory 2004 may be used to store data, metadata, and programs for execution by the processor(s). The memory 2004 may include one or more of volatile and non-volatile memory, such as random access memory (“RAM”), read-only memory (“ROM”), solid-state disk (“SSD”), flash, phase-change memory (“PCM”), or other types of data storage. The memory 2004 may be internal or distributed memory.
[0151] The storage device 2006 includes storage for storing data or instructions. For example, the storage device 2006 can comprise a non-transitory storage medium as described above. The storage device 2006 may include a hard disk drive (HDD), a floppy disk drive, flash memory, an optical disk, a magneto-optical disk, a magnetic tape, or a universal serial bus (USB) drive, or a combination of two or more of these. The storage device 2006 may include removable or non-removable (or fixed) media, as appropriate. The storage device 2006 may be internal or external to the computing device 2000. In one or more embodiments, the storage device 2006 is a non-volatile solid-state memory. In other embodiments, the storage device 2006 includes a read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable programmable ROM (EAROM), or flash memory, or a combination of two or more of these.
[0152] The I / O interface 2008 enables a user to provide input to and receive output from the computing device 2000, or otherwise transfer data to and receive data from the computing device 2000. The I / O interface 2008 may include a mouse, a keypad or keyboard, a touchscreen, a camera, an optical scanner, a network interface, a modem, another known I / O device, or a combination of such I / O interfaces. The I / O interface 2008 may include one or more devices for presenting output to a user, including, but not limited to, a graphics engine, a display (e.g., a display screen), one or more output drivers (e.g., a display driver), one or more audio speakers, and one or more audio drivers. In some embodiments, the I / O interface 2008 is configured to provide graphical data to a display for presentation to a user. The graphical data may represent one or more graphical user interfaces and / or any other graphical content that may service a particular implementation.
[0153] The communications interface 2010 may include hardware, software, or both. In either case, the communications interface 2010 may provide one or more interfaces for communications (e.g., packet-based communications) between the computing device 2000 and one or more other computing devices or networks. For example, the communications interface 2010 may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network, or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network such as WI-FI.
[0154] Additionally or alternatively, communication interface 2010 may facilitate communication with one or more portions of an ad-hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or the Internet, or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. By way of example, communication interface 2010 may facilitate communication with a wireless PAN (WPAN) (e.g., a BLUETOOTH WPAN), a Wi-Fi network, a Wi-MAX network, a cellular telephone network (e.g., a Global System for Mobile Communications (GSM) network), or other suitable wireless network, or a combination thereof.
[0155] Additionally, the communications interface 2010 may facilitate communications over a variety of communications protocols. Examples of communications protocols that may be used include, but are not limited to, data transmission media, communications devices, Transmission Control Protocol ("TCP"), Internet Protocol ("IP"), File Transfer Protocol ("FTP"), Telnet, Hypertext Transfer Protocol ("HTTP"), Hypertext Transfer Protocol Secure ("HTTPS"), Session Initiation Protocol ("SIP"), Simple Object Access Protocol ("SOAP"), Extensible Markup Language ("XML") and variations thereof, Simple Mail Transfer Protocol ("SMTP"), and the like. This includes Real-Time Transport Protocol ("RTP"), User Datagram Protocol ("UDP"), Global System for Mobile Communications ("GSM") technology, Code Division Multiple Access ("CDMA") technology, Time Division Multiple Access ("TDMA") technology, Short Message Service ("SMS"), Multimedia Message Service ("MMS"), Radio Frequency ("RF") signaling technology, Long Term Evolution ("LTE") technology, wireless communication technology, in-band and out-of-band signaling technology, and other suitable communication networks and technologies.
[0156] The communications infrastructure 2012 may include hardware, software, or both that connects components of the computing device 2000 to one another. For example, the communications infrastructure 2012 may include an Accelerated Graphics Port (AGP) or other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a Front Side Bus (FSB), a HyperTransport (HT) interconnect, an Industry Standard Architecture (ISA) bus, an Infiniband interconnect, a Low Pin Count (LPC) bus, a memory bus, a MicroChannel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a Serial Advanced Technology Attachment (SATA) bus, a Video Electronics Standards Association Local (VLB) bus, or another suitable bus, or any combination thereof.
[0157] As mentioned above, the video room system 102 can operate as a social networking system in various embodiments. In addition to the description given above, a social networking system may enable its users (such as individuals or corporations) to interact with the system and with each other. The social networking system may use input from the user to create and store social media accounts associated with the user in the social networking system. The social media accounts may include demographic information, communication channel information, and information about the user's personal interests. The social networking system may also use input from the user to create and store records of the user's relationships with other users of the social networking system, as well as provide services (e.g., wall posting, photo sharing, online calendar and event organization, messaging, games, or advertising) to facilitate social interactions between users.
[0158] Social networking systems may also allow users to post photos and other multimedia content items to their profile pages (commonly known as "wall posts" or "timeline posts") or in photo albums, and both the user's profile pages and photo albums may be accessible to other users of the social networking system depending on the user's configured privacy settings.
[0159] FIG. 21 illustrates an exemplary network environment 2100 of a networking system. The network environment 2100 includes a social networking system 2102 (e.g., social networking system 104), a client device 2106, and a third-party system 2108, connected to each other by a network 2104. While FIG. 21 illustrates a particular arrangement of the social networking system 2102, the client device 2106, the third-party system 2108, and the network 2104, this disclosure contemplates any suitable arrangement of the devices, systems, and networks. For example, the client device 2106 and the social networking system 2102 may be physically or logically co-located with each other, in whole or in part. Moreover, while FIG. 21 illustrates a single client device 2106, the social networking system 2102, the third-party system 2108, and the network 2104, this disclosure contemplates any suitable number of devices, systems, and networks.
[0160] This disclosure contemplates any suitable network. For example, one or more portions of network 2104 may include an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of the public switched telephone network (PSTN), a cellular telephone network, or a combination of two or more of these. Network 2104 may include one or more networks.
[0161] Links may connect the social networking system 2102, the client devices 2106, and the third-party systems 2108 to the network 2104 or to each other. In particular embodiments, the one or more links include one or more wireline links (e.g., Digital Subscriber Line (DSL) or Data over Cable Service Interface Specification (DOCSIS)), wireless links (e.g., Wi-Fi or Worldwide Interoperability for Microwave Access (WiMAX)), or optical links (e.g., Synchronous Optical Network (SONET) or Synchronous Digital Hierarchy (SDH)). In particular embodiments, the one or more links each include an ad hoc network, an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, a portion of the Internet, a portion of the PSTN, a cellular technology-based network, a satellite communication technology-based network, another link, or a combination of two or more such links. Links need not necessarily be the same throughout the network environment 2100. One or more first links may differ in one or more respects from one or more second links.
[0162] In particular embodiments, client device 2106 may be an electronic device including hardware, software, or embedded logic components, or a combination of two or more such components, capable of performing the appropriate functionality implemented or supported by client device 2106. For example, client device 2106 may include any of the computing devices described above with respect to FIG. 20. Client device 2106 may enable a network user to access network 2104. Client device 2106 may enable that user to communicate with other users / users associated with other client devices.
[0163] In particular embodiments, client device 2106 may include a web browser and may have one or more add-ons, plug-ins, or other extensions (e.g., toolbars). A user at client device 2106 may enter a uniform resource locator (URL) or other address that directs the web browser to a particular server (such as a server or a server associated with third-party system 2108), and the web browser may generate a hypertext transfer protocol (HTTP) request and communicate the HTTP request to the server. The server may accept the HTTP request and communicate one or more hypertext markup language (HTML) files to client device 2106 that respond to the HTTP request.
[0164] The client device 2106 may render web pages based on HTML files from a server for presentation to a user. For example, web pages may be rendered from HTML files, Extensible Hypertext Markup Language (XHTML) files, or Extensible Markup Language (XML) files, depending on the particular needs. Such pages may also execute scripts such as JAVASCRIPT, scripts written in JAVA, combinations of markup languages and scripts such as AJAX (Asynchronous JAVASCRIPT and XML), and the like. As used herein, references to a web page encompass, where appropriate, one or more corresponding web page files (that a browser may use to render the web page), and vice versa.
[0165] In particular embodiments, the social networking system 2102 may be a network-addressable computing system (e.g., a social networking system or an electronic messaging system) capable of hosting an online network of users. In some embodiments, such as the illustrated embodiment, the social networking system 2102 implements the video room system 102.
[0166] The social networking system 2102 may generate, store, receive, and transmit networking data, such as user profile data, concept profile data, graph information (e.g., social graph information), or other suitable data related to a user's online network. The social networking system 2102 may be accessed by other components of the network environment 2100 either directly or via the network 2104. In particular embodiments, the social networking system 2102 may include one or more servers. Each server may be a single server or distributed servers across multiple computers or multiple data centers. The servers may be of various types, such as a web server, a news server, a mail server, a message server, an advertisement server, a file server, an application server, an exchange server, a database server, a proxy server, another server suitable for performing the functions or processes described herein, or any combination thereof.
[0167] In one or more embodiments, each server may include hardware, software, or embedded logic components, or a combination of two or more such components, for performing the appropriate functionality implemented or supported by the server. In particular embodiments, the social networking system 2102 may include one or more data stores. The data stores may be used to store various types of information. In particular embodiments, the information stored in the data stores may be organized according to a specific data structure. In particular embodiments, each data store may be a relational database, a column-oriented database, a correlation database, or another suitable database. Although this disclosure describes or illustrates particular types of databases, this disclosure contemplates any suitable type of database. Particular embodiments may provide an interface that allows the social networking system 2102, the client device 2106, or the third-party system 2108 to manage, retrieve, modify, add, or delete information stored in the data stores.
[0168] In particular embodiments, the social networking system 2102 may store one or more social graphs in one or more data stores. In particular embodiments, a social graph may include multiple nodes, which may include multiple user nodes (each corresponding to a particular user) or multiple concept nodes (each corresponding to a particular concept), and multiple edges connecting the nodes. The social networking system 2102 may provide users of the user's online network with the ability to communicate and interact with other users. In particular embodiments, a user may enter the user's online network through the social networking system 2102 and then add connections (e.g., relationships) to several other users of the social networking system 2102 with whom the user wishes to be connected. As used herein, the term “friend” may refer to any other user of the social networking system 2102 with whom the user has connected, associated, or formed a relationship via the social networking system 2102.
[0169] In particular embodiments, social networking system 2102 may provide users with the ability to take actions regarding various types of items or objects supported by social networking system 2102. For example, items and objects may include groups or social networks to which a user of social networking system 2102 may belong, events or calendar entries in which a user may be interested, computer-based applications that a user may use, transactions that allow a user to buy or sell items via the service, interactions with advertisements that a user may conduct, or other suitable items or objects. Users may interact with things that may be represented in social networking system 2102 or by external systems of third-party systems 2108 that are separate from social networking system 2102 and coupled to social networking system 2102 via network 2104.
[0170] In particular embodiments, the social networking system 2102 may be capable of linking various entities. For example, the social networking system 2102 may enable users to interact with each other as well as receive content from third-party systems 2108 or other entities, or allow users to interact with these entities through application programming interfaces (APIs) or other communication channels.
[0171] In particular embodiments, third-party system 2108 may include one or more types of servers, one or more data stores, one or more interfaces including, but not limited to, APIs, one or more web services, one or more content sources, one or more networks, or any other suitable components with which a server may communicate, for example. Third-party system 2108 may be operated by an entity different from the entity that operates social networking system 2102. However, in particular embodiments, social networking system 2102 and third-party system 2108 may operate in conjunction with each other to provide social networking services to users of social networking system 2102 or third-party system 2108. In this sense, social networking system 2102 may provide a platform or backbone that other systems, such as third-party system 2108, may use to provide social networking services and functionality to users across the Internet.
[0172] In particular embodiments, the third-party system 2108 may include a third-party content object provider. The third-party content object provider may include one or more sources of content objects that may be communicated to the client device 2106. For example, the content objects may include information about things or activities of interest to a user, such as movie showtimes, movie reviews, restaurant reviews, restaurant menus, product information and reviews, or other suitable information. As another example and not by way of limitation, the content objects may include incentive content objects, such as coupons, discount tickets, gift certificates, or other suitable incentive objects.
[0173] In particular embodiments, the social networking system 2102 also includes user-generated content objects that may enhance user interaction with the social networking system 2102. User-generated content may include anything that a user can add, upload, send, or “post” to the social networking system 2102. For example, a user communicates a post from a client device 2106 to the social networking system 2102. A post may include data such as a status update or other text data, location information, photos, videos, links, music, or other similar data or media. Content may also be added to the social networking system 2102 by third parties through “communication channels,” such as news feeds or streams.
[0174] In particular embodiments, the social networking system 2102 may include various servers, subsystems, programs, modules, logs, and data stores. In particular embodiments, the social networking system 2102 may include one or more of a web server, an action logger, an API request server, a relevance and ranking engine, a content object classifier, a notification controller, an action log, a third-party content object exposure log, an inference module, a permission / privacy server, a search module, an ad targeting module, a user interface module, a user profile store, a connection store, a third-party content store, or a location store. The social networking system 2102 may also include suitable components, such as network interfaces, security mechanisms, load balancers, failover servers, an administration and network operations console, other suitable components, or any suitable combination thereof. In particular embodiments, the social networking system 2102 may include one or more user profile stores for storing social media accounts.
[0175] A social media account may include, for example, biographical information, demographic information, behavioral information, social information, or other types of descriptive information, such as work history, education history, hobbies or preferences, interests, affinities, or location. Interest information may include interests related to one or more categories. Categories may be general or specific. For example, if a user "likes" an article about a shoe brand, the category may be the brand or the general category of "shoes" or "clothing." A connection store may be used to store connection information about users. Connection information may indicate users who have similar or common work history, group memberships, hobbies, education history, or who are in any way related or share a common attribute.
[0176] Connection information may also include user-defined connections between different users and content (both internal and external). A web server may be used to link the social networking system 2102 to one or more client devices 2106 or one or more third-party systems 2108 via the network 2104. The web server may include a mail server or other messaging functionality for receiving and routing messages between the social networking system 2102 and one or more client devices 2106. An API request server may allow the third-party systems 2108 to access information from the social networking system 2102 by calling one or more APIs. An action logger may be used to receive communications from the web server regarding user actions on or off the social networking system 2102. In conjunction with the action log, a third-party content object log may be maintained of user exposure to third-party content objects. A notification controller may provide information about content objects to the client devices 2106.
[0177] The information may be pushed to the client device 2106 as a notification, or the information may be pulled from the client device 2106 in response to a request received from the client device 2106. The permission server may be used to enforce one or more privacy settings of a user of the social networking system 2102. A user's privacy settings determine how certain information associated with the user may be shared. The permission server may allow a user to opt in or out of their actions being logged by the social networking system 2102 or shared with other systems (e.g., third-party system 2108), such as by setting appropriate privacy settings. The third-party content object store may be used to store content objects received from third parties, such as the third-party system 2108. The location store may be used to store location information received from the client device 2106 associated with the user. The advertising pricing module may combine social information, the current time, location information, or other suitable information to provide relevant advertisements to the user in the form of notifications.
[0178] FIG. 22 illustrates an exemplary social graph 2200. In particular embodiments, the social networking system 2102 may store one or more social graphs 2200 in one or more data stores. In particular embodiments, the social graph 2200 may include multiple nodes, which may include multiple user nodes 2202 or multiple concept nodes 2204, and multiple edges 2206 connecting the nodes. For illustrative purposes, the exemplary social graph 2200 shown in FIG. 22 is illustrated in a two-dimensional visual map representation. In particular embodiments, the social networking system 2102, the client device 2106, or a third-party system 2108 may access the social graph 2200 and related social graph information for a suitable application. The nodes and edges of the social graph 2200 may be stored as data objects, for example, in a data store (such as a social graph database). Such a data store may include one or more searchable or quarriable indexes of the nodes or edges of the social graph 2200.
[0179] In particular embodiments, user node 2202 may correspond to a user of social networking system 2102. For example, a user may be an individual (human user), an entity (e.g., a company, business, or third-party application), or a group (e.g., of individuals or entities) that interacts or communicates with or on social networking system 2102. In particular embodiments, when a user registers an account with social networking system 2102, social networking system 2102 may create a user node 2202 corresponding to the user and store the user node 2202 in one or more data stores. Users and user nodes 2202 described herein may refer to registered users and user nodes 2202 associated with registered users, where appropriate.
[0180] Additionally or alternatively, users and user nodes 2202 described herein may refer to users not registered with the social networking system 2102, where appropriate. In particular embodiments, user nodes 2202 may relate to information provided by a user or information collected by various systems, including the social networking system 2102. For example, a user may provide their name, profile picture, contact information, date of birth, gender, marital status, family status, place of employment, educational background, preferences, interests, or other demographic information. Each user node in the social graph may have a corresponding web page (commonly known as a profile page). In response to a request including a username, the social networking system can access the user node corresponding to the username and construct a profile page including the name, profile picture, and other information related to the user. A first user's profile page may display all or a portion of the first user's information to a second user based on one or more privacy settings by the first user and the relationship between the first user and the second user.
[0181] In particular embodiments, concept node 2204 may correspond to a concept. For example, a concept may correspond to a place (e.g., a movie theater, a restaurant, a landmark, or a city), a website (e.g., a website associated with social networking system 2102 or a third-party website associated with a web application server), an entity (e.g., a person, a business, a group, a sports team, or a celebrity), a resource (e.g., an audio file, a video file, a digital photograph, a text file, a structured document, or an application) that may be located within social networking system 2102 or on an external server such as a web application server, physical property or intellectual property (e.g., a sculpture, a painting, a movie, a game, a song, an idea, a photograph, or a written work), a game, an activity, an idea or theory, another suitable concept, or two or more such concepts. Concept node 2204 may relate to concept information provided by a user or information gathered by various systems, including social networking system 2102. For example, concept information may include a name or title, one or more images (e.g., an image of a book's cover page), a location (e.g., an address or geographic location), a website (which may be associated with a URL), contact information (e.g., a phone number or email address), other suitable concept information, or any suitable combination of such information. In particular embodiments, concept node 2204 may be associated with one or more data objects that correspond to information associated with concept node 2204. In particular embodiments, concept node 2204 may correspond to one or more web pages.
[0182] In particular embodiments, nodes in social graph 2200 may represent or be represented by web pages (sometimes referred to as “profile pages”). Profile pages may be hosted by or accessible to social networking system 2102. Profile pages may also be hosted on third-party websites associated with third-party system 2108. For example, a profile page corresponding to a particular external web page may be the particular external web page, which may correspond to a particular concept node 2204. Profile pages may be viewable by all or a selected subset of other users. For example, user node 2202 may have a corresponding user profile page where the corresponding user may add content, publish, or otherwise express themselves. As another example and not by way of limitation, concept node 2204 may have a corresponding concept profile page where one or more users may add content, publish, or otherwise express themselves, particularly in relation to the concept corresponding to concept node 2204.
[0183] In particular embodiments, the concept node 2204 may represent a third-party web page or resource hosted by the third-party system 2108. The third-party web page or resource may include, among other elements, content, selectable or other icons, or other interactable objects that represent actions or activities (e.g., which may be implemented in JavaScript, AJAX, or PHP code). For example, the third-party web page may include selectable icons such as "Like," "Check-in," "Eat," "Recommend," or another suitable action or activity. A user viewing the third-party web page may perform an action by selecting one of the icons (e.g., "Eat"), causing the client device 2106 to send a message to the social networking system 2102 indicating the user's action. In response to the message, the social networking system 2102 may create an edge (e.g., an "Eat" edge) between the user node 2202 corresponding to the user and the concept node 2204 corresponding to the third-party web page or resource and store the edge 2206 in one or more data stores.
[0184] In particular embodiments, pairs of nodes in the social graph 2200 may be connected to one another by one or more edges 2206. The edges 2206 connecting pairs of nodes may represent a relationship between the pair of nodes. In particular embodiments, the edges 2206 may include or represent one or more data objects or attributes corresponding to the relationship between the pair of nodes. For example, a first user may indicate that a second user is a "friend" of the first user. In response to this indication, the social networking system 2102 may send a "friend request" to the second user.
[0185] If the second user confirms the “friend request,” the social networking system 2102 may create an edge 2206 in the social graph 2200 connecting the first user's user node 2202 to the second user's user node 2202 and store the edge 2206 as social graph information in one or more of the data stores. In the example of FIG. 22 , the social graph 2200 includes an edge 2206 indicating a friend relationship between the user node 2202 of user “A” and the user node 2202 of user “B,” and an edge indicating a friend relationship between the user node 2202 of user “C” and the user node 2202 of user “B.” Although this disclosure describes or illustrates a particular edge 2206 with particular attributes connecting particular user nodes 2202, this disclosure contemplates any suitable edge 2206 with any suitable attributes connecting user nodes 2202. For example, edges 2206 may represent a friendship relationship, a family relationship, a business or employment relationship, a fan relationship, a follower relationship, a visitor relationship, a subscriber relationship, a supervisory relationship, a reciprocal relationship, a non-reciprocal relationship, another suitable type of relationship, or two or more such relationships. Moreover, while this disclosure generally describes nodes as being connected, this disclosure also describes users or concepts as being connected. References herein to connected users or concepts may, where appropriate, refer to nodes corresponding to those users or concepts that are connected in social graph 2200 by one or more edges 2206.
[0186] In particular embodiments, edge 2206 between user node 2202 and concept node 2204 may represent a particular action or activity performed by a user associated with user node 2202 toward a concept associated with concept node 2204. For example, as shown in FIG. 22 , a user may have expressed a "like" for, "attended," "played," "listened," "cooked," "worked," or "watched" a concept, each of which may correspond to a type or subtype of edge. The concept profile page corresponding to concept node 2204 may include, for example, a selectable "check-in" icon (e.g., a clickable "check-in" icon) or a selectable "add to favorites" icon. Similarly, after a user clicks these icons, social networking system 2102 may create a "favorite" edge or a "check-in" edge in response to the user's action corresponding to the respective action.
[0187] As another example and not by way of limitation, a user (user "C") may listen to a particular song using a particular application (e.g., an online music application). In this case, the social networking system 2102 may create a "listened to" edge 2206 and a "used" edge (as shown in FIG. 22) between the user node 2202 corresponding to the user and the concept nodes 2204 corresponding to the song and application to indicate that the user listened to the song and used the application.
[0188] Additionally, the social networking system 2102 may create a "played" edge 2206 (as shown in FIG. 22) between a concept node 2204 corresponding to a song and a concept node 2204 corresponding to an application to indicate that a particular song was played by a particular application. In this case, the "played" edge 2206 corresponds to an action performed by the external application on an external audio file. Although this disclosure describes a particular edge 2206 with particular attributes connecting a user node 2202 and a concept node 2204, this disclosure contemplates any suitable edge 2206 with any suitable attributes connecting a user node 2202 and a concept node 2204.
[0189] Additionally, although this disclosure describes an edge between a user node 2202 and a concept node 2204 representing a single relationship, this disclosure contemplates that an edge between a user node 2202 and a concept node 2204 represent one or more relationships. For example, edge 2206 may represent both a user's like for a particular concept and their use in a particular concept. Alternatively, a separate edge 2206 may represent each type of relationship (or multiples of a single relationship) between user node 2202 and concept node 2204 (such as shown in FIG. 22 between user node 2202 and concept node 2204 for user "E").
[0190] In particular embodiments, social networking system 2102 may create edges 2206 between user nodes 2202 and concept nodes 2204 in social graph 2200. For example, a user viewing a concept profile page (e.g., by using a web browser or a dedicated application hosted by the user's client device 2106) may indicate that they like the concept represented by concept node 2204 by clicking or selecting a “Like” icon, which may cause the user's client device 2106 to send a message to social networking system 2102 indicating that the user likes the concept associated with the concept profile page.
[0191] In response to the message, the social networking system 2102 may create an edge 2206 between the user node 2202 associated with the user and the concept node 2204, as illustrated by the "Like" edge 2206 between the user and the concept node 2204. In particular embodiments, the social networking system 2102 may store the edge 2206 in one or more data stores. In particular embodiments, the edge 2206 may be formed automatically by the social networking system 2102 in response to a particular user action. For example, if a first user uploads a picture, watches a movie, or listens to a song, an edge 2206 may be formed between the user node 2202 corresponding to the first user and the concept node 2204 corresponding to those concepts. Although this disclosure describes forming particular edges 2206 in particular manners, this disclosure contemplates forming any suitable edge 2206 in any suitable manner.
[0192] In particular embodiments, the advertisements may be text (which may be HTML linked), one or more images (which may be HTML linked), one or more videos, audio, one or more other types of files, a suitable combination thereof, or any other suitable advertisement in any suitable digital format presented on one or more web pages, in one or more emails, or in connection with search results requested by a user. Additionally or alternatively, the advertisements may be one or more sponsored stories (e.g., news feed or ticker items on social networking system 2102).
[0193] A Sponsored Story may be a social action by a user (such as “liking” a page, “liking” or commenting on a post on the page, RSVPing for an event related to the page, voting on a question posted on the page, checking in to a location, using an application or playing a game, or “liking” or sharing a website) that an advertiser promotes by, for example, having the social action presented in a predetermined area of the user's profile page or other page, presented with additional information related to the advertiser, bumped up or otherwise highlighted in other users' news feeds or tickers, or otherwise promoted. Advertisers may pay to promote the social action. For example, advertisements may be included in search results on a search result page, where sponsored content is promoted over non-sponsored content.
[0194] In certain embodiments, advertisements may be requested for display within social networking system web pages, third-party web pages, or other pages. Advertisements may be displayed in dedicated portions of a page, such as in a banner area at the top of the page, in a column on the side of the page, in the page's GUI, in a pop-up window, in a drop-down menu, in an input field on the page, on top of the page's content, or elsewhere on the page. Additionally or alternatively, advertisements may be displayed within an application. Advertisements may be displayed within dedicated pages, requiring the user to interact with or view the advertisement before the user can access the page or utilize the application. For example, a user may view the advertisement through a web browser.
[0195] A user may interact with an advertisement in any suitable manner. The user may click on or otherwise select the advertisement. By selecting the advertisement, the user may be directed to a page (or a browser or other application being used by the user) associated with the advertisement. On the page associated with the advertisement, the user may take additional actions, such as buying a product or service associated with the advertisement, receiving information associated with the advertisement, or subscribing to a newsletter associated with the advertisement. By selecting a component of the advertisement (such as a "play button"), the advertisement with audio or video may be played. Alternatively, by selecting the advertisement, the social networking system 2102 may perform or modify a particular action of the user.
[0196] The advertisement may also include social networking system functionality with which the user may interact. For example, the advertisement may allow the user to "like" or otherwise approve the advertisement by selecting an icon or link associated with the approval. As another example and not by way of limitation, the advertisement may allow the user to search for content related to the advertiser (e.g., by performing a query). Similarly, the user may share the advertisement with another user (e.g., through the social networking system 2102) or RSVP (e.g., through the social networking system 2102) to an event related to the advertisement. Additionally or alternatively, the advertisement may include social networking system context directed to the user. For example, the advertisement may display information about the user's friends in the social networking system 2102 who have taken an action related to the subject matter of the advertisement.
[0197] In particular embodiments, the social networking system 2102 may determine social graph affinities (sometimes referred to herein as “affinities”) of various social graph entities for one another. Affinity may represent the strength of relationships or level of interest between particular objects associated with a user's online network, such as users, concepts, content, actions, advertisements, other objects associated with a user's online network, or any suitable combination thereof. Affinity may also be determined with respect to objects associated with the third-party system 2108 or other suitable systems. For each user, subject, or type of content, an overall affinity for the social graph entities may be established. The overall affinity may change based on ongoing monitoring of actions or relationships associated with the social graph entities. Although this disclosure describes determining particular affinities in a particular manner, this disclosure contemplates determining any suitable affinity in any suitable manner.
[0198] In particular embodiments, the social networking system 2102 may measure or quantify social graph affinity using affinity coefficients (sometimes referred to herein as “coefficients”). The coefficients may represent or quantify the strength of relationships between particular objects associated with a user's online network. The coefficients may also represent functions that measure the probability, or predicted probability, that a user will perform a particular action based on the user's interest in that action. In this manner, a user's future actions may be predicted based on the user's previous actions, where the coefficients may be calculated based at least in part on the user's history of actions. The coefficients may be used to predict any number of actions, which may be within or outside the user's online network. For example, these actions may include various types of communications, such as sending a message, posting content, or commenting on content, various types of observation actions, such as accessing or viewing a profile page, media, or other suitable content, various types of coincidence information regarding two or more social graph entities, such as being in the same group, being tagged in the same photo, being checked in at the same location, or attending the same event, or other suitable actions. Although this disclosure describes measuring affinity in a particular manner, this disclosure contemplates measuring affinity in any suitable manner.
[0199] In particular embodiments, the social networking system 2102 may use various factors to calculate the coefficients. These factors may include, for example, user actions, types of relationships between objects, location information, other suitable factors, or any combination thereof. In particular embodiments, different factors may be weighted differently when calculating the coefficients. The weight for each factor may be static, or the weights may vary according to, for example, the user, the type of relationship, the type of action, the user's location, etc. To determine an overall coefficient for a user, the ratings for the factors may be combined according to the factor weights. For example, a particular user action may be assigned both a rating and a weight, while the relationships associated with the particular user action are assigned a rating and a correlating weight (e.g., so the weights total 100%). To calculate a user's coefficient for a particular object, the rating assigned to the user's action may comprise, for example, 60% of the overall coefficient, while the relationship between the user and the object may comprise 40% of the overall coefficient. In particular embodiments, the social networking system 2102 may consider various variables when determining weights for various factors used to calculate the coefficients, such as, for example, the time since the information was accessed, a decay factor, the frequency of access, the relationship to the information or the object from which the information was accessed, the relationship to a social graph entity connected to the object, short-term or long-term averages of user actions, user feedback, other suitable variables, or any combination thereof. For example, the coefficients may include a decay factor that causes the strength of the signal provided by a particular action to decay over time, such that more recent actions are more relevant when calculating the coefficients. The ratings and weights may be continually updated based on ongoing tracking of the actions on which the coefficients are based.Any type of process or algorithm may be employed to assign, combine, average, etc. the ratings for each factor and the weights assigned to the factors. In particular embodiments, the social networking system 2102 may determine the coefficients using a machine learning algorithm trained on historical actions and past user responses, or using data obtained from users by exposing them to various options and measuring their responses. Although this disclosure describes calculating the coefficients in a particular manner, this disclosure contemplates calculating the coefficients in any suitable manner.
[0200] In particular embodiments, the social networking system 2102 may calculate a coefficient based on a user's actions. The social networking system 2102 may monitor such actions on the user's online network, on the third-party system 2108, on other suitable systems, or on any combination thereof. Any suitable type of user action may be tracked or monitored. Common user actions include viewing a profile page, creating or posting content, interacting with content, joining a group, listing and confirming attendance at an event, checking in at a location, liking a particular page, creating a page, and performing other tasks that facilitate social action. In particular embodiments, the social networking system 2102 may calculate a coefficient based on a user's actions with a particular type of content. The content may be related to the user's online network, the third-party system 2108, or another suitable system. Content may include users, profile pages, posts, news articles, headlines, instant messages, chat room conversations, emails, advertisements, pictures, videos, music, other suitable objects, or any combination thereof. The social networking system 2102 may analyze a user's actions to determine whether one or more of the actions indicate an affinity for a subject, content, other users, etc. For example, if a user may frequently post content related to "coffee" or variations thereof, the social networking system 2102 may determine that the user has a high coefficient with respect to the concept of "coffee." Certain actions or types of actions may be assigned a higher weight and / or rating than other actions, which may affect the overall calculated coefficient.For example, if a first user sends an email to a second user, the weight or rating for that action may be higher than if the first user views a user profile page for the second user.
[0201] In particular embodiments, the social networking system 2102 may calculate a coefficient based on the type of relationship between particular objects. With reference to the social graph 2200, the social networking system 2102 may analyze the number and / or type of edges 2206 connecting particular user nodes 2202 and concept nodes 2204 when calculating a coefficient. For example, user nodes 2202 connected by spouse-type edges (representing that the two users are married) may be assigned a higher coefficient than user nodes 2202 connected by friend-type edges. In other words, depending on the weights assigned to the actions and relationships for a particular user, it may be determined that the overall affinity will be higher for content related to a user's spouse than for content related to the user's friends.
[0202] In particular embodiments, a relationship a user has with another object may affect the weight and / or rating of the user's action with respect to calculating a coefficient for that object. For example, if a user is tagged in a first photo but merely likes a second photo, the social networking system 2102 may determine that the user has a higher coefficient with respect to the first photo than the second photo because having a tagging-type relationship with content may be assigned a higher weight and / or rating than having a like-type relationship with content.
[0203] In some embodiments, the social networking system 2102 may calculate a coefficient for a first user based on the relationships one or more second users have with a particular object. In other words, the connections and coefficients other users have with an object may affect the first user's coefficient for that object. For example, if a first user is connected to one or more second users or has a high coefficient for those second users, and those second users are connected to or have a high coefficient for a particular object, the social networking system 2102 may determine that the first user should also have a relatively high coefficient for the particular object.
[0204] In one or more embodiments, the coefficient may be based on the degree of separation between particular objects. The degree of separation between any two nodes is defined as the minimum number of hops required to traverse the social graph from one node to the other. The degree of separation between two nodes may be considered a measure of the relationship between users or the concept represented by two nodes in the social graph. For example, two users with user nodes directly connected by an edge (i.e., first-degree nodes) may be described as "connected users" or "friends."
[0205] Similarly, two users whose user nodes are connected only through another user node (i.e., are second-degree nodes) may be described as "friends of friends." A lower coefficient may represent a decreased likelihood that a first user will share an interest in the content objects of a user indirectly connected to the first user in social graph 2200. For example, social graph entities that are closer in social graph 2200 (i.e., lesser degree of separation) may have a higher coefficient than entities that are further away in social graph 2200.
[0206] In particular embodiments, the social networking system 2102 may calculate a coefficient based on location information. Objects that are geographically closer to each other may be considered more related to or interesting than objects that are farther away. In some embodiments, a user's coefficient for a particular object may be based on the proximity of the object's location to a current location associated with the user (or the location of the user's client device 2106). A first user may be more interested in other users or concepts that are closer to the first user. For example, if a user is one mile from an airport and two miles from a gas station, the social networking system 2102 may determine that the user has a higher coefficient for the airport than the gas station based on the airport's proximity to the user.
[0207] In particular embodiments, the social networking system 2102 may perform a particular action with respect to a user based on the coefficient information. The coefficients may be used to predict whether a user will perform a particular action based on the user's interest in the action. The coefficients may be used when generating or presenting any type of object to the user, such as an advertisement, search results, news article, media, message, notification, or other suitable object. The coefficients may also be utilized to rank and order such objects, as appropriate. In this manner, the social networking system 2102 may provide information relevant to the user's interests and current situation, increasing the likelihood that the user will find such information of interest.
[0208] In some embodiments, the social networking system 2102 may generate content based on the coefficient information. Content objects may be provided or selected based on coefficients specific to a user. For example, the coefficients may be used to generate media for a user, where the user may be presented with media for which the user has a high overall coefficient for the media objects. As another example and not by way of limitation, the coefficients may be used to generate advertisements for a user, where the user may be presented with advertisements for which the user has a high overall coefficient for the advertisement objects.
[0209] In one or more embodiments, the social networking system 2102 may generate search results based on the coefficient information. Search results for a particular user may be scored or ranked based on the coefficient associated with the search results with respect to the querying user. For example, search results corresponding to objects with higher coefficients may be ranked higher on a search results page than results corresponding to objects with lower coefficients.
[0210] In particular embodiments, the social networking system 2102 may calculate coefficients in response to a request for coefficients from a particular system or process. Any process may request calculated coefficients for a user to predict possible actions the user may take (or may be subject to) in a given situation. The request may also include a set of weights to use for the various factors used to calculate the coefficients. The request may come from a process running on the user's online network, from a third-party system 2108 (e.g., via an API or another communication channel), or from another suitable system. In response to the request, the social networking system 2102 may calculate the coefficients (or access the coefficient information if the coefficients have been previously calculated and stored).
[0211] In various embodiments, the social networking system 2102 may measure affinity for a particular process. Different processes (both internal and external to a user's online network) may request a coefficient for a particular object or set of objects. The social networking system 2102 may provide an affinity measure relevant to the particular process that requested the affinity measure. In this way, each process receives an affinity measure tailored for the different context in which the process will use the affinity measure.
[0212] With respect to social graph affinity and affinity coefficients, particular embodiments may utilize one or more systems, components, elements, functions, methods, acts, or steps disclosed in U.S. patent application Ser. No. 11 / 503,093, filed Aug. 11, 2006; U.S. patent application Ser. No. 12 / 977,027, filed Dec. 22, 2010; U.S. patent application Ser. No. 12 / 978,265, filed Dec. 23, 2010; and U.S. patent application Ser. No. 13 / 632,869, filed Oct. 1, 2012, each of which is incorporated by reference in its entirety.
[0213] In particular embodiments, one or more of the content objects of a user's online network may be associated with privacy settings. Privacy settings (or “access settings”) for an object may be stored in any suitable manner, such as, for example, in association with the object, in an index on an authorization server, in another suitable manner, or any combination thereof. An object's privacy settings may specify how the object (or particular information related to the object) may be accessed (e.g., viewed or shared) using the user's online network. If the privacy settings for an object allow a particular user to access that object, the object may be described as being “visible” to that user. For example, users of the user's online network may specify privacy settings for a user profile page to identify a set of users who may access work history information on the user profile page, thus excluding other users from accessing that information.
[0214] In particular embodiments, privacy settings may specify a “blocked list” of users that should not be allowed to access certain information related to an object. In other words, the block list may specify one or more users or entities for which the object is not visible. For example, a user may specify a set of users that should not have access to a photo album associated with the user, thus precluding those users from accessing the photo album (and potentially allowing some users not in the user's set to access the photo album). In particular embodiments, privacy settings may be associated with particular social graph elements. The privacy settings of a social graph element, such as a node or edge, may specify how the social graph element, information associated with the social graph element, or content objects associated with the social graph element can be accessed using the user's online network. For example, a particular concept node 2204 corresponding to a particular photo may have a privacy setting that specifies that the photo can only be accessed by users tagged in the photo and those users' friends.
[0215] In particular embodiments, privacy settings may allow users to opt in or out of having their actions logged by the social networking system 2102 or shared with other systems (e.g., third-party systems 2108). In particular embodiments, privacy settings associated with an object may specify any suitable granularity of permitted access or denial of access. For example, access or denial of access may be specified for particular users (e.g., just me, my roommates, and my boss), users within a particular degree of separation (e.g., friends or friends of friends), user groups (e.g., a gaming club, my family), user networks (e.g., employees of a particular employer, students or alumni of a particular university), all users (“public”), no users (“private”), users of third-party systems 2108, particular applications (e.g., third-party applications, external websites), other suitable users or entities, or any combination thereof. Although this disclosure describes using particular privacy settings in particular manners, this disclosure contemplates using any suitable privacy settings in any suitable manner.
[0216] In particular embodiments, one or more servers may be authorization / privacy servers for enforcing privacy settings. In response to a request from a user (or other entity) for a particular object stored in the data store, the social networking system 2102 may send a request for the object to the data store. The request may identify the user associated with the request and may only be sent to the user (or the user's client device 2106) if the authorization server determines that the user is authorized to access the object based on the privacy settings associated with the object. If the requesting user is not authorized to access the object, the authorization server may prevent the requested object from being retrieved from the data store or may prevent the requested object from being sent to the user.
[0217] In a search query context, an object may only be produced as a search result if the querying user is permitted to access the object. In other words, the object must have a visibility that is visible to the querying user. If the object has a visibility that is not visible to the user, the object may be excluded from the search results. Although this disclosure describes enforcing privacy settings in a particular manner, this disclosure contemplates enforcing privacy settings in any suitable manner.
[0218] The above specification has been described with reference to certain exemplary embodiments thereof. Various embodiments and aspects of the present disclosure are described with reference to the details set forth herein, and the accompanying drawings illustrate various embodiments. The above description and drawings are illustrative and should not be construed as limiting. Numerous specific details are set forth to provide a thorough understanding of the various embodiments.
[0219] Additional or alternative embodiments may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope. [Explanation of symbols]
[0220] 102 Video Room System 104 Social Networking Systems 106 (one or more) servers 108 Creator Devices 110 The #1 messaging application 112 Second Messaging Application 114a Invitee Device 114n Invitee Device 116 Network 402 Call Interface 404 Video Room Elements 502 New calling interface 504 Video Room Elements 506 Video Call List 602 Chat Interface 603 Attachment Options 604 Message Attachment Menu 606 Video Room Elements 702 Chat Interface 703 New Call Elements 704 New Call Menu 706 Video Room Elements 800 New Call Interface 802 Redirection Notification 804 Forward option 806 Cancellation Option 902 Redirection Notification 904 Open Options 906 Video Room Creation Interface 908 Configuration Options 910 Room Activity Options 912 Create Room Option 1002 Video Room Settings Interface 1102 Video Room Sharing Interface 1104 Redirect Notification 1202 Chat selection interface 1204 Selection Indicator 1302 Message Assembly Interface 1304 Video Room Link 1306 Send Options 1402 Chat Interface 1404 Video Room Link 1502 Social Networking Interface 1504 Video Room Link 1506 Social Networking Feeds 1508 Video Room Link 1602 Chat Interface 1604 Video Room Link 1606 Video Room Link 1702 Video Room Interface 1800 computing devices 1802 User Interface Manager 1804 Video Room Generation Manager 1806 Video Room Link Manager 1808 Video Room Facilitation Manager 1810 Storage Manager 1812 databases 2000 computing devices 2002 processor 2004 Memory 2006 Storage Devices 2008 I / O Interface 2010 Communication Interface 2012 Communications Infrastructure 2100 Network Environment 2102 Social Networking System 2104 Network 2106 client devices 2108 Third Party Systems 2200 Social Graph 2202 User Node 2204 Concept Nodes 2206 Edge
Claims
1. providing a selectable video room element for display within a chat interface of a first messaging application on an author device to create a video room for video conferencing between two or more devices; receiving instructions from the creator device to generate the video room based on user interactions selecting the video room elements; based on determining whether a second messaging application is installed on the creator device, selecting from the second messaging application and a browser application to generate a video room link shareable to invite invitee devices in a chat associated with the chat interface of the first messaging application to enter the video room; automatically providing the video room link for display within the chat interface of the first messaging application on the creator device and the invitee device based on generating the video room link; A method comprising:
2. generating a video call list interface for display within the first messaging application on the creator device based on a social graph indicating connections between a creator associated with the creator device and other users of a social networking system, the video call list interface comprising a listing of other users who have connections to the user in the social graph and who are eligible to be invited into a video room via the first messaging application; providing a second video room element for display within the video call list interface; The method of claim 1 further comprising:
3. 3. The method of claim 2, further comprising, based on generating the video room link, automatically surfacing the video room link in social networking feeds of one or more of the other users based on the connection between the user and the one or more other users.
4. 10. The method of claim 1, further comprising: based on generating the video room link, providing a chat selection interface for display within the first messaging application, the chat selection interface comprising a listing of selectable chat elements, the chat elements selectable for sharing the video room link within a chat associated with the creator device.
5. determining that the video room link has been shared at least a threshold number of times; limiting the number of invitees with whom the video room link may be shared in a single message based on determining that the video room link has been shared at least the threshold number of times; and The method of claim 1 further comprising:
6. based on receiving an indication of a user interaction with the video room link; causing a first invitee device associated with the second messaging application to access the second messaging application to enter the video room; having a second invitee device not associated with the second messaging application access a browser to enter the video room; The method of claim 1 further comprising:
7. automatically providing the video room link for display within the chat interface of the first messaging application includes: determining a location within the chat thread where the video room element is to be displayed at a selected time; providing the video room link for display at the location within the chat thread; The method of claim 1 , comprising:
8. A non-transitory computer-readable medium comprising instructions that, when executed by at least one processor, cause a computing device to: providing a selectable video room element for display within a chat interface of a first messaging application on an author device to create a video room for video conferencing between two or more devices; receiving instructions from the creator device to generate the video room based on user interactions selecting the video room elements; based on determining whether a second messaging application is installed on the creator device, selecting from the second messaging application and a browser application to generate a video room link shareable to invite invitee devices in a chat associated with the chat interface of the first messaging application to enter the video room; automatically providing the video room link for display within the chat interface of the first messaging application on the creator device and the invitee device based on generating the video room link; A non-transitory computer-readable medium for causing
9. When executed by the at least one processor, the computing device: generating a video call list interface for display within the first messaging application on the creator device based on a social graph indicating connections between a creator associated with the creator device and other users of a social networking system, the video call list interface comprising a listing of other users who have connections to the user in the social graph and who are eligible to be invited into a video room via the first messaging application; providing a second video room element for display within the video call list interface; The non-transitory computer-readable medium of claim 8 , further comprising instructions to:
10. 10. The non-transitory computer-readable medium of claim 9, further comprising instructions that, when executed by the at least one processor, cause the computing device to, based on generating the video room link, automatically surface the video room link in social networking feeds of one or more of the other users based on the connection between the user and the one or more other users.
11. 9. The non-transitory computer-readable medium of claim 8, further comprising instructions that, when executed by the at least one processor, cause the computing device to provide a chat selection interface for display within the first messaging application based on generating the video room link, the chat selection interface comprising a listing of selectable chat elements, the chat elements selectable for sharing the video room link within a chat associated with the creator device.
12. When executed by the at least one processor, the computing device: determining that the video room link has been shared at least a threshold number of times; limiting the number of invitees with whom the video room link may be shared in a single message based on determining that the video room link has been shared at least the threshold number of times; and The non-transitory computer-readable medium of claim 8 , further comprising instructions to:
13. When executed by the at least one processor, the method includes, upon receiving an indication of a user interaction with the video room link, causing the computing device to: causing a first invitee device associated with the second messaging application to access the second messaging application to enter the video room; having a second invitee device not associated with the second messaging application access a browser to enter the video room; The non-transitory computer-readable medium of claim 8 , further comprising instructions to:
14. When executed by the at least one processor, the computing device: determining a location within the chat thread where the video room element is to be displayed at a selected time; providing the video room link for display at the location within the chat thread; 10. The non-transitory computer-readable medium of claim 8, further comprising instructions for causing a user to automatically provide the video room link for display within the chat interface of the first messaging application by
15. at least one processor; a non-transitory computer-readable medium comprising instructions; wherein the instructions, when executed by the at least one processor, provide the system with: providing a selectable video room element for display within a chat interface of a first messaging application on an author device to create a video room for video conferencing between two or more devices; receiving instructions from the creator device to generate the video room based on user interactions selecting the video room elements; based on determining whether a second messaging application is installed on the creator device, selecting from the second messaging application and a browser application to generate a video room link shareable to invite invitee devices in a chat associated with the chat interface of the first messaging application to enter the video room; automatically providing the video room link for display within the chat interface of the first messaging application on the creator device and the invitee device based on generating the video room link; A system that allows the following to be performed.
16. When executed by the at least one processor, the system: generating a video call list interface for display within the first messaging application on the creator device based on a social graph indicating connections between a creator associated with the creator device and other users of a social networking system, the video call list interface comprising a listing of other users who have connections to the user in the social graph and who are eligible to be invited into a video room via the first messaging application; providing a second video room element for display within the video call list interface; The system of claim 15 further comprising instructions to:
17. 17. The system of claim 16, further comprising instructions that, when executed by the at least one processor, cause the system to automatically surface the video room link in social networking feeds of one or more of the other users based on the connection between the user and the one or more other users based on generating the video room link.
18. 16. The system of claim 15, further comprising instructions that, when executed by the at least one processor, cause the system to provide a chat selection interface for display within the first messaging application based on generating the video room link, the chat selection interface comprising a listing of selectable chat elements, the chat elements selectable for sharing the video room link within a chat associated with the creator device.
19. When executed by the at least one processor, the system: determining that the video room link has been shared at least a threshold number of times; limiting the number of invitees with whom the video room link may be shared in a single message based on determining that the video room link has been shared at least the threshold number of times; and The system of claim 15 further comprising instructions to:
20. When executed by the at least one processor, the system, upon receiving an indication of a user interaction with the video room link, causing a first invitee device associated with the second messaging application to access the second messaging application to enter the video room; having a second invitee device not associated with the second messaging application access a browser to enter the video room; The system of claim 15 further comprising instructions to:
Citation Information
Patent Citations
Communication method of data relay server, communication method of video conference server protected by firewall, and communication method of video conference client
JP2007202129A
System and method for combining an instant messaging system and a video communication system
JP2013513313A
System and method for agent-based integration of instant messaging and video communication systems
JP2015534676A
Information processor, communication method, program, and system
JP2016076919A
Display control method
JP2016110607A