Patent Description:
<CIT> describes a system and method for directing an incoming telephone call. The system comprises a control unit that receives images associated with two or more regions of a local environment. The two or more regions are each serviced by a respective telephone extension. The control unit processes the images to identify, from a group of known persons associated with the local environment, any one or more known persons located in the respective regions. For each known person so identified, an indicium is generated that associates the known person with the respective region in which the known person is located.

<CIT> describes methods and systems for intelligently joining a conference. The method includes matching a user with contact details comprising at least one of name, email address, phone number, user ID, and/or enterprise of the user. The method also includes verifying an identity of the user when a confidence score exceeds a predetermined threshold. The method also includes searching calendar data for a meeting involving the user based on the contact details of the user, the meeting scheduled proximate to a local time of the user. The method also includes joining the user to the meeting via an audio conferencing service based on the calendar data.

Disclosed herein are, inter alia, implementations of systems and methods for video-assisted presence detection in telephony communications.

One aspect of this disclosure is a system for video-assisted presence detection in telephony communications. The system includes a first device that is associated with a private network. The first device is configured to communicate via a UCaaS platform. The system includes a second device that is associated with the private network. The second device is configured to communicate with the UCaaS platform. The second device includes a camera. The second device is configured to perform a scan based on a privacy setting wherein the scan includes data obtained from the camera, wherein the privacy setting allows partial access to the camera on the second device to perform the scan without capturing facial information, and to detect a user presence. The user presence is detected based on data captured by the camera. The second device is configured to transmit a notification to the first device. The notification indicates detection of the user presence. The first device is configured to transfer a call to the second device based on the detection of the user presence. The call is transferred to the second device using session initiation protocol (SIP) signaling.

Another aspect of this disclosure is a method for video-assisted presence detection in telephony communications. The method includes performing a scan, based on a privacy setting, at a first device comprising a camera wherein the scan includes data obtained from the camera and wherein the privacy setting allows partial access to the camera to perform the scan without capturing facial information. The method further includes detecting a user presence. The user presence is detected based on data captured by the camera of the first device. The first device is associated with a private network. The first device is configured to communicate via a UCaaS platform. The method includes transmitting a notification to a second device. The second device is be associated with the private network. The second device is configured to communicate via the UCaaS platform. The notification includes an indication of the detected user presence. The method includes transferring a call to the first device based on the detection of the user presence. The call is transferred using SIP signaling.

Another aspect of this disclosure includes a non-transitory computer-readable medium configured to store instructions that when executed by a processor cause the processor to initiate a camera on a first device. The first device is associated with a private network. The first device is configured to communicate via a UCaaS platform. The processor is configured to perform a scan. The scan is based on a privacy setting. The scan includes data obtained from the camera, wherein the privacy setting allows partial access to the camera on the first device to perform the scan without capturing facial information. The processor is configured to determine whether a human presence is detected based on the data obtained from the camera. The processor is configured to transmit a notification to a second device. The second device is associated with the private network. The second device is configured to communicate via the UCaaS platform. The notification is transmitted based on the determination of whether the human presence is detected. If the human presence is detected, the processor is configured to transfer a call from the second device to the first device. The call is transferred using SIP signaling. If a human presence is not detected, the processor is configured to retain the call at the second device.

This disclosure is best understood from the following detailed description when read in conjunction with the accompanying drawings.

A software platform, such as a UCaaS platform, may include several communications services integrated over a network. The communications services may include telephony services. Telephony services, or otherwise referred to telephony communications, include a digital status referred to as presence, which typically is represented using a status indicator. The status indicator may be conveyed visually, aurally, and/or by other means. The status indicator may appear next to a user's name on a contacts list, for example, and indicates a status of the user, for example, one of on the phone, away/idle, do not disturb, roaming with a mobile device (e.g., away from the desk, but still reachable), and available, in which available typically indicates that the user is logged in.

The available indicator, however, is not very precise in that is does not accurately indicate whether the user is actually available to receive a communication or other message or notification. For example, the user may have just walked away to take a quick break to get coffee or visit the washroom. In one particular example, an operator, such as a receptionist or an auto attendant, may receive a call for a user and seek to transfer the call to him or her. In another example, the operator may receive a call at a call center for an agent at the call center. In these examples, the receptionist or operator may perform a cold transfer where they simply transfer the call without first checking to see if the user or agent is present and available to take the call. Alternatively, the receptionist or operator may perform a warm transfer, also known as a consultative transfer, where the caller is placed on hold and the receptionist separately calls the user or agent to determine if they are present, and ask whether they are available to take the call. The warm transfer process, therefore, is used to verify the presence of the user or agent before a call is transferred and thus does not resolve the imprecisions of the status indicator of the user or agent.

Implementations of this disclosure address problems such as these using video-assisted presence detection in telephony communications. Image data, video data, or both, may be used to enhance the determination of whether a user is present before a call is transferred to him or her. The video-assisted presence detection may be implemented using varying degrees of privacy settings. For example, one implementation option may provide a user to opt in for the system to have partial access to the camera of the client device to perform a scan to detect that there is a human being present without capturing facial information, and without identifying who that person specifically is. Another implementation option may provide a user to opt in for the system to have partial access to the client device to scan the user's face, but not have access to the video feed of the camera. Another implementation option may provide a user to opt in for the system to have full access to the camera of the client device.

In any of these implementation options, the system may be configured to also identify a number of people through a camera of the client device. In this way, for example, the system may indicate some privacy information to the receptionist to indicate that the person is or may be in a conference. Other examples may include where a non-receptionist co-worker transfers a call, sends an invitation for the user to join a conference, and the like. The privacy information may be indicated either directly by sharing the video feed, by sharing indications of specific persons identified, or by sharing a number of people without specifying identity information.

