BACKGROUND

In recent years, electronic devices such as smartphones and tablet computers often include applications known as virtual agents or virtual assistants that assist users in performing functions such as searching for content on a network (e.g., the Internet) and interacting with other applications. Users can interact with a virtual agent using typing or touch to perform these functions. Additionally, some devices include a speech interface to enable users to interact with a virtual agent using speech input. These virtual agents are generally platform specific and work with devices that use a particular operating system. For example, the Siri® assistant available from Apple Computers, Inc. is configured to work with devices running the iOS mobile operating system, and the EVA assistant available from Bulletproof Corp. is configured to work with devices running the Android mobile operating system available from Google, Inc.

SUMMARY

Some embodiments are directed to improving the functionality of virtual agents by facilitating communications between virtual agents associated with different users in a networked system. The improved functionality may include, but is not limited to, functions such as finding another user's location, coordinating a meeting place, accessing another user's calendar, scheduling a meeting, and sharing contact information.

Some embodiments are directed to a platform-independent virtual agent that may operate on at least two devices running different operating systems allowing for communication between the at least two devices to perform at least one coordinated action.

Some embodiments are directed to a method of communicating between virtual agents, wherein each of the virtual agents is associated with a user, the method comprising: receiving input from a first user; determining, by a first virtual agent associated with the first user, whether to invoke a communication session with a second virtual agent associated with a second user; and sending an outgoing communication to the second virtual agent in response to determining to invoke the communication session.

Other embodiments are directed to a computer-readable medium encoded with a plurality of instructions that, when executed by at least one computer, perform a method of communicating between virtual agents, wherein each of the virtual agents is associated with a user, the method comprising: receiving input from a first user; determining, by a first virtual agent associated with the first user, whether to invoke a communication session with a second virtual agent associated with a second user; and sending an outgoing communication to the second virtual agent in response to determining to invoke the communication session, wherein the outgoing communication includes a request for the second virtual agent to perform at least one action on behalf of the first user.

Other embodiments are directed to an electronic device, comprising: a communication interface configured to receive input from a first user; and a first virtual agent configured to: determine whether to invoke a communication session with a second virtual agent associated with a second user; and send an outgoing communication to the second virtual agent in response to determining to invoke the communication session, wherein the outgoing communication includes a request for the second virtual agent to perform at least one action on behalf of the first user.

Other embodiments are directed to a method of managing a task by a first virtual agent associated with a first user without receiving input from the first user, the method comprising: determining, by the first virtual agent, whether a condition associated with the task has occurred; and sending an alert to the first user, or an outgoing communication to a second virtual agent associated with a second user in response to determining that the condition has occurred.

Other embodiments are directed to a computer-readable medium encoded with a plurality of instructions that, when executed by at least one computer, perform a method of managing a task by a first virtual agent associated with a first user without receiving input from the first user, the method comprising: determining, by the first virtual agent, whether a condition associated with the task has occurred; and sending an alert to the first user, or an outgoing communication to a second virtual agent associated with a second user in response to determining that the condition has occurred.

Other embodiments are directed to an electronic device, comprising: a first virtual agent associated with a first user, wherein the first virtual agent is configured to: determine whether a condition associated with a task assigned to the first virtual agent has occurred; and send an alert to the first user, or an outgoing communication to a second virtual agent associated with a second user in response to determining that the condition has occurred.

Other embodiments are directed to a method of facilitating communication between virtual agents, wherein each of the virtual agents is associated with a user, the method comprising: receiving by a second virtual agent associated with a second user, a communication from a first virtual agent associated with a first user; and performing at least one action in response to receiving the communication.

Other embodiments are directed to a computer-readable medium encoded with a plurality of instructions that, when executed by at least one computer, perform a method of facilitating communication between virtual agents, wherein each of the virtual agents is associated with a user, the method comprising: receiving by a second virtual agent associated with a second user, a communication from a first virtual agent associated with a first user; and performing at least one action in response to receiving the communication.

Other embodiments are directed to an electronic device, comprising: a communication interface configured to receive a communication from a first virtual agent associated with a first user; and a second virtual agent associated with a second user, wherein the second virtual agent is configured to: perform at least one action in response to receiving the communication.

It should be appreciated that all combinations of the foregoing concepts and additional concepts discussed in greater detail below (provided that such concepts are not mutually inconsistent) are contemplated as being part of the inventive subject matter disclosed herein.

