ELECTRONIC CONFERENCING
Aspects of the subject technology provide for secure, privacy-preserving access to electronic conferencing. In one or more implementations, an electronic device may receive a request to join a call with a second device, the request including components of a uniform resource locator (URL). The electronic device may assemble the URL using the components, and join the call using the assembled URL.
This application claims the benefit of priority to U.S. Provisional Patent Application No. 63/143,714, entitled “Video Conferencing,” filed on Jan. 29, 2021, and U.S. Provisional Patent Application No. 63/189,148, entitled “Electronic Conferencing,” filed on May 15, 2021, the disclosure of each of which is hereby incorporated herein in its entirety.
TECHNICAL FIELDThe present description relates generally to electronic conferencing, including, for example, secure, privacy-preserving, access to conferencing using electronic devices.
BACKGROUNDVideo conferencing allows people in remote locations to each view an incoming video stream of each other in real time.
Certain features of the subject technology are set forth in the appended claims. However, for purpose of explanation, several embodiments of the subject technology are set forth in the following figures.
The detailed description set forth below is intended as a description of various configurations of the subject technology and is not intended to represent the only configurations in which the subject technology can be practiced. The appended drawings are incorporated herein and constitute a part of the detailed description. The detailed description includes specific details for the purpose of providing a thorough understanding of the subject technology. However, the subject technology is not limited to the specific details set forth herein and can be practiced using one or more other implementations. In one or more implementations, structures and components are shown in block diagram form in order to avoid obscuring the concepts of the subject technology.
Conferencing applications can be installed on electronic devices to allow users of the electronic devices to exchange and view audio and/or video feeds of each other in real time, such as in a video conferencing session. However, users that do not have the conferencing application installed on their device, users that do not have an updated version of the conferencing application on their device, and/or users of devices running platforms (e.g., operating systems) that are not compatible with the conferencing application can sometimes be undesirably excluded from a conferencing session that the other participant(s) of the conferencing session would like that user to join.
In some scenarios, web-based access to a conferencing session can be provided by a server, for a user of an electronic device that does not have access to the conferencing application being used by other participants in the session. However, it can be challenging to provide web-based access to a conference while protecting the privacy of the participants, preventing eavesdropping on the audio and/or video streams being exchanged during the conferencing session, preventing uninvited participants from joining the conference, and allowing server operations for data exchanges without exposing conference content and/or participants to the server(s).
Aspects of the subject technology disclosed herein can be helpful, for example, in providing secure, privacy-preserving web-based access to electronic conferencing, such as for users that do not have a conferencing application installed on their device, users that do not have an updated version of the conferencing application on their device, and/or users of devices running platforms (e.g., operating systems) that are not compatible with the conferencing application.
The network environment 100 includes an electronic device 110, an electronic device 115, an electronic device 117, an electronic device 119, a server 120 (e.g., an identity server), and a server 130 (e.g., an application server and/or a relay server). The network 106 may communicatively (directly or indirectly) couple the electronic device 110, the electronic device 115, the electronic device 117, the electronic device 119, the server 120, and/or the server 130. In one or more implementations, the network 106 may be an interconnected network of devices that may include, or may be communicatively coupled to, the Internet. For explanatory purposes, the network environment 100 is illustrated in
The electronic device 110, the electronic device 115, the electronic device 117, and/or the electronic device 119 may each be any of, for example, a desktop computer, a portable computing device such as a laptop computer, a smartphone, a peripheral device (e.g., a digital camera, headphones), a tablet device, standalone videoconferencing hardware, a wearable device such as a watch, a band, and the like, or any other appropriate device that includes, for example, one or more wireless interfaces, such as WLAN radios, cellular radios, Bluetooth radios, Zigbee radios, near field communication (NFC) radios, and/or other wireless radios. In one or more implementations, the electronic device 110 may include a video conferencing application installed and accessible by a user of the electronic device.
In
In one or more implementations, the electronic device 115, the electronic device 117, and/or the electronic device 119 may be logged into an account with a server such as the server 120 and/or the server 130. In one or more implementations, the electronic device 110 may not be associated with or may not be logged in to an account with the server 120 and/or the server 120 in various operational scenarios described herein as examples. In one or more implementations, the electronic device 119 and/or the electronic device 117 may be associated with (e.g., logged into and/or registered to) an account with which the electronic device 115 is also associated e.g., logged into and/or registered to). In one or more implementations, the electronic device 110, the electronic device 115, the electronic device 117, and/or the electronic device 119 may be, and/or may include all or part of, the electronic device discussed below with respect to the electronic system discussed below with respect to
In one or more implementations, one or more servers such as the server 120 and/or the server 130 may perform operations for managing secure exchange of audio and/or video streams between various electronic devices such as the electronic device 110, the electronic device 115, the electronic device 117, and/or the electronic device 119, such as during a conferencing session. In one or more implementations, the server 120 may be or include an identity server that stores account information associated with the electronic device 110, the electronic device 115, the electronic device 119, and/or users of those devices. In one or more implementations, the server 120 may store mappings between temporary identifiers (e.g., service-specific aliases) for accounts of users that initiate and/or participate in conferencing sessions and other identifiers (e.g., account aliases, account identifiers, telephone numbers, email addresses, or other permanent identifiers) for the accounts. In one or more implementations, one or more servers such as the server 130 may be or include an application server that provide resources (e.g., browser code such as JavaScript code, content for notifications, updates to session access information, encrypted data, and/or other resources) for web-based access to, and/or participation in a conferencing session by, for example, the electronic device 117, with, for example, the electronic device 110, the electronic device 115, and/or the electronic device 119 (and/or one or more other devices). In one or more implementations, one or more servers such as the server 130 may be or include a relay server that relays encrypted communications between devices that have been admitted into a conferencing session and that are participants in the conferencing session. In one or more implementations, a relay server may manage expellability of one or more participant devices that are connected to a conferencing session. In one or more implementations, one or more servers, such as the server 130 may communicate with an identity server (e.g., server 120) before, during, and/or after a communication session, such as to map aliases to accounts, and/or to obtain contact information for one or more devices having and/or logged into an account with the identity server or the application server. For explanatory purposes, the server 120 and the server 130 are each depicted as a single server. However, it is appreciated that the server 120 and/or the server 130 may be implemented as a common server, or may each be implemented as multiple servers, such as a system of servers. For example, in one or more implementations, the server 130 may represent one or more application servers and/or one or more relay servers.
However, as illustrated in
As another example, other electronic devices, such as electronic device 110 in
In the example of
In the example of
In the example of
As shown in
If it is determined that a device associated with the contact information has the conferencing application 200 installed and available, the conferencing application 200 of the device of user A (e.g., at electronic device 115) may interact with the conferencing application 200 at the device of the desired invitee to generate a native notification of the invitation. In this example, the device of the desired invitee can use the conferencing application 200 at that device to access the conferencing session.
If it is determined that a device associated with the contact information does not have the conferencing application installed and available or has an incompatible or outdated version of the conferencing application, the conferencing application 200 at electronic device 115 may generate information for a link to the conferencing session. In one or more implementations, the electronic device 115 may be unable to determine whether the conferencing application is installed or available at another device and may generate the link to the conferencing session based on being unable to make the determination. In one or more implementations, a link to the conferencing session may be generated a the electronic device 115 without attempting to determine whether a conferencing application is available at another device. The link (e.g., a web link as a uniform resource locator (URL) or a uniform resource indicator (URI) or other network identifier) and/or the information for the link can be provided to the device that does not have the conferencing application installed and available or has an incompatible or outdated version of the conferencing application via text message, email, or other messaging or network communications systems. In this example, the device of the desired invitee can use the link and/or the information for the link to access the conferencing session (e.g., using a web browser), such as described hereinafter in connection with various aspects of
Once a conferencing session has been established, for example, between electronic device 115, electronic device 110, electronic device 117, and/or electronic device 119, in order to protect the content of the exchanged video streams from, for example, eavesdropping (e.g., by malicious third-party actors and/or even by the servers 120 and/or 130), audio and/or video streams may be end-to-end encrypted, so that only the intended end users (e.g., the participants in the conferencing session that have decryption keys for the content) can access the content. However, it can also be helpful, in some implementations, to provide some information about the type of content being exchanged to one or more servers (e.g., one or more of servers 120 and/or 130), such as to allow the servers to better manage the exchange of the encrypted content. For example, metadata can be provided from a sending device (e.g., electronic device 115) to a server (e.g., server 130), from one server to another server, and/or from a server to a recipient device (e.g., electronic device 117), along with encrypted content. For example, the metadata may include a resolution for each of several versions of the encrypted video that facilitates a server determining which version to send to a recipient device, according to the capabilities of a recipient device.
Metadata that is provided with the end-to-end encrypted video content on one or more hops along the way between the sending device and the recipient device may be hop-by-hop encrypted. In this way, the metadata intended for access at a particular device and/or server can be decrypted by that devices and/or server, without allowing access to the end-to-end encrypted video content. In various implementations, the end-to-end encrypted video content may also be hop-by-hop encrypted (e.g., in a double encryption of the video content that includes a hop-by-hop encryption of the already end-to-end encrypted data) at one or more stages along the route between the sending device and the recipient device.
Video data is often encoded using network allocation layer (NAL) units. In one or more implementations, codec-specific packetization of encoded video data (e.g., for transmission of the data over a network such as network 106) can be performed by parsing the encoded video data to identify NAL units, and generating packets for transmission based on the NAL units. A recipient device (e.g., a depacketizer at the recipient device) can then detect and decode the NAL units in the packets for further processing and display of the video data. However, as described herein, video data can be end-to-end encrypted to prevent access to, or eavesdropping on, the video data during transmission. This encryption of encoded video data can prevent codec-specific packetizers and/or depacketizers from detecting the NAL units, which can be disruptive to packetization and/or depacketization processes.
In accordance with aspects of the subject technology, packetization operations for encrypted video content may be performed, for example, to allow depacketization of encrypted video data without requiring changes to a depacketizer. For example, a packetizer (e.g., at a sending device that is part of a video conferencing session with one or more recipient devices) may receive encrypted video data (e.g., encrypted encoded video frames that includes one or more encrypted NAL units), perform a codec-specific transformation of the encrypted video data to generate one or more new NAL units that include encrypted encoded video data, and then packetize the new NAL units that include encrypted encoded video data for transmission. In this way, a depacketizer (e.g., at a recipient device) that expects to receive unencrypted video data encoded using NAL units, can process new NAL units that include the encrypted encoded video data to expose the encrypted encoded video data for decryption and further processing at the recipient device(s).
In one or more other implementations, a generic packetizer may be provided that is not codec-specific (e.g., for packetization of encrypted video content). For example, a generic packetizer may packetize encrypted and/or unencrypted video content based on the available packet size and without reference to the content or any underlying encoding of the content to be packetized. For example, a generic packetizer may receive unencrypted or encrypted content such as encrypted video data, divide the received content according to a packet size, include the divided content in packets having the packet size (e.g., each packet including the divided data bounded by a start-of-packet and end-of-packet indicator), and fill and send the packets until all of the content has been sent. A generic packetizer may facilitate inclusion of information that may be useful to a server, such as server 120 and/or server 130, to accompany the encrypted video data in the packets. For example, the information may be added as metadata by the generic packetizer as header extensions for packets of encrypted video data. The information may include, for example, an indicator of whether the video data in the packet includes a keyframe (e.g., an I-frame or another frame that can be decoded independently of other video frames), a resolution or bit rate of the video data, a codec profile, or a timestamp (as examples) associated with the video data.
At block 402, a first device (e.g., electronic device 117) may receive a plurality of components of a uniform resource locator (URL). In one or more implementations, the plurality of components may not include sufficient information to contact another device. For example, the plurality of components may not include sufficient components to generate an actionable URL. For example, the plurality of components may be missing another component of the URL, such as a domain, a subdomain, a path component, a host component, and/or the like. The components of the URL may be received, for example, as part of an invitation to a video conferencing session with another device (e.g., electronic device 115), such as via a text message, an email, a webpage, or generally any message or communication. The plurality of components may include, for example, a version number corresponding to the URL, and an identifier and a key corresponding to a video conferencing session (e.g., an identifier and public key corresponding to the user and/or device that sent and/or created the invitation). In one or more implementations, receiving the plurality of components of the URL at the first device may include receiving the plurality of components of the URL with a first version of an application running at the first device from a second, different version of the application running at a second device.
At block 404, the first device verifies whether the plurality of components include one or more expected components for the URL. In response to a failure to verify the presence of the one or more expected components for the URL, an error message may be provided. Verifying whether the plurality of components include the one or more expected components for the URL may include determining whether the plurality of components include a version number corresponding to a format for the URL.
At block 406, in response to verifying that the plurality of components include the one or more expected components for the URL, the first device may determine whether content of at least one of the one or more expected components for the URL is valid. In response to a determination that the content of the at least of the one or more expected components for the URL is invalid, an error message may be provided.
Verifying (at block 404) whether the plurality of components include the one or more expected components for the URL may include determining whether the plurality of components include an identifier associated with a video conferencing session and associated with an initiating user of the video conferencing session. In one or more implementations, the identifier may be or include a temporary identifier (e.g., a service-specific alias) for the initiating user that is configured to expire after termination of the video conferencing session. In one or more implementations, a server such as server 120 may store a mapping between the temporary identifier and a permanent identifier for the initiating user. The temporary identifier may be revocable by the initiating user. The temporary identifier may be restricted to a particular service such as a video conferencing service.
Verifying whether the plurality of components include the one or more expected components for the URL may also include determining whether the plurality of components include a public key for the video conferencing session. The public key may be, for example, a public key of an (e.g., P-256) elliptic curve key agreement, where the private key is held by the initiating user of the video conferencing session. For example, verifying whether the plurality of components include the one or more expected components may include determining (e.g., without inspecting the content of the data) whether the number of received components matches an expected number of components, and/or determining whether a message including the plurality of components includes data in each of one or more message fields in which the expected components are expected to be received.
In one or more implementations, determining (at block 406) whether the content of at least one of the one or more expected components for the URL is valid may include determining whether the identifier conforms to a first expected format (e.g., a format having a header that flags the identifier as an identifier, and a data string having a predetermined number of bytes) and/or determining whether the public key conforms to a second expected format (e.g., determining whether the public key has a predetermined number of bytes of data having an expected type). In one or more implementations, the first expected format may include a header string and a universally-unique identifier (UUID) byte string having an expected number of bytes. In one or more implementations, the second expected format may include an expected number of bytes for the public key.
At block 408, in response to determining that the content of at least one of the one or more expected components for the URL is valid, the first device may encode the content of the at least one of the one or more expected components for the URL. Encoding the content of the at least one of the one or more expected components for the URL may include encoding the identifier and/or encoding the public key. Encoding the identifier may include transforming the identifier from a first format (e.g., the format in which the identifier was received) to a second format (e.g., a URL-safe format), such as by performing a URL-safe base-64 encoding of the bytes of the identifier. Encoding the public key may include transforming the public key from a first format (e.g., the format in which the public key was received) to a second format (e.g., a URL-safe format), such as by performing a URL-safe base-64 encoding of the bytes of the public key. However, these encodings are merely examples, and the identifier and/or the public key may be transformed using URL component encoding (e.g., percent encoding), protocol buffer (protobuf) encoding, or other encodings.
At block 410, the first device may assemble the URL by combining the encoded content of the at least one of the one or more expected components for the URL with at least one additional component of the URL. In one or more implementations, the at least one additional component of the URL includes a domain, and assembling the URL includes appending the encoded content of the at least one of the one or more expected components as a fragment of the URL following the domain (e.g., following a hashtag in the URL). In various implementations, receiving the plurality of components of the URL may include receiving the domain, or the domain may be pre-stored at the first device and assembling the URL may include obtaining the domain from local storage at the first device. In one or more implementations, the domain is a web domain, and receiving the plurality of components of the URL at the first device includes receiving the plurality of components in an invitation to a video conferencing session, the invitation generated by a video conferencing application at a second device (e.g., electronic device 115).
In one or more implementations, the first device (e.g., a video conferencing application at the first device) may provide a notification (e.g., in a UI for a user of the first device), the notification including the assembled URL and an option to connect to the video conferencing session. The first device may also receive a selection (e.g., by the user of the first device) of the option to connect to the video conferencing session, and redirect the first device to attempt to connect to the assembled URL with a browser at the first device.
In one or more implementations, responsive to the attempt to connect to the assembled URL, the first device may receive (e.g., from a server associated with the assembled URL) an update to one or more portions of the URL such as an update to the domain of the URL. The first device may access, via the browser, a web application for connecting to the video conferencing session using the assembled URL with the update to the domain.
In one or more implementations, the first device may connect to the video conferencing session using a browser at the first device to access a server (e.g., server 120 and/or server 130) associated with the assembled URL. In one or more implementations, connecting to the video conferencing session may include connecting to the video conferencing session without exposing the public key to the server. For example, connecting to the video conferencing session without exposing the public key to the server may include signing, with the browser at the first device using the public key, a request-to-join message from the first device to a second device of the initiating user of the video conferencing session. In one or more implementations, the assembled URL corresponds to a video conferencing session that includes at least one participant device that does not have any version of the application installed or available.
At block 502, a first device (e.g., electronic device 117 having prior conferencing application 204) receives a request to join a call with a second device (e.g., electronic device 115), the request including components of a uniform resource locator (URL). For example, the request to join the call may be generated at the second device (e.g., using a conferencing application such as conferencing application 200 at the second device) and provided to the first device (e.g., via one or more servers, such as server 130). For example, the call may be an audio call (also referred to herein as an audio conferencing session) or a video call (also referred to herein as an video conferencing session). In one or more implementations, the first device may also verify whether the components include one or more expected components (e.g., a service-specific alias and a key, as described above in connection with block 404 of
At block 504, the first device assembles the URL using (e.g., by combining) the plurality of components for the URL. In one or more implementations, the first device may encode at least one the components for the URL to produce at least one encoded component. The at least one encoded component may be included in the assembled URL. In one or more implementations, the first device may encode content of the components for the URL, for assembly into the URL. In one or more implementations, assembling the URL includes obtaining a domain for the URL and including the domain in the URL (e.g., by appending the components, following the domain, as a fragment of the URL, such as following a hashtag symbol in the URL). In one or more implementations, assembling the URL may also include obtaining one or more additional elements of the URL (a user identifier, an application identifier, nonce, etc.) that were not received in the invitation from the second device, in the URL.
In one illustrative example, if the first device receives two components such as “service-specific_alias_1” and “key_1”, the first device may obtain a domain such as “conferencingapplicationserver.com”, and may assemble the URL by adding the two components as a fragment, to form a URL such as “conferencingserver.com/#a=service-specific_alias_1&k=key_1”. In examples in which a version number is provided, the URL may be assembled to include the version number (e.g., “1”) in the fragment, to form a URL such as “conferencingserver.com/#v=1&a=service-specific_alias_1&k=key_1”. In examples in which the service-specific alias and the key are encoded using an encoding function encode( ) before being assembled into the URL, the first device may assemble a URL such as, for example, “conferencingserver.com/#v=1&a=encode(service-specific_alias_1)&k=encode(key_1)”.
In one or more implementations, assembling the URL may include assembling the URL based on verifying, by the first device, that the plurality of components include one or more expected components for the URL. In one or more implementation, the first device may also receive an additional request including an additional plurality of components of an additional uniform resource locator (URL), and not assemble the additional URL based on determining that the additional plurality of components do not include one or more expected components for the additional URL and/or based on determining that the content of at least one of the additional plurality of components is not valid.
At block 506, the first device joins the call using the assembled URL. For example, joining the call may include receiving, by the first device, a selection (e.g., a user selection via an input component of the first device) of the assembled URL, attempting, by the first device, to connect to the call with a browser (e.g., browser 206) using the assembled URL, and joining, by the first device, the call using the assembled URL without providing a key included in the plurality of components to a server corresponding to the URL. Joining the call may also include signing, by the device (e.g., with the browser) using the key, a request-to-join message from the first device to the second device. Further details of processes and/or operations that can be performed for joining a call using an assembled URL (or a complete link including the domain and the components) are discussed hereinafter in connection with, for example,
Aspects of the processes of
At block 602, a first device (e.g., electronic device 110) may receive a uniform resource locator (URL) corresponding to a conferencing session that is being or has been initiated by a conferencing application at a second device (e.g., electronic device 115). The first device may receive the URL, for example, in a text message, an email, webpage, or any other message. The URL may include a domain (e.g., a web domain associated with a server, such as server 130 of
At block 604, responsive to a user of the first device accessing (e.g., clicking on) the URL, the first device may navigate (e.g., using a browser such as browser 208) to a server corresponding to the URL (e.g., a server such as server 130 identified in the domain of the URL). For example, the browser at the first device may send one or more hypertext transfer protocol (HTTP) requests to the server, receive one or more HTTP responses from the server, and load and render a web page corresponding to the URL in the browser using the HTTP responses.
At block 606, using the browser, the first device may obtain (e.g., download responsive to an HTTP request to the server) code (e.g., code that, when executed, serves as a communication client on the first device for communicating with one or more servers such as the server 120 and/or the server 130, such as JavaScript code corresponding to a web application for conferencing in some examples) from the server within the web browser. The first device may download the code from the server without providing the components of the URL (e.g., the version number, the identifier, or the key) to the server (e.g., as described hereinafter in connection with
At block 608, the first device may then pass one or more of the version number, the identifier, and the key from the fragment of the URL to the downloaded code (e.g., as parameters or inputs to the downloaded code).
At block 610, the first device may execute the downloaded code within the browser to join the video conferencing session. For example, the first device may execute the downloaded code within the browser to generate and sign and/or encrypt a request-to-join message to be provided to the second device (e.g., as discussed in further detail hereinafter in connection with
In one or more implementations, the URL may also include (e.g., as part of the fragment of the URL) an indicator of whether the initiating user has initiated and audio/video session or an audio-only session. The web application (e.g., the downloaded code within the browser) determining, using this audio/video indicator, whether to activate a camera while joining the session corresponding to the URL, or to provide an audio-only UI for joining and/or participating in and audio-only session (e.g., a voice call).
When a user that has a device with a conferencing application invites another user of another device having the same conferencing application to a conferencing session (e.g., via exchange of native messages between the conferencing applications in response to the user of the device selecting or entering the other user's phone number or other contact information into the conferencing application as the user's device, and selecting an option to send the invitation and/or to begin the conferencing session), the conferencing applications on the two devices can provide a level of trust between the users. For example, the conferencing application can require registration of the device and/or the user with a server that facilitates conferencing sessions between the conferencing applications. This server knowledge of the users/devices with the conferencing applications can facilitate a level of trust between the users and/or a level of control of the use of the conferencing application for contact between the users.
However, as described herein, it can also be desirable to allow users of devices that do not have the conferencing application installed to access a conferencing session. For example, a user having a device with the conferencing application may desire to invite other participants to a conferencing session, such as for a book club meeting. The initiating user may desire that participants with the conferencing application and without the conferencing application be able to attend the book club conferencing session, potentially including participants with which the initiating user has not established trust or even previously interacted with. In some circumstances, the initiating user of the conferencing session may not want to reveal their permanent identity and/or contact information (e.g., a phone number or an email address) to all of the invited participants. Moreover participants desiring to join a conferencing session and or initiate a conferencing session may also desire that a server facilitating the conferencing session does not track who is in participating in the conferencing session.
In accordance with aspects of the disclosure, conferencing sessions may be provided between participant devices, in which the privacy of the initiating user of the conferencing session is at least initially preserved with respect to invitees to the conferencing session, and in which the privacy of the participants in the conferencing session is preserved with respect to one or more servers that facilitate the exchange of data for the conferencing session. For example, in accordance with aspects of the disclosure, an initiating user of a conferencing session can provision a new temporary identifier (sometimes referred to herein as a service-specific alias) for a particular conferencing session. The service-specific alias for the conferencing session can be provided to invitees to the conferencing session, so that initiating user can invite participants to the conferencing session without revealing their permanent identity or contact information. For example, an initiating user may desire to invite a group of potential participants to a conferencing session for a book club. However, the initiating user may not desire to reveal their phone number or email address to all of the potential participants, because this would allow the potential participants to continue contacting the initiating user via conferencing applications, via messaging applications, via telephone calls, or via emails or other means (which may be undesirable to the initiating user). By obtaining a service-specific alias for the conferencing session, the initiating user can provide an invitation to the conferencing session along with the service-specific alias, so that participants can contact the initiating user via the service-specific alias for permission to join the conferencing session (e.g., without revealing the permanent contact information of the initiating user). In this way, the privacy of the initiating user can be preserved.
The device of the initiating user of a conferencing session can also generate a key pair (e.g., an asymmetric keypair including a public key and a private key) and/or a symmetric key for the conferencing session. A device of the initiating user can provide the public key of the key pair created for the conferencing session to a device of an invited participant. The device of the invited participant can use the public key received from the device of the initiating user to sign and/or encrypt a request to join the conferencing session. The encrypted request can be provided from the device of the invited participant to the device of the initiating user, via a server, without revealing the content of the encrypted request to the server (e.g., since only the initiating user device, and/or other devices of the initiating user, have access to the private key for decryption of the encrypted request). In this way, participants can request to join a conferencing session, and initiating users (and/or delegates of the initiating users in some implementations), can accept a request from a device to join the conferencing session, without revealing the participants of the conferencing session to the server.
In the example of
In the example of
In the example of
The set 706 of services 708 for each service-specific alias 704 may define which services by which the server will allow communications addressed to the service-specific alias 704 to be provided to the device or devices associated with the account 700 (e.g., and associated with the account alias 702) corresponding to that service-specific alias 704. For example, if a remote device attempts to send a message using “Service 1” to a device associated with account 700 of User B by addressing the message to the service-specific alias 704 associated, the server may obtain the account alias 702 for the account 700 of User B, and pass the message to the device(s) of User B, because “Service 1” is a messaging service. In contrast, if a remote device attempts to send a message using “Service 1” to a device associated with account 700 of User B by addressing the message to the service-specific alias 704 that is associated with “Service 2” and “Subservice 1”, the server deny the delivery of the message via “Service 1” to devices associated with that account 700. For example, if User B provisioned the service-specific alias 704 associated with “Service 2” and “Subservice 1” for a particular conferencing session, and a device having that service-specific alias 704 later attempts to contact User B by sending a text message to that service-specific alias 704, the text message will not be delivered by the server (or may be delivered but rejected by the device of User b) because that service-specific alias 704 is not provisioned for messaging. In this example, the subject technology has allowed User B to participate in a conferencing session with other users, without providing the other users sufficient information to continue to contact the User B after the conferencing session.
In the example of
For example, as shown in
As shown in
As shown, the service-specific alias 704 for the account 700 of User A may then be provided to the electronic device 115 that requested the service-specific alias.
In one or more implementations, the electronic device 115 and/or another electronic device (e.g., electronic device 119) associated with the same account as the electronic device 115 can renew and/or update an existing service-specific alias 704 (e.g., to change the set 706 of services 708, the expiration time, the scope or subservices, etc. associated with that service-specific alias 704). In one or more implementations, the electronic device 115 and/or another electronic device associated with the same account as the electronic device 115 can delete the service-specific alias 704 to revoke access to the devices of the account the via the corresponding set of services using that service-specific alias 704. In one or more implementations, synchronization of the service-specific alias 704 between multiple devices associated with the same account 700 (e.g., based on a notification as described in connection with
Once a service-specific alias 704 has been obtained (e.g., provisioned) by an electronic device such as electronic device 115, the service-specific alias 704 can be provided to other devices for use for contacting the electronic device 115 and or any other device associated with the same account 700 as the electronic device 115. For example, as shown in
In various implementations, the service-specific alias 704 can be provided to the remote device alone, or along with other information. In one or more implementations, the service-specific alias 704 can be sent in a link associated with a service of the set of services (e.g., a link for a conferencing session). For example, the link may be a link that includes the service-specific alias 704 and a key (e.g., a public key) for a conferencing session, the key generated by the electronic device 115 for the conferencing session as part of a key pair for the conferencing session. As shown in
In one or more implementations, the set of services for the service-specific alias 704 can be one service (e.g., conferencing) or multiple services (e.g., conferencing and messaging). In one or more implementations, the service-specific alias 704 can be receive-only (e.g., the electronic device 110 can send communications to a service-specific alias 704, but does not receive communications from a service-specific alias 704). For example, one device can provision and send a service-specific alias 704 to another device and then the other device can contact the first device using service-specific alias 704. In this example, the first device may be able to see the actual contact information (e.g., a phone number or an email address) of the other device even though the other device can't see the actual contact information of the first device.
In an exemplary use case, the electronic device 110 may attempt to call the service-specific alias 704 received from the electronic device 115, and the server may notify all devices associated with the same account as the electronic device 115 of the incoming call, if the service-specific alias is determined by the server to be valid (e.g., existing and unexpired, and defined for calls). The devices associated with the same account may accept the incoming call if they have fetched the service-specific alias 704 to which the call is addressed, but may not accept call unless they have received the service-specific alias 704. For example, a device associated with the same account as the electronic device 110 may not accept that the call that is intended for the device if the device hasn't fetched the service-specific alias 704 provisioned by the electronic device 115.
In one or more implementations, a scope identifier (e.g., corresponding to a subservice 710) may be stored in connection a service-specific alias 704, and can be used to allow use of a single service-specific alias 704 for multiple different scopes. In one or more implementations, a service-specific alias 704 may follow the caller ID of the provisioning device (e.g., a phone number of the provisioning device). For example, if a SIM card were to be removed from the electronic device 115 and inserted into a new device, a communication addressed to a still-valid service-specific alias 704 provisioned by the electronic device 115 may be provided to the new device since the new device would be associated with the same caller ID by virtue of the transfer of the SIM card.
As shown in
In one or more implementations, the one or more servers also determine whether to allow the contact with the account 700 via the service by determining whether the service-specific alias 704 is expired (e.g., by comparing a current time to the expiration time 800 stored at the server). For example, as shown, the one or more servers may store the set of services defined by the user for the service-specific alias 704, and an expiration time 800 for the service-specific alias 704.
In one or more implementations, the request from the electronic device 110 in
In one or more implementations, if a server receives an attempt to communicate with an electronic device using a service-specific alias 704, via a service for which the service-specific alias 704 wasn't provisioned, the attempt may be rejected by the server. In one or more implementations, a server maps a service-specific alias 704 to an account alias 702, and spam prevention operations (e.g., limitations on a number of messages in a period of time, etc.) that are applied for account aliases can also be applied to a service-specific alias 704. In one or more implementations, allowing or denying access using a service-specific alias 704 is enforced based on the set 706 of services 708 on the server side (e.g., a device can attempt to contact another device using a service-specific alias 704 that is associated with that device using a first service and be denied by the server because the service-specific alias 704 is only scoped for another service). In one or more implementations, a user can request a service-specific alias 704 from one device, and then sync that service-specific alias 704 across all devices of the user. In one or more implementations, synchronizing the service-specific alias 704 in this way allows a call to the service-specific alias 704 to ring or otherwise alert the user at multiple or all of the user's devices. In one or more implementations, an expired service-specific alias 704 may be stored by the server for a period of time after the expiration time 800, to allow for the possibility of a renewal of a previously expired service-specific alias 704. In one or more implementations, when a link corresponding to a service-specific alias 704 is used (e.g., to successfully join a conferencing session), the server may extend the expiration time 710 of the service-specific alias 704.
In the example of
For example,
In one or more implementations, the service-specific alias 704 generated responsive to the request triggered by the proximity-based interaction illustrated in
In one or more implementations, the electronic device 115 (or another device associated with the same account 700 as the electronic device 115) may de-provision the temporary messaging alias to prevent further messages from the electronic device 110 from being delivered to the electronic device 115. In one or more implementations, the electronic device 110 also provisions a service-specific alias 704 (e.g., a temporary messaging alias) from the server responsive to the proximity-based interaction (e.g., the tap) with the electronic device 115, and provides that temporary messaging alias to the electronic device 115. In this way, users that may not desire to exchange permanent contact information (e.g., strangers that strike up a conversation on a bus ride) are provided with an opportunity to temporarily continue communicating using messages in a way that is revokable by one or both of the users at any time.
For example, the disconnection may be detected during a file transfer operation over the proximity-based connection (e.g., over a Bluetooth or direct Wi-Fi connection between the electronic device 115 and the electronic device 110). Responsive to the disconnection, the electronic device 115 may provision, from the server, a service-specific alias corresponding to a temporary file transfer alias. The electronic device 115 may provide the temporary file transfer alias to the electronic device 110 so that the electronic device 110 can continue the file transfer operation over the Internet (e.g., by transmitting the files to a network destination corresponding to the temporary file-transfer alias). In this way, when a local connection between devices drops (e.g., during a file transfer operation), the receiving device can provision and send a service-specific alias for the file transfer operation to the sending device, so that the transfer can continue over a wider area connection.
For example, electronic device 115 may provide a temporary file transfer alias to an electronic device 110, establish a network-based connection with the electronic device 110 using the temporary file transfer alias, and continue a file transfer operation that was previously in progress over the proximity-based connection, over the network connection. In one or more implementations, the proximity-based connection is a Bluetooth connection. In one or more implementations, the proximity-based connection is a direct Wi-Fi connection. In one or more implementations, the network connection is a connection over the Internet. In one or more implementations, the electronic device 115 initiates the file transfer over the proximity-based connection.
In one or more implementations, the electronic device 110 provides, directly to the electronic device 115 over the proximity-based connection and prior to the disconnection, an acceptance of the file transfer over the proximity-based connection. In one or more implementations, the electronic device 115 detects the disconnection when a distance between the electronic device 115 and the electronic device 110 exceeds a threshold (e.g., distance D).
Returning to the example of a conferencing session between a device having a conferencing application 200 and a device which has a prior conferencing application 204 or does not have a conferencing application,
In the example of
As shown, the electronic device 115 (or the electronic device 119 after receiving the link) provides the link to a device such as electronic device 110 that unassociated with and/or not logged into the user account, to provide access for the electronic device 110 to the communication session corresponding to that link. The link information may be provided to the electronic device 119 by a first channel (e.g., a background channel managed by the conferencing applications and/or a system process at the electronic device 115 and the electronic device 119), and the link may be provided to the electronic device 110 by a second channel (e.g., via a text message, an email, a social media post, a website, or the like). Because the electronic device 115 provided the link to the electronic device 119, either electronic device 115 or electronic device 119 can initiate the conferencing session associated with the link and, when the electronic device 110 accesses the link, either electronic device 115 or electronic device 119 can be used to permit or deny electronic device 110 from joining the conferencing session. For example, if the electronic device 110 encrypts a communication (e.g., a request-to-join message) for the conferencing session using a public key included in the link, and sends the encrypted message to a service-specific alias in the link, the electronic device 119 can receive the encrypted communication using the link information (e.g., a service-specific alias and/or a session identifier included in the link and/or the link information) and decrypt the encrypted communication using the private key provided by the electronic device 115.
For example, the electronic device 115 or electronic device may initiate the communication session and receive a request from the electronic device 110 to join the communication session, the request including information (e.g., a service-specific alias for the account associated with the electronic device 115 and electronic device 119 and the conferencing session) included in the link.
As illustrated in
As shown in
In any of the various operations of
In one or more implementations, any or all of the devices at which links are stored may delete a link when a service-specific alias for the link expires. For example, when a service-specific alias 704 expires at an expiration time 800 as described herein, the server storing the service-specific alias 704 may send a notification to the devices associated with the corresponding account 700 for the service-specific alias (e.g., a notification to fetch an update). For example, electronic device 115, electronic device 119, and/or electronic device 1700 may determine that a service-specific alias 704 is expired based on the attempted fetch, and may delete any links that include that service-specific alias.
As discussed herein, aspects of the subject technology allow for devices to join a conferencing session from a web-based application, such as without exposing communications for joining the conferencing a session to a server.
As shown in
The electronic device 110 may execute the obtained code to: (i) encrypt a request (e.g., a request-to-join message) to join the call using the public key obtained from the link, and (ii) send the encrypted request to the server for delivery to the electronic device 115 or another device associated with the same account as the electronic device 115 (e.g., as described above in connection with
For example, as discussed in connection with
As shown in
In some examples, the server may limit requests (e.g., request-to-join messages and/or other messages) from the device associated with the temporary identifier, such as until a trusted device (e.g., a device that generated a link for which the request-to-join message is being provided) approves a request from the device associated with the temporary identifier. For example, until a device that has been assigned a temporary identifier is accepted into a conferencing session in response to a request-to-join message, the server may limit the device to a first number of requests associated with any link over a predefined period of time. After the device associated with the temporary identifier receives an approval response to a request, the server may, for example, increase the number of requests associated with any link that that device can send over the predefined period of time to a second, higher number of requests.
As shown in
In one or more implementations, the electronic device 110 may receive the encrypted response to the encrypted request-to-join message referred to in connection with
For example,
As another example of delegate approval of a request-to-join message,
In this way, any device that is a trusted participant in the conferencing session can approve a request-to-join message, even if no device associated with the account of the link creator device is a current participant in the call (e.g., as long as one device associated with the account of the link creator device is online and able to decrypt the encrypted request to join, and encrypt the delegate approval response).
In one or more implementations, the subject technology may provide participants in a conferencing session with the ability to expel another participant. For example, because the links described herein for joining a conferencing session can be used by any network connected device to request to join a conferencing session (e.g., and may be widely available in circumstances in which the link is posted on a web page, in a blog, or via social media), users that are not desired to be participants in the conferencing session, may inadvertently be allowed to join the conferencing session. It may be desirable for the original invitees of the conferencing session and/or participants that have been in the conferencing session for at least a minimum amount of time to be able to expel some other participants that have joined the conferencing session if one or more criteria (e.g., an expelling factor) is met.
For example, as shown in
As illustrated in
In contrast with
In one or more implementations, the expelling factor may be a pre-determined amount of time following admission of the electronic device 110 into the conferencing session, and electronic device 115 identifies the electronic device 110 as an expellable device for the pre-determined amount of time following the admission of the second device into the conferencing session, and identifies the electronic device 110 as a non-expellable device after the pre-determined amount of time following the admission of the second device into the video conferencing session. In one or more implementations, prior to the pre-determined amount of time, while the electronic device 110 is a non-expellable device, the electronic device 115 provides a request (e.g., an expel request) to the server 130 to remove the electronic device 110 from the conferencing session (see, e.g.,
In one or more implementations, the electronic device 115 starts a timer upon admission of the electronic device 110 into the conferencing session. In one or more implementations, the electronic device 117 also starts a timer upon admission of the electronic device 110 into the conferencing session, and identifies the electronic device 110 as a non-expellable device after expiration of the timer of the electronic device 117.
In one or more implementations, a server (e.g., server 130) that relays data (e.g., session data, such as encrypted audio and/or video data) between the electronic device 115 and the electronic device 110 during the conferencing session also starts a timer upon admission of the electronic device 110 into the conferencing session, and identifies the electronic device 110 as an expellable device before the expiration of the time at the server, and as a non-expellable device after expiration of the timer of the server. In some examples, the timer of the first device is different from (e.g., longer or shorter than) the timer of the server.
In one or more implementations, before the pre-determined amount of time (e.g., and before expiration of the timer for the electronic device 110 at the server), while the electronic device 110 is identified by the first device as an expellable device (e.g., and identified by the server as an expellable device), the electronic device 115 provides a request to the server to remove the electronic device 110 from the conferencing session, and receives a response indicating that the electronic device 110 has been expelled from the conferencing session. In one or more implementations, after the pre-determined amount of time (e.g., and before expiration of the timer for the electronic device 110 at the server), while the electronic device 110 is identified by the first device as a non-expellable device (e.g., and identified by the server as an expellable device), the electronic device 117 provides a request to the server to remove the electronic device 110 from the conferencing session, and receives a response indicating that the electronic device 110 has been expelled from the conferencing session. In one or more implementations, before the pre-determined amount of time (e.g., and after expiration of the timer for the electronic device 110 at the server), while the electronic device 110 is identified by the first device as an expellable device (e.g., and identified by the server as a non-expellable device), the electronic device 115 provides a request to the server to remove the electronic device 110 from the conferencing session, and receives a response indicating that the electronic device 110 cannot be removed from the conferencing session.
In one or more implementations, the expelling factor may be a joining method factor that depends on the connection mechanism by which the device joined the conferencing session (e.g., via the conferencing application 200, via a web-based application using a browser 206 or 208, and/or as a new participant or as an original invitee). For example, in one or more examples, electronic device 110 is connected to the conferencing session via a conferencing application 200 and the electronic device 115 identifies the second device as a non-expellable device (e.g., immediately upon admission of the electronic device 110 to the conferencing session). In these examples, the electronic device 115 is unable to remove the electronic device 110 from the conferencing session. In one or more implementations, the electronic device 115 is an initiator of the conferencing session.
In one or more other examples, the electronic device 110 has been admitted to the conferencing session via a web-based application (e.g., using a browser 208), and the electronic device 115 identifies the second device as an expellable device. In these examples, the electronic device 110 may continue to be identified as an expellable device while exchanging at least audio streams (e.g., and video streams) with the first device during at least a portion of the conferencing session. In one or more example scenarios, the electronic device 115 provides a request to a server to remove the electronic device 110 from the video conferencing session, and receives a confirmation that the third device has been removed from the conferencing session (e.g., as described above in connection with
In the examples of
In one or more implementations, after a participant device has been removed from a conferencing session, each remaining participant device and the server may store and/or update a list of removed devices. In one or more implementations, each remaining participant device and the server may delete or reset the list of removed devices when the conferencing session ends (e.g., when the last participant device leaves the conferencing session). In one or more implementations, after the participant device is removed from a conferencing session, the remaining participant devices may update encryption keys corresponding to the conferencing session (e.g., in response to a server notification that membership in the video conferencing session has changed). In one or more implementations, an already trusted participant device (e.g., known to the server to be trusted by virtue of being connected to the conferencing session via the conferencing application 200, being an original invitee for the conferencing session, and/or having been a participant in the conferencing session for at least a predetermined period of time) can bypass the pre-determined time during which a new participant device would be identified as expellable, and make the new participant device trusted (and thus non-expellable) earlier than the expiration of the pre-determined time.
At block 2802, a device (e.g., electronic device 115) including an input component and logged into an account (e.g., an account 700) associated with an account alias (e.g., an account alias 702) obtains, based on an input detected by the input component, a definition of a set of services (e.g., a set 706 of services 708, such as “Service P” as described above in connection with the example of
At block 2804, the device may provide a request for a service-specific alias (e.g., a service-specific alias 704) for the account. The request may include one or more identifiers corresponding to the set of services. The request may be provided locally on the device for generation of a service-specific alias at the device, or the request may be provided to a server for provisioning of the service-specific alias at the server. For example, providing the request for the service-specific alias may include providing the request from the device to a server (e.g., server 120) storing an identification of the account alias of the account. The account alias may be configured to allow contact with the one or more devices associated with the account via any service that the account alias is registered with, including at least one service that is independent of the server. The service-specific alias may be separate from the account alias and configured to allow or deny communications to one or more devices associated with the account via the set of services.
At block 2806, after providing the request, the device may receive the service-specific alias (e.g., as described above in connection with the example of
In one or more implementations, the device may detect a proximity-based interaction with a second device (e.g., as described above in connection with
In one or more implementations, the device may detect a disconnection of a proximity-based connection between the device and a second device (e.g., as described above in connection with
At block 2902, one or more servers (e.g., server 120 and/or server 130) may receive a request (e.g., as described above in connection with
In one or more implementations, prior to receiving the request, the one or more servers may store time information (e.g., an expiration time 800) in association with the service-specific alias. In one or more implementations, the one or more servers generate the service-specific alias, and may, in some examples, include time information in the service-specific alias. In one or more implementations, the one or more servers may, prior to receiving the request, generate the service-specific alias, in part, by including verification information (e.g., a checksum) in the service-specific alias. The verification information can be used to verify that the service-specific alias has not been modified or corrupted, in some implementations.
At block 2904, the one or more servers may obtain a stored set (e.g., a set 706) of services (e.g., services 708) for the service-specific alias. The stored set of services may be defined by a device associated with the account (e.g., as described above in connection with
At block 2906, in response to determining that the service is included in the stored set of services, the one or more servers may allow contact with the one or more devices associated with the account. For example, the one or more servers store an account (e.g., the account 700) and an account alias (e.g., the account alias 702) of the account, the service-specific alias different from the account alias. Allowing the contact may include, by the one or more servers, obtaining the account alias (e.g., a phone number or an email address) for the account, and providing information associated with the request to a device registered to the account using the account alias.
At block 2908, the one or more servers may, in response to determining that the service is not included in the stored set of services, deny the request. In one or more implementations, the one or more servers may also determine whether to allow the contact with the account via the service by determining whether the service-specific alias is expired. For example, the one or more servers may set an expiration time (e.g., an expiration time 800 as discussed herein) at which the service-specific alias will expire, responsive to a request from the device associated with the account to provision the service-specific alias. The one or more servers may also extend the expiration time for the service-specific alias based on a further request from a device associated with the account (e.g., the device that requested the service-specific alias or another device associated with the account).
In one or more implementations, the request may be a request to contact the account via a subset (e.g., a subservice 710) of the service, and the one or more servers may determine whether to allow the contact with the account via the subset of the service, in part, by determining whether the service-specific alias has a scope that includes the subset of the service. In one or more implementations, the one or more servers may receive a scope (e.g., a subservice such as subservice 710, which may be or include a particular conferencing session in some examples) for the service-specific alias from the device associated with the account. The one or more servers may also store the scope in connection with the service-specific alias.
In one or more implementations, the one or more servers may also identify one or more other devices associated with the account, and provide a notification to the one or more other devices with respect to creation of the service-specific alias. (e.g., a notification to fetch the service-specific alias, as described above in connection with
At block 3002, a first device (e.g., electronic device 115) that is associated with an account (e.g., an account 700) and a device identifier (e.g., “Device A ID”), may generate a link to join a communication session (e.g., an audio communications session or a video communications session).
At block 3004, the first device may generate a link identifier for the link. For example, the link identifier may be an alphanumeric character or string of characters, such as a time stamp or a sequence number. In one or more implementations, each link generated by a devices may have a sequence number that is a number that is one number higher than the sequence number of the last link generated by that device.
At block 3006, the first device may provide (e.g., as described above in connection with
At block 3008, the first device or the second device may provide, to a third device (e.g., electronic device 110) not logged into the account, the link to provide access for the third device to the communication session (e.g., as described above in connection with
In one or more implementations, the first device may generate a second link to join a different communication session. In one or more implementations, the first device may also generate a different link identifier for the second link. In one or more implementations, the second link may be generated using the device identifier for the first device and a different link identifier.
In one or more implementations, the first device may receive a link check-in communication from the second device, the link check-in communication including the device identifier and the link identifier (e.g., as described above in connection with
In one or more implementations, the first device may receive an additional link generated at a fourth device (e.g., electronic device 1700) associated with the account, the additional link including a device identifier (e.g., “Device C ID”) for the fourth device, and an additional link identifier. The first device may receive the additional link from the fourth device or from another device such as the second device that has received the additional link from the fourth device. For example, the first device may receive a link check-in communication from the second device (e.g., after receiving the additional link from the fourth device), the link check-in communication including the device identifier for the fourth device and a further additional link identifier (e.g., as described above in connection with
In another example, the first device sends the device identifier for the fourth device and the additional link identifier to the second device, and receives, after sending the device identifier for the fourth device and the additional link identifier to the second device, a further additional link including the device identifier for the fourth device and a further additional link identifier (e.g., as described above in connection with
At block 3102, a first device (e.g., electronic device 110) may obtain a link that corresponds to a call with a second device (e.g., electronic device 115). For example, the link may be received from the second device (e.g., in a message, or an email) or from a social media post or a web page (as examples)
At block 3104, the first device may obtain code (e.g., JavaScript or other code) from a server (e.g., server 130) at a domain obtained from the link. For example, the first device may obtain the code by sending a code request (e.g., an HTTP request) to the server (e.g., server 130) and receiving the code responsive to the code request (e.g., as described above in connection with
At block 3106, the first device may execute the code to encrypt a request to join the call using a key obtained from the link. For example, the key may be included in the link, or an encoded version of the key may be included in the link. For example, the key may be a public key that corresponds to a private key generated by the second device and inaccessible by the server.
At block 3108, the first device may execute the code to send the encrypted request to the server for delivery to the second device (e.g., as described above in connection with
In one or more implementations, the request includes information used to identify a public key for the first device. For example, the public key or an encrypted or encoded version of the public key for the first device may be included in or sent along with the encrypted request.
In one or more implementations, the first device may receive an encrypted response to the request from the server (e.g., as described above in connection with
In one or more implementations, the first device may obtain, using the obtained code, a temporary identifier for the first device from the server (e.g., as described above in connection with
At block 3202, a first device (e.g., electronic device 115) connects to a conferencing session. For example, the conferencing session may correspond to a voice call or a video call. For example, connecting to the conferencing session may include connecting the first device to the conferencing session via a conferencing application at the first device. As another example, connecting to the conferencing session may include connecting the first device to the conferencing session via a web-based application.
At block 3204, in accordance with a determination that a second device (e.g., electronic device 110) is able to be expelled (e.g., is an expellable device) from the conferencing session, enabling the second device to be expelled from the conferencing session through transmission of a instruction to expel (e.g., through transmission of an expel request, as described above in connection with
For example, the first device and/or the server may determine that the second device is able to be expelled from the conferencing session for a pre-determined amount of time (e.g., based on an expelling factor corresponding to the pre-determined amount of time) following admission of the second device into the conferencing session. In one or more implementations, the second device is enabled to be expelled from the conferencing session while the first device exchanges at least audio streams with the second device during at least a portion of the conferencing session (e.g., prior to the end of the pre-determined amount of time). In some examples, after a pre-determined amount of time following the second device being admitted to the conferencing session, the first device and/or the server and/or another participant device determines that the second device is no longer able to be expelled.
In some examples, the first device may determine that the second device is able to be expelled from the conferencing session based on a first connection factor (e.g., a joining method factor) that corresponds to a first connection mechanism (e.g., a conferencing application at a device or a web-based application) by which the second device is connected to the conferencing session. For example, the first connection mechanism may be a conferencing application at the second device. In some examples, the first device is unable to remove the second device that is connected to the conferencing session by the conferencing application at the second device from the conferencing session. In some examples, the first device is an initiator of the conferencing session.
At block 3206, in accordance with a determination that a third device (e.g., electronic device 110 or another electronic device) is not able to be expelled (e.g., is a non-expellable device) from the conferencing session, the third device may be disabled from being expelled from the conferencing session. The third device may be different from the first device. For example, the first device and/or the server may determine that the third device is not able to be expelled from the conferencing session after a pre-determined amount of time following admission of the third device into the conferencing session. In one or more implementations, third device is the second device.
In some examples, the first device may determine that the third device is not able to be expelled from the conferencing session based on a second connection factor that corresponds to a second connection mechanism by which the third device is connected to the conferencing session. For example, the second connection mechanism may be a web-based application at the second device. In one or more implementations, the second device did not initiate the conferencing session. In one or more implementations, the third device did not initiate the conferencing session.
In one or more implementations, prior to the pre-determined amount of time following the admission of the second device into the conferencing session, while the second device is able to be expelled from the conferencing session through the transmission of the instruction to expel (e.g., an expel request), the first device may transmit the instruction to expel from the first device to a server (e.g., server 130). The first device may receive a confirmation at the first device from the server that the second device has been expelled from the conferencing session (e.g., as described above in connection with
In one or more implementations, after the pre-determined amount of time following the admission of the third device into the conferencing session, while the third device is disabled from being expelled from the conferencing session, the first device may transmit, to a server (e.g., server 130), an instruction to expel the third device. The first device may receive a response at the first device from the server indicating that the third device cannot be expelled from the conferencing session (e.g., as described above in connection with
In some examples, the first device starts a timer upon admission of the second device into the video conferencing session. In some examples, another participant device in the conferencing session also starts a timer upon admission of the second device into the video conferencing session, and identifies the second device as a non-expellable device after expiration of the timer of the third participant device.
In some examples, a server (e.g., server 130) that relays data between the first device and the second device during the conferencing session also starts a timer upon admission of the second device into the conferencing session, and identifies the second device as a non-expellable device after expiration of the timer of the server. In some examples, the timer of the first device is different from the timer of the server. In some examples, before the pre-determined amount of time (e.g., before expiration of a timer for the second device at a the first device), while the second device is identified by the first device as an expellable device (e.g., and identified by the server as a non-expellable device), the first device provides a request to a server to remove the second device from the conferencing session, and receives a response indicating that the second device cannot be removed from the conferencing session (e.g., as described above in connection with
As described herein, aspects of the subject technology may include the collection and transfer of data from an application to other users' computing devices. The present disclosure contemplates that in some instances, this collected data may include personal information data that uniquely identifies or can be used to identify a specific person. Such personal information data can include demographic data, location-based data, online identifiers, telephone numbers, email addresses, home addresses, images, data or records relating to a user's health or level of fitness (e.g., vital signs measurements, medication information, exercise information), date of birth, or any other personal information.
The present disclosure recognizes that the use of such personal information data, in the present technology, can be used to the benefit of users. For example, the personal information data can be used in providing conferencing sessions for electronic devices. Further, other uses for personal information data that benefit the user are also contemplated by the present disclosure. For instance, health and fitness data may be used, in accordance with the user's preferences to provide insights into their general wellness, or may be used as positive feedback to individuals using technology to pursue wellness goals.
The present disclosure contemplates that those entities responsible for the collection, analysis, disclosure, transfer, storage, or other use of such personal information data will comply with well-established privacy policies and/or privacy practices. In particular, such entities would be expected to implement and consistently apply privacy practices that are generally recognized as meeting or exceeding industry or governmental requirements for maintaining the privacy of users. Such information regarding the use of personal data should be prominently and easily accessible by users, and should be updated as the collection and/or use of data changes. Personal information from users should be collected for legitimate uses only. Further, such collection/sharing should occur only after receiving the consent of the users or other legitimate basis specified in applicable law. Additionally, such entities should consider taking any needed steps for safeguarding and securing access to such personal information data and ensuring that others with access to the personal information data adhere to their privacy policies and procedures. Further, such entities can subject themselves to evaluation by third parties to certify their adherence to widely accepted privacy policies and practices. In addition, policies and practices should be adapted for the particular types of personal information data being collected and/or accessed and adapted to applicable laws and standards, including jurisdiction-specific considerations which may serve to impose a higher standard. For instance, in the US, collection of or access to certain health data may be governed by federal and/or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA); whereas health data in other countries may be subject to other regulations and policies and should be handled accordingly.
Despite the foregoing, the present disclosure also contemplates implementations in which users selectively block the use of, or access to, personal information data. That is, the present disclosure contemplates that hardware and/or software elements can be provided to prevent or block access to such personal information data. For example, in the case of conferencing sessions for electronic devices, the present technology can be configured to allow users to select to “opt in” or “opt out” of participation in the collection of personal information data during registration for services or anytime thereafter. In addition to providing “opt in” and “opt out” options, the present disclosure contemplates providing notifications relating to the access or use of personal information. For instance, a user may be notified upon downloading an app that their personal information data will be accessed and then reminded again just before personal information data is accessed by the app.
Moreover, it is the intent of the present disclosure that personal information data should be managed and handled in a way to minimize risks of unintentional or unauthorized access or use. Risk can be minimized by limiting the collection of data and deleting data once it is no longer needed. In addition, and when applicable, including in certain health related applications, data de-identification can be used to protect a user's privacy. De-identification may be facilitated, when appropriate, by removing identifiers, controlling the amount or specificity of data stored (e.g., collecting location data at city level rather than at an address level), controlling how data is stored (e.g., aggregating data across users), and/or other methods such as differential privacy.
Therefore, although the present disclosure broadly covers use of personal information data to implement one or more various disclosed embodiments, the present disclosure also contemplates that the various embodiments can also be implemented without the need for accessing such personal information data. That is, the various embodiments of the present technology are not rendered inoperable due to the lack of all or a portion of such personal information data.
The bus 3308 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system 3300. In one or more implementations, the bus 3308 communicatively connects the one or more processing unit(s) 3312 with the ROM 3310, the system memory 3304, and the permanent storage device 3302. From these various memory units, the one or more processing unit(s) 3312 retrieves instructions to execute and data to process in order to execute the processes of the subject disclosure. The one or more processing unit(s) 3312 can be a single processor or a multi-core processor in different implementations.
The ROM 3310 stores static data and instructions that are needed by the one or more processing unit(s) 3312 and other modules of the electronic system 3300. The permanent storage device 3302, on the other hand, may be a read-and-write memory device. The permanent storage device 3302 may be a non-volatile memory unit that stores instructions and data even when the electronic system 3300 is off. In one or more implementations, a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) may be used as the permanent storage device 3302.
In one or more implementations, a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) may be used as the permanent storage device 3302. Like the permanent storage device 3302, the system memory 3304 may be a read-and-write memory device. However, unlike the permanent storage device 3302, the system memory 3304 may be a volatile read-and-write memory, such as random access memory. The system memory 3304 may store any of the instructions and data that one or more processing unit(s) 3312 may need at runtime. In one or more implementations, the processes of the subject disclosure are stored in the system memory 3304, the permanent storage device 3302, and/or the ROM 3310. From these various memory units, the one or more processing unit(s) 3312 retrieves instructions to execute and data to process in order to execute the processes of one or more implementations.
The bus 3308 also connects to the input and output device interfaces 3314 and 3306. The input device interface 3314 enables a user to communicate information and select commands to the electronic system 3300. Input devices that may be used with the input device interface 3314 may include, for example, alphanumeric keyboards and pointing devices (also called “cursor control devices”). The output device interface 3306 may enable, for example, the display of images generated by electronic system 3300. Output devices that may be used with the output device interface 3306 may include, for example, printers and display devices, such as a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, a flexible display, a flat panel display, a solid state display, a projector, or any other device for outputting information. One or more implementations may include devices that function as both input and output devices, such as a touchscreen. In these implementations, feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
Finally, as shown in
In accordance with various aspects of the subject disclosure, a device is provided that includes a memory and at least one processor communicatively coupled to the memory and configured to receive a plurality of components of a uniform resource locator (URL); verify whether the plurality of components include one or more expected components for the URL; in response to verifying that the plurality of components include one or more expected components for the URL, determine whether content of at least one of the one or more expected components for the URL is valid; in response to determining that the content of at least one of the one or more expected components for the URL is valid, encode the content of the at least one of the one or more expected components for the URL; and assemble the URL by combining the encoded content of the at least one of the one or more expected components for the URL with at least one additional component of the URL.
In accordance with various aspects of the subject disclosure, a non-transitory computer-readable medium is provided that includes instructions, which when executed by at least one computing device, cause the at least one computing device to perform operations that include receiving, at a first device, a plurality of components of a uniform resource locator (URL); verifying whether the plurality of components include one or more expected components for the URL; in response to verifying that the plurality of components include one or more expected components for the URL, determining whether content of at least one of the one or more expected components for the URL is valid; in response to determining that the content of at least one of the one or more expected components for the URL is valid, encoding the content of the at least one of the one or more expected components for the URL; and assembling the URL by combining the encoded content of the at least one of the one or more expected components for the URL with at least one additional component of the URL.
In accordance with various aspects of the subject disclosure, a method is provided that includes receiving, at a first device, a plurality of components of a uniform resource locator (URL); verifying whether the plurality of components include one or more expected components for the URL; in response to verifying that the plurality of components include one or more expected components for the URL, determining whether content of at least one of the one or more expected components for the URL is valid; in response to determining that the content of at least one of the one or more expected components for the URL is valid, encoding the content of the at least one of the one or more expected components for the URL; and assembling the URL by combining the encoded content of the at least one of the one or more expected components for the URL with at least one additional component of the URL.
In accordance with various aspects of the subject disclosure, a method is provided that includes receiving, at a first device, a request to join a call with a second device, the request including a plurality of components of a uniform resource locator (URL); assembling, by the first device, the URL using the plurality of components for the URL; and joining the call, by the first device, using the assembled URL.
In accordance with various aspects of the subject disclosure, a method is provided that includes, by a device including an input component and logged into an account associated with an account alias: obtaining, based on an input detected by the input component, a definition of a set of services; providing a request for a service-specific alias for the account, the request including one or more identifiers corresponding to the set of services, the service-specific alias separate from the account alias and configured to allow or deny communications to one or more devices associated with the account via the set of services; and, after providing the request, receiving the service-specific alias.
In accordance with various aspects of the subject disclosure, a method is provided that includes, by one or more servers: receiving a request from a device to contact an account via a service, the request including a service-specific alias for the account, and configured to allow contact with one or more devices associated with the account via a set of services; obtaining a stored set of services for the service-specific alias, the stored set of services defined by a device associated with the account; in response to determining that the service is included in the stored set of services, allowing contact with the one or more devices associated with the account; and in response to determining that the service is not included in the stored set of services, denying the request.
In accordance with various aspects of the subject disclosure, a method is provided that includes generating, by a first device that is associated with an account and a device identifier, a link to join a communication session; generating, by the first device, a link identifier for the link; providing, from the first device to a second device associated with the account, information associated with the link, the information including the device identifier and the link identifier; and providing, from the first device or the second device to a third device not logged into the account, the link to provide access for the third device to the communication session
In accordance with various aspects of the subject disclosure, a method is provided that includes, by a first device: obtaining a link that corresponds to a call with a second device; obtaining code from a server at a domain obtained from the link; and executing the code to: encrypt a request to join the call using a key obtained using the link; and send the encrypted request to the server for delivery to the second device.
In accordance with various aspects of the subject disclosure, a method is provided that includes, by a first device: connecting to a conferencing session; determining an expelling factor for a second device; and identifying the second device as an expellable device that can be expelled from the conferencing session or a non-expellable device that is non-expellable from the conferencing session based on the expelling factor.
In accordance with various aspects of the subject disclosure, a method is provided that includes, connecting, by a first device, to a conferencing session; in accordance with a determination that a second device is able to be expelled from the conferencing session, enabling the second device to be expelled from the conferencing session through transmission of a instruction to expel; and, in accordance with a determination that a third device is not able to be expelled from the conferencing session, disabling the third device from being expelled from the conferencing session, wherein the third device is different from the first device
Implementations within the scope of the present disclosure can be partially or entirely realized using a tangible computer-readable storage medium (or multiple tangible computer-readable storage media of one or more types) encoding one or more instructions. The tangible computer-readable storage medium also can be non-transitory in nature.
The computer-readable storage medium can be any storage medium that can be read, written, or otherwise accessed by a general purpose or special purpose computing device, including any processing electronics and/or processing circuitry capable of executing instructions. For example, without limitation, the computer-readable medium can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. The computer-readable medium also can include any non-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM, NVRAM, flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, racetrack memory, FJG, and Millipede memory.
Further, the computer-readable storage medium can include any non-semiconductor memory, such as optical disk storage, magnetic disk storage, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions. In one or more implementations, the tangible computer-readable storage medium can be directly coupled to a computing device, while in other implementations, the tangible computer-readable storage medium can be indirectly coupled to a computing device, e.g., via one or more wired connections, one or more wireless connections, or any combination thereof.
Instructions can be directly executable or can be used to develop executable instructions. For example, instructions can be realized as executable or non-executable machine code or as instructions in a high-level language that can be compiled to produce executable or non-executable machine code. Further, instructions also can be realized as or can include data. Computer-executable instructions also can be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As recognized by those of skill in the art, details including, but not limited to, the number, structure, sequence, and organization of instructions can vary significantly without varying the underlying logic, function, processing, and output.
While the above discussion primarily refers to microprocessor or multi-core processors that execute software, one or more implementations are performed by one or more integrated circuits, such as ASICs or FPGAs. In one or more implementations, such integrated circuits execute instructions that are stored on the circuit itself.
Those of skill in the art would appreciate that the various illustrative blocks, modules, elements, components, methods, and algorithms described herein may be implemented as electronic hardware, computer software, or combinations of both. To illustrate this interchangeability of hardware and software, various illustrative blocks, modules, elements, components, methods, and algorithms have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application. Various components and blocks may be arranged differently (e.g., arranged in a different order, or partitioned in a different way) all without departing from the scope of the subject technology.
It is understood that any specific order or hierarchy of blocks in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of blocks in the processes may be rearranged, or that all illustrated blocks be performed. Any of the blocks may be performed simultaneously. In one or more implementations, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
As used in this specification and any claims of this application, the terms “base station”, “receiver”, “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms “display” or “displaying” means displaying on an electronic device.
As used herein, the phrase “at least one of” preceding a series of items, with the term “and” or “or” to separate any of the items, modifies the list as a whole, rather than each member of the list (i.e., each item). The phrase “at least one of” does not require selection of at least one of each item listed; rather, the phrase allows a meaning that includes at least one of any one of the items, and/or at least one of any combination of the items, and/or at least one of each of the items. By way of example, the phrases “at least one of A, B, and C” or “at least one of A, B, or C” each refer to only A, only B, or only C; any combination of A, B, and C; and/or at least one of each of A, B, and C.
The predicate words “configured to”, “operable to”, and “programmed to” do not imply any particular tangible or intangible modification of a subject, but, rather, are intended to be used interchangeably. In one or more implementations, a processor configured to monitor and control an operation or a component may also mean the processor being programmed to monitor and control the operation or the processor being operable to monitor and control the operation. Likewise, a processor configured to execute code can be construed as a processor programmed to execute code or operable to execute code.
Phrases such as an aspect, the aspect, another aspect, some aspects, one or more aspects, an implementation, the implementation, another implementation, some implementations, one or more implementations, an embodiment, the embodiment, another embodiment, some implementations, one or more implementations, a configuration, the configuration, another configuration, some configurations, one or more configurations, the subject technology, the disclosure, the present disclosure, other variations thereof and alike are for convenience and do not imply that a disclosure relating to such phrase(s) is essential to the subject technology or that such disclosure applies to all configurations of the subject technology. A disclosure relating to such phrase(s) may apply to all configurations, or one or more configurations. A disclosure relating to such phrase(s) may provide one or more examples. A phrase such as an aspect or some aspects may refer to one or more aspects and vice versa, and this applies similarly to other foregoing phrases.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration”. Any embodiment described herein as “exemplary” or as an “example” is not necessarily to be construed as preferred or advantageous over other implementations. Furthermore, to the extent that the term “include”, “have”, or the like is used in the description or the claims, such term is intended to be inclusive in a manner similar to the phrase “comprise” as “comprise” is interpreted when employed as a transitional word in a claim.
All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. § 112(f), unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for”.
The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more”. Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (e.g., his) include the feminine and neuter gender (e.g., her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the subject disclosure.
Claims
1. A method, comprising:
- receiving, at a first device, a request to join a call with a second device, the request including a plurality of components of a uniform resource locator (URL);
- assembling, by the first device, the URL using the plurality of components for the URL; and
- joining the call, by the first device, using the assembled URL.
2. The method of claim 1, wherein assembling the URL comprises assembling the URL based on verifying, by the first device, that the plurality of components include one or more expected components for the URL, the method further comprising:
- receiving, at the first device, an additional request including an additional plurality of components of an additional uniform resource locator (URL); and
- not assembling the additional URL based on determining that the additional plurality of components do not include one or more expected components for the additional URL.
3. The method of claim 1, further comprising determining, by the first device, whether content of at least one of the plurality of components for the URL is valid.
4. The method of claim 1, further comprising, encoding, by the first device, at least one the components for the URL to produce at least one encoded component, wherein the at least one encoded component is included in the assembled URL.
5. The method of claim 1, further comprising, assembling, by the first device, the URL by:
- obtaining a domain for the URL; and
- including the domain in the assembled URL.
6. The method of claim 1, wherein the call is an audio call or a video call.
7. The method of claim 1, further comprising:
- attempting, by the first device, to connect to the call with a browser using the assembled URL; and
- joining, by the first device, the call using the assembled URL without providing a key included in the plurality of components to a server corresponding to the URL.
8. The method of claim 7, further comprising signing, by the first device using the key, a request-to-join message from the first device to the second device, wherein the second device is an initiating device of the call.
9. An electronic device, comprising:
- a memory; and
- one or more processors configured to: receive a request to join a call with an other electronic device, the request including a plurality of components of a uniform resource locator (URL); assemble the URL using the plurality of components for the URL; and join the call using the assembled URL.
10. The electronic device of claim 9, wherein the one or more processors are configured to assemble the URL based on verifying that the plurality of components include one or more expected components for the URL, and are further configured to:
- receive an additional request including an additional plurality of components of an additional uniform resource locator (URL); and
- not assemble the additional URL based on determining that the additional plurality of components do not include one or more expected components for the additional URL.
11. The electronic device of claim 9, wherein the one or more processors are further configured to determine whether content of at least one of the plurality of components for the URL is valid.
12. The electronic device of claim 9, wherein the one or more processors are further configured to encode at least one the components for the URL to produce at least one encoded component, wherein the at least one encoded component is included in the assembled URL.
13. The electronic device of claim 9, wherein the one or more processors are further configured to assemble the URL by:
- obtaining a domain for the URL; and
- including the domain in the assembled URL.
14. The electronic device of claim 9, wherein the call is an audio call or a video call.
15. The electronic device of claim 9, wherein the one or more processors are further configured to:
- attempt to connect to the call with a browser using the assembled URL; and
- join the call using the assembled URL without providing a key included in the plurality of components to a server corresponding to the URL.
16. The electronic device of claim 15, wherein the one or more processors are further configured to sign, using the key, a request-to-join message to the other electronic device, wherein the other electronic device is an initiating device of the call.
17. A non-transitory computer-readable medium storing instructions which, when executed by one or more processors, cause the one or more processors to perform operations, comprising:
- receiving, at a first device, a request to join a call with a second device, the request including a plurality of components of a uniform resource locator (URL);
- assembling, by the first device, the URL using the plurality of components for the URL; and
- joining the call, by the first device, using the assembled URL.
18. The non-transitory computer-readable medium of claim 17, wherein assembling the URL comprises assembling the URL based on verifying, by the first device, that the plurality of components include one or more expected components for the URL, the operations further comprising:
- receiving, at the first device, an additional request including an additional plurality of components of an additional uniform resource locator (URL); and
- not assembling the additional URL based on determining that the additional plurality of components do not include one or more expected components for the additional URL.
19. The non-transitory computer-readable medium of claim 17, the operations further comprising:
- determining, by the first device, whether content of at least one of the plurality of components for the URL is valid; and
- encoding, by the first device, the at least one the components for the URL to produce at least one encoded component, wherein the at least one encoded component is included in the assembled URL.
20. The non-transitory computer-readable medium of claim 17, wherein assembling, by the first device, the URL, comprises:
- obtaining a domain for the URL; and
- including the domain in the assembled URL.
Type: Application
Filed: Sep 24, 2021
Publication Date: Aug 4, 2022
Inventors: Nelson M. LEDUC (San Jose, CA), Justin R. ETZINE (Cupertino, CA), Daniel B. POLLACK (Cupertino, CA), Gurtej Singh G. CHANDOK (Sunnyvale, CA), Alexis A. ISKANDER (San Jose, CA)
Application Number: 17/485,277