In addition, any of these implementation options may include a check step before access to the camera of the client device is granted, for example using a mobile device of the user that may be running a client application. In an example, a user may have both the mobile device running the client application and a separate desktop device, such as a phone or computing device, which runs the client application. The proximity of the mobile device to the desktop device may be measured, for example, by the client application running on the mobile device communicating with the client application running on the desktop device, to determine whether the user is close enough to their desktop device. Accordingly, in such a case, the camera may be used to check presence in any of the implementation options above after first detecting the proximity of the mobile device to the desktop device. In some cases, the distance value measured from the proximity detection may be compared to a threshold, for example, to identify whether the user is within a set distance range. In other cases, the system may detect whether the mobile device is within a geofence defined based on a location of the desktop device.

To describe some implementations in greater detail, reference is first made to examples of hardware and software structures used to implement video-assisted presence detection in telephony communications. <FIG> is a block diagram of an example of an electronic computing and communications system <NUM>, which can be or include a distributed computing system (e.g., a client-server computing system), a cloud computing system, a clustered computing system, or the like.

The system <NUM> includes one or more customers, such as customers 102A through 102B, which may each be a public entity, private entity, or another corporate entity or individual that purchases or otherwise uses software services, such as of a UCaaS platform provider. Each customer can include one or more clients. For example, as shown and without limitation, the customer 102A can include clients 104A through 104B, and the customer 102B can include clients 104C through 104D. A customer can include a customer network or domain. For example, and without limitation, the clients 104A through 104B can be associated or communicate with a customer network or domain for the customer 102A and the clients 104C through 104D can be associated or communicate with a customer network or domain for the customer 102B.

A client, such as one of the clients 104A through 104D, may be or otherwise refer to one or both of a client device or a client application. Where a client is or refers to a client device, the client can comprise a computing system, which can include one or more computing devices, such as a mobile phone, a tablet computer, a laptop computer, a notebook computer, a desktop computer, or another suitable computing device or combination of computing devices. Where a client instead is or refers to a client application, the client can be an instance of software running on a customer device (e.g., a client device or another device). In some implementations, a client can be implemented as a single physical unit or as a combination of physical units. In some implementations, a single physical unit can include multiple clients.

The system <NUM> can include a number of customers and/or clients or can have a configuration of customers or clients different from that generally illustrated in <FIG>. For example, and without limitation, the system <NUM> can include hundreds or thousands of customers, and at least some of the customers can include or be associated with a number of clients.

The system <NUM> includes a datacenter <NUM>, which may include one or more servers. The datacenter <NUM> can represent a geographic location, which can include a facility, where the one or more servers are located. The system <NUM> can include a number of datacenters and servers or can include a configuration of datacenters and servers different from that generally illustrated in <FIG>. For example, and without limitation, the system <NUM> can include tens of datacenters, and at least some of the datacenters can include hundreds or another suitable number of servers. In some implementations, the datacenter <NUM> can be associated or communicate with one or more datacenter networks or domains, which can include domains other than the customer domains for the customers 102A through 102B.

The datacenter <NUM> includes servers used for implementing software services of a UCaaS platform. The datacenter <NUM> as generally illustrated includes an application server <NUM>, a database server <NUM>, and telephony server <NUM>. The servers <NUM> through <NUM> can each be a computing system, which can include one or more computing devices, such as a desktop computer, a server computer, or another computer capable of operating as a server, or a combination thereof. A suitable number of each of the servers <NUM> through <NUM> can be implemented at the datacenter <NUM>. The UCaaS platform uses a multi-tenant architecture in which installations or instantiations of the servers <NUM> through <NUM> is shared amongst the customers 102A through 102B.

In some implementations, one or more of the servers <NUM> through <NUM> can be a non-hardware server implemented on a physical device, such as a hardware server. In some implementations, a combination of two or more of the application server <NUM>, the database server <NUM>, and the telephony server <NUM> can be implemented as a single hardware server or as a single non-hardware server implemented on a single hardware server. In some implementations, the datacenter <NUM> can include servers other than or in addition to the servers <NUM> through <NUM>, for example, a media server, a proxy server, or a web server.

The application server <NUM> runs web-based software services deliverable to a client, such as one of the clients 104A through 104D. As described above, the software services may be of a UCaaS platform. For example, the application server <NUM> can implement all or a portion of a UCaaS platform, for example, including conferencing software, messaging software, and/or other intra-party or inter-party communications software. The application server <NUM> may, for example, be or include a unitary Java Virtual Machine (JVM).

In some implementations, the application server <NUM> can include an application node, which can be a process executed on the application server <NUM>. For example, and without limitation, the application node can be executed in order to deliver software services to a client, such as one of the clients 104A through 104D, as part of a software application. The application node can be implemented using processing threads, virtual machine instantiations, or other computing features of the application server <NUM>. In some such implementations, the application server <NUM> can include a suitable number of application nodes, depending upon a system load or other characteristics associated with the application server <NUM>. For example, and without limitation, the application server <NUM> can include two or more nodes forming a node cluster. In some such implementations, the application nodes implemented on a single application server <NUM> can run on different hardware servers.

The database server <NUM> stores, manages, or otherwise provides data for delivering software services of the application server <NUM> to a client, such as one of the clients 104A through 104D. In particular, the database server <NUM> may implement one or more databases, tables, or other information sources suitable for use with a software application implemented using the application server <NUM>. The database server <NUM> may include a data storage unit accessible by software executed on the application server <NUM>. A database implemented by the database server <NUM> may be a relational database management system (RDBMS), an object database, an XML database, a configuration management database (CMDB), a management information base (MIB), one or more flat files, other suitable non-transient storage mechanisms, or a combination thereof. The system <NUM> can include one or more database servers, in which each database server can include one, two, three, or another suitable number of databases configured as or comprising a suitable database type or combination thereof.

In some implementations, one or more databases, tables, other suitable information sources, or portions or combinations thereof may be stored, managed, or otherwise provided by one or more of the elements of the system <NUM> other than the database server <NUM>, for example, the client <NUM> or the application server <NUM>.

The telephony server <NUM> enables network-based telephony and web communications from and to clients of a customer, such as the clients 104A through 104B for the customer 102A or the clients 104C through 104D for the customer 102B. Some or all of the clients 104A through 104D may be voice over internet protocol (VOIP)-enabled devices configured to send and receive calls over a network, for example, a network <NUM>. In particular, the telephony server <NUM> includes a SIP zone and a web zone. The SIP zone enables a client of a customer, such as the customer 102A or 102B, to send and receive calls over the network <NUM> using SIP requests and responses. The web zone integrates telephony data with the application server <NUM> to enable telephony-based traffic access to software services run by the application server <NUM>. Given the combined functionality of the SIP zone and the web zone, the telephony server <NUM> may be or include a cloud-based private branch exchange (PBX) system.

The SIP zone receives telephony traffic from a client of a customer and directs same to a destination device. The SIP zone may include one or more call switches for routing the telephony traffic. For example, to route a VOIP call from a first VOIP-enabled client of a customer to a second VOIP-enabled client of the same customer, the telephony server <NUM> may initiate a SIP transaction between a first client and the second client using a PBX for the customer. However, in another example, to route a VOIP call from a VOIP-enabled client of a customer to a client or non-client device (e.g., a desktop phones which is not configured for VOIP communication) which is not VOIP-enabled, the telephony server <NUM> may initiate a SIP transaction via a VOIP gateway that transmits the SIP signal to a public switched telephone network (PSTN) system for outbound communication to the non-VOIP-enabled client or non-client phone. Hence, the telephony server <NUM> may include a PSTN system and may in some cases access an external PSTN system.

The telephony server <NUM> includes one or more session border controllers (SBCs) for interfacing the SIP zone with one or more aspects external to the telephony server <NUM>. In particular, an SBC can act as an intermediary to transmit and receive SIP requests and responses between clients or non-client devices of a given customer with clients or non-client devices external to that customer. When incoming telephony traffic for delivery to a client of a customer, such as one of the clients 104A through 104D, originating from outside the telephony server <NUM> is received, a SBC receives the traffic and forwards it to a call switch for routing to the client.

In some implementations, the telephony server <NUM>, via the SIP zone, may enable one or more forms of peering to a carrier or customer premise. For example, Internet peering to a customer premise may be enabled to ease the migration of the customer from a legacy provider to a service provider operating the telephony server <NUM>. In another example, private peering to a customer premise may be enabled to leverage a private connection terminating at one end at the telephony server <NUM> and at the other at a computing aspect of the customer environment. In yet another example, carrier peering may be enabled to leverage a connection of a peered carrier to the telephony server <NUM>.

In some such implementations, a SBC or telephony gateway within the customer environment may operate as an intermediary between the SBC of the telephony server <NUM> and a PSTN for a peered carrier. When an external SBC is first registered with the telephony server <NUM>, a call from a client can be routed through the SBC to a load balancer of the SIP zone, which directs the traffic to a call switch of the telephony server <NUM>. Thereafter, the SBC may be configured to communicate directly with the call switch.

The web zone receives telephony traffic from a client of a customer, via the SIP zone, and directs same to the application server <NUM> via one or more Domain Name System (DNS) resolutions. For example, a first DNS within the web zone may process a request received via the SIP zone and then deliver the processed request to a web service which connects to a second DNS at or otherwise associated with the application server <NUM>. Once the second DNS resolves the request, it is delivered to the destination service at the application server <NUM>. The web zone may also include a database for authenticating access to a software application for telephony traffic processed within the SIP zone, for example, a softphone.

The clients 104A through 104D communicate with the servers <NUM> through <NUM> of the datacenter <NUM> via the network <NUM>. The network <NUM> can be or include, for example, the Internet, a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), or another public or private means of electronic computer communication capable of transferring data between a client and one or more servers. In some implementations, a client can connect to the network <NUM> via a communal connection point, link, or path, or using a distinct connection point, link, or path. For example, a connection point, link, or path can be wired, wireless, use other communications technologies, or a combination thereof.

The network <NUM>, the datacenter <NUM>, or another element, or combination of elements, of the system <NUM> can include network hardware such as routers, switches, other network devices, or combinations thereof. For example, the datacenter <NUM> can include a load balancer <NUM> for routing traffic from the network <NUM> to various servers associated with the datacenter <NUM>. The load balancer <NUM> can route, or direct, computing communications traffic, such as signals or messages, to respective elements of the datacenter <NUM>.

For example, the load balancer <NUM> can operate as a proxy, or reverse proxy, for a service, such as a service provided to one or more remote clients, such as one or more of the clients 104A through 104D, by the application server <NUM>, the telephony server <NUM>, and/or another server. Routing functions of the load balancer <NUM> can be configured directly or via a DNS. The load balancer <NUM> can coordinate requests from remote clients and can simplify client access by masking the internal configuration of the datacenter <NUM> from the remote clients.

In some implementations, the load balancer <NUM> can operate as a firewall, allowing or preventing communications based on configuration settings. Although the load balancer <NUM> is depicted in <FIG> as being within the datacenter <NUM>, in some implementations, the load balancer <NUM> can instead be located outside of the datacenter <NUM>, for example, when providing global routing for multiple datacenters. In some implementations, load balancers can be included both within and outside of the datacenter <NUM>. In some implementations, the load balancer <NUM> can be omitted.

<FIG> is a block diagram of an example internal configuration of a computing device <NUM> of an electronic computing and communications system, for example, a computing device which implements one or more of the client <NUM>, the application server <NUM>, the database server <NUM>, or the telephony server <NUM> of the system <NUM> shown in <FIG>.

The computing device <NUM> includes components or units, such as a processor <NUM>, a memory <NUM>, a bus <NUM>, a power source <NUM>, peripherals <NUM>, a user interface <NUM>, a network interface <NUM>, other suitable components, or a combination thereof. One or more of the memory <NUM>, the power source <NUM>, the peripherals <NUM>, the user interface <NUM>, or the network interface <NUM> can communicate with the processor <NUM> via the bus <NUM>.

The processor <NUM> is a central processing unit, such as a microprocessor, and can include single or multiple processors having single or multiple processing cores. Alternatively, the processor <NUM> can include another type of device, or multiple devices, now existing or hereafter developed, configured for manipulating or processing information. For example, the processor <NUM> can include multiple processors interconnected in one or more manners, including hardwired or networked, including wirelessly networked. For example, the operations of the processor <NUM> can be distributed across multiple devices or units that can be coupled directly or across a local area or other suitable type of network. The processor <NUM> can include a cache, or cache memory, for local storage of operating data or instructions.

The memory <NUM> includes one or more memory components, which may each be volatile memory or non-volatile memory. For example, the volatile memory of the memory <NUM> can be random access memory (RAM) (e.g., a DRAM module, such as DDR SDRAM) or another form of volatile memory. In another example, the non-volatile memory of the memory <NUM> can be a disk drive, a solid state drive, flash memory, phase-change memory, or another form of non-volatile memory configured for persistent electronic information storage. The memory <NUM> may also include other types of devices, now existing or hereafter developed, configured for storing data or instructions for processing by the processor <NUM>. In some implementations, the memory <NUM> can be distributed across multiple devices. For example, the memory <NUM> can include network-based memory or memory in multiple clients or servers performing the operations of those multiple devices.

The memory <NUM> can include data for immediate access by the processor <NUM>. For example, the memory <NUM> can include executable instructions <NUM>, application data <NUM>, and an operating system <NUM>. The executable instructions <NUM> can include one or more application programs, which can be loaded or copied, in whole or in part, from non-volatile memory to volatile memory to be executed by the processor <NUM>. For example, the executable instructions <NUM> can include instructions for performing some or all of the techniques of this disclosure. The application data <NUM> can include user data, database data (e.g., database catalogs or dictionaries), or the like. In some implementations, the application data <NUM> can include functional programs, such as a web browser, a web server, a database server, another program, or a combination thereof. The operating system <NUM> can be, for example, Microsoft Windows®, Mac OS X®, or Linux®; an operating system for a mobile device, such as a smartphone or tablet device; or an operating system for a non-mobile device, such as a mainframe computer.

The power source <NUM> includes a source for providing power to the computing device <NUM>. For example, the power source <NUM> can be an interface to an external power distribution system. In another example, the power source <NUM> can be a battery, such as where the computing device <NUM> is a mobile device or is otherwise configured to operate independently of an external power distribution system. In some implementations, the computing device <NUM> may include or otherwise use multiple power sources. In some such implementations, the power source <NUM> can be a backup battery.

The peripherals <NUM> includes one or more sensors, detectors, or other devices configured for monitoring the computing device <NUM> or the environment around the computing device <NUM>. For example, the peripherals <NUM> can include a geolocation component, such as a global positioning system location unit. In another example, the peripherals can include a temperature sensor for measuring temperatures of components of the computing device <NUM>, such as the processor <NUM>. In some implementations, the computing device <NUM> can omit the peripherals <NUM>.

The user interface <NUM> includes one or more input interfaces and/or output interfaces. An input interface may, for example, be a positional input device, such as a mouse, touchpad, touchscreen, or the like; a keyboard; or another suitable human or machine interface device. An output interface may, for example, be a display, such as a liquid crystal display, a cathode-ray tube, a light emitting diode display, or other suitable display.

The network interface <NUM> provides a connection or link to a network (e.g., the network <NUM> shown in <FIG>). The network interface <NUM> can be a wired network interface or a wireless network interface. The computing device <NUM> can communicate with other devices via the network interface <NUM> using one or more network protocols, such as using Ethernet, transmission control protocol (TCP), internet protocol (IP), power line communication, an IEEE <NUM>. X protocol (e.g., Wi-Fi, Bluetooth, ZigBee, etc.), infrared, visible light, general packet radio service (GPRS), global system for mobile communications (GSM), code-division multiple access (CDMA), Z-Wave, another protocol, or a combination thereof.

<FIG> is a block diagram of an example of a software platform <NUM> implemented by an electronic computing and communications system, for example, the system <NUM> shown in <FIG>. The software platform <NUM> is a UCaaS platform accessible by clients of a customer of a UCaaS platform provider, for example, the clients 104A through 104B of the customer 102A or the clients 104C through 104D of the customer 102B shown in <FIG>. For example, the software platform <NUM> may be a multi-tenant platform instantiated using one or more servers at one or more datacenters including, for example, the application server <NUM>, the database server <NUM>, and the telephony server <NUM> of the datacenter <NUM> shown in <FIG>.

The software platform <NUM> includes software services accessible using one or more clients. For example, a customer <NUM>, which may, for example, be the customer 102A, the customer 102B, or another customer, as shown includes four clients - a desk phone <NUM>, a computer <NUM>, a mobile device <NUM>, and a shared device <NUM>. The desk phone <NUM> is a desktop unit configured to at least send and receive calls and includes an input device for receiving a telephone number or extension to dial to and an output device for outputting audio and/or video for a call in progress. The computer <NUM> is a desktop, laptop, or tablet computer including an input device for receiving some form of user input and an output device for outputting information in an audio and/or visual format. The mobile device <NUM> is a smartphone, wearable device, or other mobile computing aspect including an input device for receiving some form of user input and an output device for outputting information in an audio and/or visual format. The desk phone <NUM>, the computer <NUM>, and the mobile device <NUM> may generally be considered personal devices configured for use by a single user. The shared device <NUM> is a desk phone, a computer, a mobile device, or a different device which may instead be configured for use by multiple specified or unspecified users.

Each of the clients <NUM> through <NUM> includes or runs on a computing device configured to access at least a portion of the software platform <NUM>. In some implementations, the customer <NUM> may include additional clients not shown. For example, the customer <NUM> may include multiple clients of one or more client types (e.g., multiple desk phones, multiple computers, etc.) and/or one or more clients of a client type not shown in <FIG> (e.g., wearable devices, televisions other than as shared devices, or the like). For example, the customer <NUM> may have tens or hundreds of desk phones, computers, mobile devices, and/or shared devices.

The software services of the software platform <NUM> generally relate to communications tools, but are in no way limited in scope. As shown, the software services of the software platform <NUM> include telephony software <NUM>, conferencing software <NUM>, messaging software <NUM>, and other software <NUM>. Some or all of the software <NUM> through <NUM> uses customer configurations <NUM> specific to the customer <NUM>. The customer configurations <NUM> may, for example, be data stored within a database or other data store at a database server, such as the database server <NUM> shown in <FIG>.

The telephony software <NUM> enables telephony traffic between ones of the clients <NUM> through <NUM> and other telephony-enabled devices, which may be other ones of the clients <NUM> through <NUM>, other VOIP-enabled clients of the customer <NUM>, non-VOIP-enabled devices of the customer <NUM>, VOIP-enabled clients of another customer, non-VOIP-enabled devices of another customer, or other VOIP-enabled clients or non-VOIP-enabled devices. Calls sent or received using the telephony software <NUM> may, for example, be sent or received using the desk phone <NUM>, a softphone running on the computer <NUM>, a mobile application running on the mobile device <NUM>, or using the shared device <NUM> where same includes telephony features.

The telephony software <NUM> further enables phones which do not include a client application to connect to other software services of the software platform <NUM>. For example, the telephony software <NUM> may receive and process calls from phones not associated with the customer <NUM> to route that telephony traffic to one or more of the conferencing software <NUM>, the messaging software <NUM>, or the other software <NUM>.

The conferencing software <NUM> enables audio, video, and/or other forms of conferences between multiple participants, such as to facilitate a conference between those participants. In some cases, the participants may all be physically present within a single location, for example, a conference room, in which the conferencing software <NUM> may facilitate a conference between only those participants and using one or more clients within the conference room. In some cases, one or more participants may be physically present within a single location and one or more other participants may be remote, in which the conferencing software <NUM> may facilitate a conference between all of those participants using one or more clients within the conference room and one or more remote clients. In some cases, the participants may all be remote, in which the conferencing software <NUM> may facilitate a conference between the participants using different clients for the participants. The conferencing software <NUM> can include functionality for hosting, presenting scheduling, joining, or otherwise participating in a conference. The conferencing software <NUM> may further include functionality for recording some or all of a conference and/or documenting a transcript for the conference.

The messaging software <NUM> enables instant messaging, unified messaging, and other types of messaging communications between multiple devices, such as to facilitate a chat or like virtual conversation between users of those devices. The unified messaging functionality of the messaging software <NUM> may, for example, refer to email messaging which includes voicemail transcription service delivered in email format.

The other software <NUM> enables other functionality of the software platform <NUM>. Examples of the other software <NUM> include, but are not limited to, device management software, resource provisioning and deployment software, administrative software, third party integration software, and the like. In one particular example, the other software <NUM> can include functionality for video-assisted presence detection in telephony communications.

The software <NUM> through <NUM> may be implemented using one or more servers, for example, of a datacenter such as the datacenter <NUM> shown in <FIG>. For example, one or more of the software <NUM> through <NUM> may be implemented using an application server, a database server, and/or a telephony server, such as the servers <NUM> through <NUM> shown in <FIG>. In another example, one or more of the software <NUM> through <NUM> may be implemented using servers not shown in <FIG>, for example, a meeting server, a web server, or another server. In yet another example, one or more of the software <NUM> through <NUM> may be implemented using one or more of the servers <NUM> through <NUM> and one or more other servers. The software <NUM> through <NUM> may be implemented by different servers or by the same server.

Features of the software services of the software platform <NUM> may be integrated with one another to provide a unified experience for users. For example, the messaging software <NUM> may include a user interface element configured to initiate a call with another user of the customer <NUM>. In another example, the telephony software <NUM> may include functionality for elevating a telephone call to a conference. In yet another example, the conferencing software <NUM> may include functionality for sending and receiving instant messages between participants and/or other users of the customer <NUM>. In yet another example, the conferencing software <NUM> may include functionality for file sharing between participants and/or other users of the customer <NUM>. In some implementations, some or all of the software <NUM> through <NUM> may be combined into a single software application run on clients of the customer, such as one or more of the clients <NUM>-<NUM>.

<FIG> is a flow diagram of an example of a system <NUM> for transferring calls using video-assisted presence detection. The system <NUM> includes a first device <NUM> and a second device <NUM>. The first device <NUM> and second device <NUM> are referred to herein as devices for simplicity and clarity, and may include clients, such as client 104A and client 104B, respectively, shown in <FIG>. The first device <NUM> and the second device <NUM> may be associated with a private network or domain associated with a customer, and configured to communicate via a UCaaS platform, such as software platform <NUM> shown in <FIG>. For example, the devices may be implemented in an office setting where the first device <NUM> is for an operator, such as a receptionist or auto attendant, and the second device <NUM> is a user device configured to receive transferred calls from the first device <NUM>. In another example, the devices may be implemented in a call center setting where the first device <NUM> is an operator or auto attendant, and the second device <NUM> is an agent device configured to receive transferred calls from the first device.

As shown in <FIG>, the first device <NUM> is configured to receive <NUM> a call. The call may be intended for the user of the second device <NUM>. In response to receiving the call, the first device <NUM> is configured to transmit a notification <NUM> to the second device <NUM>. The notification <NUM> may include an indication of the call, metadata associated with the call, a request for user a user status or status indicator, or any combination thereof.

The second device <NUM> is configured to detect <NUM> a user presence. The second device <NUM> may be configured to detect the user presence in response to receiving the notification <NUM>. The user presence may be detected based on data captured by a camera of the second device <NUM>. The data captured by the camera of the second device <NUM> may include image data, video data, or both. The second device <NUM> may detect <NUM> the user presence in accordance with a privacy setting selected by the user. In some implementations, the privacy setting may be selected by another client device operator associated with the same UCaaS platform customer, or by another operator or entity. For example, the privacy setting may be established based on company policy rather than based on individual user preference. In one example, the user may select a privacy setting that allows the system to have partial access to the camera of the second device <NUM> to perform a scan to detect that there is a human being present without capturing facial information, and without identifying who that person specifically is. In this example, the second device <NUM> or another device, such as the application server <NUM> shown in <FIG>, may use an artificial intelligence (AI) tool to detect a head zone, a body zone, or both. The head zone may be an area of an image that is associated with the data that includes at least a portion of the head or face of the user. The body zone may be an area of the image that is associated with the data that includes at least a portion of the body of the user. Identification of a head zone and a body zone may indicate that a human is present at the second device <NUM>. This example carries a false positive potential where the human detected at the desk is not the person for whom the incoming call is being transferred. In some cases where an AI tool has been trained to recognize voices using voice print matching, the AI tool can be used to indicate when someone who is not the person for whom the call is transferred answers the call.

In another example, the user may select a privacy setting that allows the system to have partial access to the camera of the second device <NUM> to scan the user's face, but not have permission to transmit the video feed of the camera. In this example, the second device <NUM> or another device, may be configured to recognize the user's face, but does not actually display any image or video data from the camera on the first device <NUM>, and the system simply verifies whether the user is there or not. In this example, the specific user may be identified, such as by using an AI tool trained for face detection.

In another example, the user may select a privacy setting that allows the system to have full access to the camera of the second device <NUM>. In this example, the system is configured to determine that the specific person is at their desk in front of the second device <NUM> and thus can distinguish between the specific person and other people, such as by using an AI tool trained for face detection. In this case, the system may or may not display the image or video data from the camera on the first device <NUM>, for example, upon request from the receptionist or non-receptionist co-worker such as where the receptionist or non-receptionist co-worker receives a call to be transferred to the user.

In response to detecting the user presence, the second device <NUM> is configured to transmit a notification <NUM> to the first device. In some cases, the notification <NUM> may be transmitted when the identity of the user is confirmed. The second device <NUM> may be configured to confirm the identity of the user by performing voice print matching, fingerprint scanning, or some other technique that does not require the use of image or video data. The notification <NUM> may include an indication that the user is present, a number of people present, a noise level, or any combination thereof. In an example where the number of people present exceeds a threshold, the indication may indicate that the user is present and unavailable, for example if the user is in a crowded room. In an example where a noise level exceeds a threshold, the indication may indicate that the user is present and unavailable, for example if the user is on a noisy subway. The indication may be based on the selected privacy setting. Based on the selected privacy setting, for example, the indication may include an identity of the user, an image of the user, a video feed of the user, or it may be an indication that the user is present without any identifying information. In some examples, the notification may include an indication of the number of people present, a noise level, or both.

The first device <NUM> is configured to receive the notification <NUM> and display <NUM> the indication of the user presence on a display of the first device <NUM>. In some cases, the indication may be a light or color indication on a hard or soft key of the first device <NUM>. For example, a hard key on the first device <NUM> may be assigned to the user, and the hard key may be illuminated using a color indication, such as green, when the user is detected as present. The first device <NUM> may transfer <NUM> the call to the second device <NUM> based on the detection that the user is present at the second device <NUM>. The call transfer may be initiated by an input received at the first device <NUM>. The input may be a press of a button such as the hard key or soft key on the first device <NUM>. In the case of an auto attendant, the call may be transferred automatically based on the detection that the user is present at the second device <NUM> without receiving any input. The call may be transferred using SIP signaling.

To further describe some implementations in greater detail, reference is next made to examples of methods which may be performed by or using a system for voice-assisted presence detection in telephony communications. <FIG> are flowcharts of examples of methods for performing voice-assisted presence detection in telephony communications. The methods can be executed using computing devices, such as the systems, hardware, and software described with respect to <FIG>. The methods can be performed, for example, by executing a machine-readable program or other computer-executable instructions, such as routines, instructions, programs, or other code. The steps, or operations, of the methods or other techniques, methods, processes, or algorithms described in connection with the implementations disclosed herein can be implemented directly in hardware, firmware, software executed by hardware, circuitry, or a combination thereof.

For simplicity of explanation, the methods depicted and described herein as a series of steps or operations. However, the steps or operations in accordance with this disclosure can occur in various orders and/or concurrently. Additionally, other steps or operations not presented and described herein may be used. Furthermore, not all illustrated steps or operations may be required to implement a technique in accordance with the disclosed subject matter.

<FIG> is a flowchart of an example of a method <NUM> for video-assisted presence detection in telephony communications. The method <NUM> includes initiating <NUM> a camera on a client device, such as the second device <NUM> shown in <FIG>. In an example, the camera may be powered on and in standby mode when the client device is logged into the software platform. When the camera is in standby mode, the camera may be powered on and the image sensor may be activated, though not recording images or video. In an example, initiating <NUM> the camera on the client device may include the image sensor detecting motion or a change in a lighting condition in a field of view of the camera to switch from standby mode to an active mode to perform <NUM> a scan to detect a user presence. In another example, initiating <NUM> the camera may include detecting a noise at the client device, for example using a microphone of the client device or a microphone of the camera. In another example, initiating <NUM> the camera may include detecting the proximity of a mobile device to the client device to switch from standby mode to an active mode to perform <NUM> a scan to detect a user presence. In another example, the camera may periodically perform <NUM> a scan to detect a user presence. The periodicity of performing <NUM> the scan in this example may be configurable by the user or system administrator, and may be configured to occur every few seconds or longer intervals. In yet another example, the camera may continuously perform <NUM> a scan to detect a user presence.

Performing <NUM> the scan may include obtaining data from the camera, such as image data, video data, or both. The scan may be performed <NUM> based on a selected privacy setting. For example, the user may select a privacy setting that allows the system to have partial access to the camera of the client device to perform <NUM> the scan to detect that there is a human being present at the client device without capturing facial information, and without identifying who that person specifically is. In this example, the client device may use an AI tool to detect a head zone, a body zone, or both. Detection of a head zone and/or a body zone may indicate that a human is present at the client device.

The method includes determining <NUM> whether a human presence is detected based on the scan. For example, if a head zone and/or body zone are detected, the system determines <NUM> that a human being is present at the client device. If it is determined <NUM> that a human presence is detected, the method <NUM> includes transmitting <NUM> a notification. In some cases, the presence status may be updated to available. The notification may include an indication of the presence status, and the notification may be based on the selected privacy setting. For example, the indication of the updated presence status may indicate that the user is present at the client device without identifying who that person is. The method <NUM> includes transferring <NUM> a call from one device to another device, such as, for example, from a second device to the client device in response to the notification.

If it is determined <NUM> that a human presence is not detected, the method <NUM> includes transmitting <NUM> a notification. In some cases, the presence status may be updated to unavailable. The notification may include an indication of the presence status. The method <NUM> includes retaining <NUM> a call at the second device or forwarding the call to a mailbox, such as a voice mailbox of the user.

<FIG> is a flowchart of an example of another method <NUM> for video-assisted presence detection in telephony communications. The method <NUM> includes initiating <NUM> a camera on a client device, such as the second device <NUM> shown in <FIG>. In an example, the camera may be powered on and in standby mode when the client device is logged into the software platform. When the camera is in standby mode, the camera may be powered on and the image sensor may be activated, though not recording images or video. In an example, initiating <NUM> the camera on the client device may include the image sensor detecting motion in a field of view of the camera to switch from standby mode to an active mode to perform <NUM> a scan to detect a user presence. In another example, initiating <NUM> the camera may include detecting the proximity of a mobile device to the client device to switch from standby mode to an active mode to perform <NUM> a scan to detect a user presence. In another example, the camera may periodically perform <NUM> a scan to detect a user presence. The periodicity of performing <NUM> the scan in this example may be configurable by the user or system administrator, and may be configured to occur every few seconds or longer intervals. In yet another example, the camera may continuously perform <NUM> a scan to detect a user presence.

Performing <NUM> the scan may include obtaining data from the camera, such as image data, video data, or both. The scan may be performed <NUM> based on a selected privacy setting. For example, the user may select a privacy setting that allows the system to have partial access to the camera of the client device to perform <NUM> the scan to detect that there is a human being present at the client device by capturing facial information, and without permission to transmit the video feed of the camera. In this example, the client device may be configured to recognize the user's face, but does not actually display any image or video data from the camera on another device, such as the first device <NUM> shown in <FIG>, and the system simply verifies whether the user is there or not. In this example, the specific user may be identified, such as by using an AI tool trained for face detection.

In another example, the user may select a privacy setting that allows the system to have full access to the camera of the client device. In this example, the system is configured to determine that the specific person is at their desk in front of the client device and thus can distinguish between the specific person and other people, such as by using an AI tool trained for face detection. In this case, the system may or may not display or transmit the image or video data from the camera on another device, such as the first device <NUM> shown in <FIG>, for example, upon request from the receptionist such as where the receptionist receives a call to be transferred to the user.

The method includes determining <NUM> whether a human presence is detected based on the scan. Determining <NUM> whether a human presence is detected may include detecting a head zone in the scan. For example, if a head zone is detected, the system determines <NUM> that a human being is present at the client device, and if a head zone is not detected, the system determines <NUM> that a human being is not present at the client device. If it is determined <NUM> that a human presence is not detected, the method <NUM> includes transmitting <NUM> a notification. In some cases, the presence status may be updated to unavailable. The notification may include an indication of the presence status. The method <NUM> includes retaining <NUM> a call at a second device or forwarding the call to a mailbox, such as a voice mailbox of the user.

If it is determined <NUM> that a human presence is detected, the method <NUM> includes determining <NUM> an identity of the detected human. The identity of the detected human may be determined <NUM> using an AI tool trained for face detection, for example. Other examples of determining <NUM> the identity of the user may include performing voice print matching, fingerprint scanning, iris scanning, or some other biometric technique that does not require the use of image or video data.

The method <NUM> includes confirming <NUM> the identity of the detected human. For example, the identity of the detected human may be confirmed <NUM> by matching it against an identity of the person for whom the call is intended. The identity of the person for whom the call is intended may be a known identity, for example, stored in a database of the system that correlates image data, video data, or both, with a user account of the user. If the identity of the detected human matches the identity of the person for whom the call is intended, the identity is confirmed and the method <NUM> includes transmitting <NUM> a notification. In some cases, the presence status may be to available. The notification may include an indication of the presence status, and the notification may be based on the selected privacy setting. In some cases, the notification may include an identity of the user, an image of the user from the camera, or a video feed of the user from the camera based on the selected privacy setting. The method <NUM> includes transferring <NUM> a call from the second device to the client device in response to the notification.

If the identity of the detected user is not confirmed, for example in the case of a human other than the user is detected at the client device, the method <NUM> includes transmitting <NUM> a notification and updating a presence status to unavailable. The notification may include an indication of the updated presence status. The notification may indicate that the detected human is not the user the call was intended for. In some cases, the notification may be an alert that indicates that the detected human is an unauthorized user. The method <NUM> includes retaining <NUM> a call at the operator or forwarding the call to a mailbox, such as a voice mailbox of the user.

<FIG> is a flowchart of an example of another method <NUM> for video-assisted presence detection in telephony communications. The method <NUM> includes detecting <NUM> a user presence. The user presence may be detected based on data captured by a camera of a first device. The first device may be associated with a private network. The first device may be configured to communicate via a UCaaS platform, such as software platform <NUM> shown in <FIG>. The data captured by the camera of the first device may include image data, video data, or both. Detection of the user presence may be based on a determination of a head zone, a body zone, or both, from the data captured by the camera of the first device. The head zone, the body zone, or both, may be determined by the first device or another device associated with the private network.

The method <NUM> includes transmitting <NUM> a notification to a second device. The second device may be associated with the private network. The second device may be configured to communicate via the UCaaS platform. The notification may indicate the detection of the user presence. The notification may include an indication of whether a user is available or not, image data from the camera of the first device, video data, such as a video feed, from the camera of the first device, or any combination thereof. The notification may be displayed on a display of the second device. In some cases, the notification is transmitted when the identity of the user is confirmed, such as by using a voice print matching procedure, fingerprint authentication, or another identity confirmation procedure.

The method <NUM> includes transferring <NUM> a call to the first device. The call may be transferred to the first device based on the detection of the user presence. The call may be transferred to the first device using SIP signaling. The call may be transferred based on an identity confirmation of the detected user. For example, a voice print matching procedure may be performed to confirm the identity of the user. If a result of the voice print matching procedure confirms that the detected user is the user for which the call is intended, the call is transferred to the first device.

In an aspect, a system may include a first device and a second device. The first device may be associated with a private network. The first device may be configured to communicate via a UCaaS platform. The second device may be associated with the private network. The second device may be configured to communicate via the UCaaS platform. The second device may include a camera. The second device may be configured to detect a user presence based on data captured by the camera. The second device may be configured to transmit a notification to the first device that indicates detection of the user presence. The first device may be configured to transfer a call to the second device based on the detection of the user presence using SIP signaling.

In an aspects, a method may include detecting a user presence based on data captured by a camera of a first device associated with a private network and configured to communicate via a UCaaS platform. The method may include transmitting a notification to a second device associated with the private network and configured to communicate via the UCaaS platform. The notification may indicate the detected user presence. The method may include transferring, using SIP signaling, a call to the first device based on the detection of the user presence.

In an aspect, a non-transitory computer-readable medium may be configured to store instructions that when executed by a processor cause the processor to initiate a camera on a first device associated with a private network and configured to communicate via a UCaaS platform. The processor may be configured to perform a scan based on a privacy setting. The scan may include data obtained from the camera of the first device. The processor may be configured to determine whether a human presence is detected based on the data obtained from the camera of the first device. The processor may be configured to transmit a notification to a second device associated with the private network and configured to communicate via the UCaaS platform. The notification may be based on the determination of whether the human presence is detected. On a condition that the human presence is detected, the processor may be configured to transfer a call from the second device to the first device using SIP signaling. On a condition that the human presence is not detected, the processor may be configured to retain the call at the second device.

In one or more aspects, the second device may be configured to determine a head zone from the data to detect the user presence at the second device. In one or more aspects, the first device may be configured to determine a head zone from the data to detect the user presence at the first device. In one or more aspects, a network device of the private network may be configured to determine a head zone from the data to detect the user presence at the first device. The head zone may be a first area of an image associated with the data that includes at least a portion of a head of a user. In one or more aspects, the second device may be configured to determine a body zone from the data to detect the user presence at the second device. In one or more aspects, the first device may be configured to determine a body zone from the data to detect the user presence at the first device. In one or more aspects, a network device of the private network may be configured to determine a body zone from the data to detect the user presence at the first device. The body zone may be a second area of the image associated with the data that includes at least a portion of a body of the user. In one or more aspects, the notification may include a video feed associated with the data. In one or more aspects, the second device may be configured to perform voice print matching to confirm an identity of the user. In one or more aspects, the second device may be configured to transmit the notification on a condition that the identity of the user is confirmed. In one or more aspects, an identity of a user may be determined based on the data obtained from the camera of the first device. In one or more aspects, the identity of the user may be confirmed by matching the identity against a known identity. In one or more aspects, the call from the second device may be transferred to the first device on a condition that the identity of the user is confirmed. In one or more aspects, a privacy setting may allow partial access to the camera of the first device to perform the scan without capturing facial information. In one or more aspects, a privacy setting may allow full access to the camera of the first device. In one or more aspects, the notification may include a video feed from the camera of the first device.

The implementations of this disclosure can be described in terms of functional block components and various processing operations. Such functional block components can be realized by a number of hardware or software components that perform the specified functions. For example, the disclosed implementations can employ various integrated circuit components (e.g., memory elements, processing elements, logic elements, look-up tables, and the like), which can carry out a variety of functions under the control of one or more microprocessors or other control devices. Similarly, where the elements of the disclosed implementations are implemented using software programming or software elements, the systems and techniques can be implemented with a programming or scripting language, such as C, C++, Java, JavaScript, assembler, or the like, with the various algorithms being implemented with a combination of data structures, objects, processes, routines, or other programming elements.

Functional aspects can be implemented in algorithms that execute on one or more processors. Furthermore, the implementations of the systems and techniques disclosed herein could employ a number of conventional techniques for electronics configuration, signal processing or control, data processing, and the like. The words "mechanism" and "component" are used broadly and are not limited to mechanical or physical implementations, but can include software routines in conjunction with processors, etc. Likewise, the terms "system" or "tool" as used herein and in the figures, but in any event based on their context, may be understood as corresponding to a functional unit implemented using software, hardware (e.g., an integrated circuit, such as an ASIC), or a combination of software and hardware. In certain contexts, such systems or mechanisms may be understood to be a processor-implemented software system or processor-implemented software mechanism that is part of or callable by an executable program, which may itself be wholly or partly composed of such linked systems or mechanisms.

Implementations or portions of implementations of the above disclosure can take the form of a computer program product accessible from, for example, a computer-usable or computer-readable medium. A computer-usable or computer-readable medium can be a device that can, for example, tangibly contain, store, communicate, or transport a program or data structure for use by or in connection with a processor. The medium can be, for example, an electronic, magnetic, optical, electromagnetic, or semiconductor device.

Claim 1:
A system (<NUM>) comprising:
a first device (<NUM>) associated with a private network and configured to communicate via a unified communications as a service, UCaaS, platform (<NUM>); and
a second device (<NUM>) associated with the private network and configured to communicate via the UCaaS platform (<NUM>), the second device (<NUM>) including a camera, wherein the second device (<NUM>) is configured to:
perform (<NUM>) a scan based on a privacy setting wherein the scan includes data obtained from the camera, wherein the privacy setting allows partial access to the camera on the second device (<NUM>) to perform the scan without capturing facial information;
detect (<NUM>) a user presence based on data captured by the camera; and
transmit (<NUM>) a notification (<NUM>) to the first device that indicates detection of the user presence,
wherein the first device (<NUM>) is configured to transfer (<NUM>) a call to the second device (<NUM>) based on the detection of the user presence using session initiation protocol, SIP, signaling.