DIGITAL ASSISTANT EXTENSIBILITY TO THIRD PARTY APPLICATIONS
A digital assistant includes an extensibility client that interfaces with application extensions that are built by third-party developers so that various aspects of application user experiences, content, or features may be integrated into the digital assistant and rendered as native digital assistant experiences. Application extensions can use a variety of services provided from cloud-based and/or local sources such as language/vocabulary, user preferences, and context services that add intelligence and contextual relevance while enabling the extensions to plug in and operate seamlessly within the digital assistant context. Application extensions may also access and utilize general digital assistant functions, data structures, and libraries exposed by the services and implement application domain-specific context and behaviors using the programming features captured in the extension. Such extensibility to third party applications can broaden the scope of the database of information that the digital assistant may use to answer questions and perform actions for the user.
Digital assistants can provide a variety of features for device users and can make it easier to interact with devices to perform tasks, get information, and stay connected with friends and colleagues using voice interactions. Typically, the user can interact with the digital assistant using voice inputs, and the digital assistant can speak to the user using its own voice. Current features perform in a satisfactory manner for many use scenarios, but increased functionality can make digital assistants even more beneficial and productive.
This Background is provided to introduce a brief context for the Summary and Detailed Description that follow. This Background is not intended to be an aid in determining the scope of the claimed subject matter nor be viewed as limiting the claimed subject matter to implementations that solve any or all of the disadvantages or problems presented above.
SUMMARYA digital assistant supported on a device such as a smartphone, tablet, personal computer (PC), game console, or the like includes an extensibility client that interfaces with application extensions that are built by third-party developers so that various aspects of application user experiences, content, or features may be integrated into the digital assistant and rendered as native digital assistant experiences. Application extensions can use a variety of services provided from cloud-based and/or local sources such as language/vocabulary, user preferences, and context services that add intelligence and contextual relevance while enabling the extensions to plug in and operate seamlessly within the digital assistant context. Application extensions may also access and utilize general digital assistant functions, data structures, and libraries exposed by the services and implement application domain-specific context and behaviors using the programming features captured in the extension. Such extensibility to third party applications can broaden the scope of the database of information that the digital assistant may use to answer questions and perform actions for the user.
The present digital assistant extensibility enables increased user efficiency in obtaining information and performing tasks using the digital assistant and improves overall user interaction performance with the device. By broadening the information database that is available to the digital assistant, the extensibility improves the quality of answers and enables a wider and more comprehensive set of responses and actions to be supported on the device. This can reduce the number of attempts to obtain needed information which lowers the likelihood of unintentional inputs to the device that can cause additional resource consumption and user frustration. In addition, the extensibility enables devices to more efficiently utilize available computing resources including network bandwidth, processing cycles, memory, and battery life in some cases. For example, data describing context and user behaviors that is maintained by the digital assistant can be utilized to make the applications operate more efficiently in delivering tailored content, information, and user experiences which can reduce network bandwidth requirements and the load on processing, storage, and memory resources on the device.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. It will be appreciated that the above-described subject matter may be implemented as a computer-controlled apparatus, a computer process, a computing system, or as an article of manufacture such as one or more computer-readable storage media. These and various other features will be apparent from a reading of the following Detailed Description and a review of the associated drawings.
Like reference numerals indicate like elements in the drawings. Elements are not drawn to scale unless otherwise indicated.
DETAILED DESCRIPTIONThe extensions 140 can be associated with third party applications 150 in some cases in which the application authors, developers, or providers are entities that are not the same as the provider of the digital assistant 112. First party applications can also be supported in some implementations. In some cases, the digital assistant extensibility service 118 may support direct interaction with the applications 150, as indicated by line 152 in
Various details of illustrative implementations of digital assistant extensibility are now presented.
Other types of electronic devices are also envisioned to be usable within the environment 100 including handheld computing devices, PDAs (personal digital assistants), portable media players, devices that use headsets and earphones (e.g., Bluetooth-compatible devices), phablet devices (i.e., combination smartphone/tablet devices), wearable computers, navigation devices such as GPS (Global Positioning System) systems, laptop PCs (personal computers), desktop computers, multimedia consoles, gaming systems, or the like. In the discussion that follows, the use of the term “device” is intended to cover all devices that are configured with communication capabilities and are capable of connectivity to the communications network 115.
The various devices 110 in the environment 100 can support different features, functionalities, and capabilities (here referred to generally as “features”). Some of the features supported on a given device can be similar to those supported on others, while other features may be unique to a given device. The degree of overlap and/or distinctiveness among features supported on the various devices 110 can vary by implementation. For example, some devices 110 can support touch controls, gesture recognition, and voice commands, while others may enable a more limited UI. Some devices may support video consumption and Internet browsing, while other devices may support more limited media handling and network interface features.
Accessory devices 218, such as wristbands and other wearable devices may also be present in the environment 200. Such accessory device 218 typically is adapted to interoperate with a device 110 using a short range communication protocol like Bluetooth to support functions such as monitoring of the wearer's physiology (e.g., heart rate, steps taken, calories burned, etc.) and environmental conditions (temperature, humidity, ultra-violet (UV) levels, etc.), and surfacing notifications from the coupled device 110.
The devices 110 can typically utilize the network 115 in order to access and/or implement various user experiences. The network can include any of a variety of network types and network infrastructure in various combinations or sub-combinations including cellular networks, satellite networks, IP (Internet-Protocol) networks such as Wi-Fi and Ethernet networks, a public switched telephone network (PSTN), and/or short range networks such as Bluetooth® networks. The network infrastructure can be supported, for example, by mobile operators, enterprises, Internet service providers (ISPs), telephone service providers, data service providers, and the like.
The network 115 may utilize portions of the Internet or include interfaces that support a connection to the Internet so that the devices 110 can access content provided by one or more content providers and also render user experiences supported by various application services 225. The application services 225 can respectively support a diversity of applications such as social networking, mapping, news and information, entertainment, travel, productivity, finance, etc. The digital assistant service 130 (described in more detail below) is also present in the computing environment 200.
As shown in
The various inputs can be used alone or in various combinations to enable the digital assistant 112 to utilize contextual data 420 when it operates. Contextual data can include, for example, time/date, the user's location, language, schedule, applications installed on the device, the user's preferences, the user's behaviors (in which such behaviors are monitored/tracked with notice to the user and the user's consent), stored contacts (including, in some cases, links to a local user's or remote user's social graph such as those maintained by external social networking services), call history, messaging history, browsing history, device type, device capabilities, communication network type and/or features/functionalities provided therein, mobile data plan restrictions/limitations, data associated with other parties to a communication (e.g., their schedules, preferences, etc.), and the like.
As shown, the functions 400 illustratively include interacting with the user 425 (through the natural language UI and other graphical UIs, for example); performing tasks 430 (e.g., making note of appointments in the user's calendar, sending messages and emails, etc.); providing services 435 (e.g., answering questions from the user, mapping directions to a destination, setting alarms, forwarding notifications, reading emails, news, blogs, etc.); gathering information 440 (e.g., finding information requested by the user about a book or movie, locating the nearest Italian restaurant, etc.); operating devices 445 (e.g., setting preferences, adjusting screen brightness, turning wireless connections such as Wi-Fi and Bluetooth on and off, communicating with other devices, controlling smart appliances, etc.); and performing various other functions 450. The list of functions 400 is not intended to be exhaustive and other functions may be provided by the digital assistant 112 and/or applications 150 as may be needed for a particular implementation of the present digital assistant extensibility.
A user can typically interact with the digital assistant 112 in a number of ways depending on the features and functionalities supported by a given device 110. For example, as shown in
In some implementations, the digital assistant 112 may expose a natural language user interface 605 shown in
In other implementations, the digital assistant 112 may expose a gesture user interface 705 shown in
The application layer 805 in this illustrative example supports various applications 150 (e.g., web browser, map application, email application, news application, etc.), as well as the digital assistant extensibility client 114. The applications are often implemented using locally executing code. However in some cases, these applications can rely on services and/or remote code execution provided by remote servers or other computing platforms such as those supported by a service provider or other cloud-based resources. While the digital assistant extensibility client 114 is shown here as a component that is instantiated in the application layer 805, it will be appreciated that the functionality provided by a given application may be implemented, in whole or part, using components that are supported in either the OS or hardware layers.
The OS layer 810 supports the digital assistant 112 and various other OS components 855. In typical implementations, the digital assistant 112 can interact with the digital assistant service 130, as indicated by line 860. That is, the digital assistant 112 in some implementations can partially utilize or fully utilize remote code execution supported at the service 130, or using other remote resources. In addition, it may utilize and/or interact with the other OS components 855 (and/or other components that are instantiated in the other layers of the architecture 800) as may be needed to implement the various features and functions described herein. In some implementations, some or all of the functionalities supported by the digital assistant extensibility client 114 can be incorporated into the digital assistant as shown by the dashed rectangle in
The language and vocabulary services 905 can support utilization of different languages by extensions when providing data and/or services to the digital assistant. For example, some applications may be utilized in multi-lingual settings while other applications may have regional or global distribution that makes it appealing to support multiple languages. The vocabulary services may support application utilization of specialized and/or industry-specific vocabularies. For example, technical and scientific vocabularies can be supported for an application dealing with computer and technology news. Thus, a news reading application could access the vocabulary services so that a particular term is correctly pronounced when an article is read aloud to the user 105 by the digital assistant.
The user preference services 910 may enable extensions to take into account user preferences that are maintained by the digital assistant when providing data and services. The context services 915 likewise can enable extensions to use the contextual data that is maintained by the digital assistant. Other services 920 can also be exposed by the extensibility service 118 to meet the needs of a particular implementation.
As shown in
As shown in
In
In step 1605, an interface is configured for receiving application-specific services from extensions associated with respective applications operating on the device. A user interface is configured to receive voice commands from the device user in step 1610. In step 1615, the received inputs are mapped to respective extensions for handling. In step 1620, digital assistant extensibility services (such as services 900 shown in
In step 1625, the digital assistant extensibility client receives an application-specific service from an extension in response to the device user inputs. In step 1630, the application-specific service may be rendered so that user experiences across applications are exposed as native digital assistant user experiences.
A number of program modules may be stored on the hard disk, magnetic disk 1933, optical disk 1943, ROM 1917, or RAM 1921, including an operating system 1955, one or more application programs 1957, other program modules 1960, and program data 1963. A user may enter commands and information into the computer system 1900 through input devices such as a keyboard 1966 and pointing device 1968 such as a mouse. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, trackball, touchpad, touchscreen, touch-sensitive device, voice-command module or device, user motion or user gesture capture device, or the like. These and other input devices are often connected to the processor 1905 through a serial port interface 1971 that is coupled to the system bus 1914, but may be connected by other interfaces, such as a parallel port, game port, or universal serial bus (USB). A monitor 1973 or other type of display device is also connected to the system bus 1914 via an interface, such as a video adapter 1975. In addition to the monitor 1973, personal computers typically include other peripheral output devices (not shown), such as speakers and printers. The illustrative example shown in
The computer system 1900 is operable in a networked environment using logical connections to one or more remote computers, such as a remote computer 1988. The remote computer 1988 may be selected as another personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the computer system 1900, although only a single representative remote memory/storage device 1990 is shown in
When used in a LAN networking environment, the computer system 1900 is connected to the local area network 1993 through a network interface or adapter 1996. When used in a WAN networking environment, the computer system 1900 typically includes a broadband modem 1998, network gateway, or other means for establishing communications over the wide area network 1995, such as the Internet. The broadband modem 1998, which may be internal or external, is connected to the system bus 1914 via a serial port interface 1971. In a networked environment, program modules related to the computer system 1900, or portions thereof, may be stored in the remote memory storage device 1990. It is noted that the network connections shown in
The architecture 2000 illustrated in
The mass storage device 2012 is connected to the CPU 2002 through a mass storage controller (not shown) connected to the bus 2010. The mass storage device 2012 and its associated computer-readable storage media provide non-volatile storage for the architecture 2000.
Although the description of computer-readable storage media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable storage media can be any available storage media that can be accessed by the architecture 2000.
By way of example, and not limitation, computer-readable storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. For example, computer-readable media includes, but is not limited to, RAM, ROM, EPROM (erasable programmable read only memory), EEPROM (electrically erasable programmable read only memory), Flash memory or other solid state memory technology, CD-ROM, DVDs, HD-DVD (High Definition DVD), Blu-ray, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the architecture 2000.
According to various embodiments, the architecture 2000 may operate in a networked environment using logical connections to remote computers through a network. The architecture 2000 may connect to the network through a network interface unit 2016 connected to the bus 2010. It should be appreciated that the network interface unit 2016 also may be utilized to connect to other types of networks and remote computer systems. The architecture 2000 also may include an input/output controller 2018 for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in
It should be appreciated that the software components described herein may, when loaded into the CPU 2002 and executed, transform the CPU 2002 and the overall architecture 2000 from a general-purpose computing system into a special-purpose computing system customized to facilitate the functionality presented herein. The CPU 2002 may be constructed from any number of transistors or other discrete circuit elements, which may individually or collectively assume any number of states. More specifically, the CPU 2002 may operate as a finite-state machine, in response to executable instructions contained within the software modules disclosed herein. These computer-executable instructions may transform the CPU 2002 by specifying how the CPU 2002 transitions between states, thereby transforming the transistors or other discrete hardware elements constituting the CPU 2002.
Encoding the software modules presented herein also may transform the physical structure of the computer-readable storage media presented herein. The specific transformation of physical structure may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the computer-readable storage media, whether the computer-readable storage media is characterized as primary or secondary storage, and the like. For example, if the computer-readable storage media is implemented as semiconductor-based memory, the software disclosed herein may be encoded on the computer-readable storage media by transforming the physical state of the semiconductor memory. For example, the software may transform the state of transistors, capacitors, or other discrete circuit elements constituting the semiconductor memory. The software also may transform the physical state of such components in order to store data thereupon.
As another example, the computer-readable storage media disclosed herein may be implemented using magnetic or optical technology. In such implementations, the software presented herein may transform the physical state of magnetic or optical media, when the software is encoded therein. These transformations may include altering the magnetic characteristics of particular locations within given magnetic media. These transformations also may include altering the physical features or characteristics of particular locations within given optical media to change the optical characteristics of those locations. Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this discussion.
In light of the above, it should be appreciated that many types of physical transformations take place in the architecture 2000 in order to store and execute the software components presented herein. It also should be appreciated that the architecture 2000 may include other types of computing devices, including handheld computers, embedded computer systems, smartphones, PDAs, and other types of computing devices known to those skilled in the art. It is also contemplated that the architecture 2000 may not include all of the components shown in
The illustrated device 110 can include a controller or processor 2110 (e.g., signal processor, microprocessor, microcontroller, ASIC (Application Specific Integrated Circuit), or other control and processing logic circuitry) for performing such tasks as signal coding, data processing, input/output processing, power control, and/or other functions. An operating system 2112 can control the allocation and usage of the components 2102, including power states, above-lock states, and below-lock states, and provides support for one or more application programs 2114. The application programs can include common mobile computing applications (e.g., image-capture applications, email applications, calendars, contact managers, web browsers, messaging applications), or any other computing application.
The illustrated device 110 can include memory 2120. Memory 2120 can include non-removable memory 2122 and/or removable memory 2124. The non-removable memory 2122 can include RAM, ROM, Flash memory, a hard disk, or other well-known memory storage technologies. The removable memory 2124 can include Flash memory or a Subscriber Identity Module (SIM) card, which is well known in GSM (Global System for Mobile communications) systems, or other well-known memory storage technologies, such as “smart cards.” The memory 2120 can be used for storing data and/or code for running the operating system 2112 and the application programs 2114. Example data can include web pages, text, images, sound files, video data, or other data sets to be sent to and/or received from one or more network servers or other devices via one or more wired or wireless networks.
The memory 2120 may also be arranged as, or include, one or more computer-readable storage media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. For example, computer-readable media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, Flash memory or other solid state memory technology, CD-ROM (compact-disc ROM), DVD, (Digital Versatile Disc) HD-DVD (High Definition DVD), Blu-ray, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the device 110.
The memory 2120 can be used to store a subscriber identifier, such as an International Mobile Subscriber Identity (IMSI), and an equipment identifier, such as an International Mobile Equipment Identifier (IMEI). Such identifiers can be transmitted to a network server to identify users and equipment. The device 110 can support one or more input devices 2130; such as a touchscreen 2132; microphone 2134 for implementation of voice input for voice recognition, voice commands and the like; camera 2136; physical keyboard 2138; trackball 2140; and/or proximity sensor 2142; and one or more output devices 2150, such as a speaker 2152 and one or more displays 2154. Other input devices (not shown) using gesture recognition may also be utilized in some cases. Other possible output devices (not shown) can include piezoelectric or haptic output devices. Some devices can serve more than one input/output function. For example, touchscreen 2132 and display 2154 can be combined into a single input/output device.
A wireless modem 2160 can be coupled to an antenna (not shown) and can support two-way communications between the processor 2110 and external devices, as is well understood in the art. The modem 2160 is shown generically and can include a cellular modem for communicating with the mobile communication network 2104 and/or other radio-based modems (e.g., Bluetooth 2164 or Wi-Fi 2162). The wireless modem 2160 is typically configured for communication with one or more cellular networks, such as a GSM network for data and voice communications within a single cellular network, between cellular networks, or between the device and a public switched telephone network (PSTN).
The device can further include at least one input/output port 2180, a power supply 2182, a satellite navigation system receiver 2184, such as a GPS receiver, an accelerometer 2186, a gyroscope (not shown), and/or a physical connector 2190, which can be a USB port, IEEE 1394 (FireWire) port, and/or an RS-232 port. The illustrated components 2102 are not required or all-inclusive, as any components can be deleted and other components can be added.
A graphics processing unit (GPU) 2208 and a video encoder/video codec (coder/decoder) 2214 form a video processing pipeline for high speed and high resolution graphics processing. Data is carried from the GPU 2208 to the video encoder/video codec 2214 via a bus. The video processing pipeline outputs data to an A/V (audio/video) port 2240 for transmission to a television or other display. A memory controller 2210 is connected to the GPU 2208 to facilitate processor access to various types of memory 2212, such as, but not limited to, a RAM.
The multimedia console 1104 includes an I/O controller 2220, a system management controller 2222, an audio processing unit 2223, a network interface controller 2224, a first USB (Universal Serial Bus) host controller 2226, a second USB controller 2228, and a front panel I/O subassembly 2230 that are preferably implemented on a module 2218. The USB controllers 2226 and 2228 serve as hosts for peripheral controllers 2242(1) and 2242(2), a wireless adapter 2248, and an external memory device 2246 (e.g., Flash memory, external CD/DVD ROM drive, removable media, etc.). The network interface controller 2224 and/or wireless adapter 2248 provide access to a network (e.g., the Internet, home network, etc.) and may be any of a wide variety of various wired or wireless adapter components including an Ethernet card, a modem, a Bluetooth module, a cable modem, or the like.
System memory 2243 is provided to store application data that is loaded during the boot process. A media drive 2244 is provided and may comprise a DVD/CD drive, hard drive, or other removable media drive, etc. The media drive 2244 may be internal or external to the multimedia console 1104. Application data may be accessed via the media drive 2244 for execution, playback, etc. by the multimedia console 1104. The media drive 2244 is connected to the I/O controller 2220 via a bus, such as a Serial ATA bus or other high speed connection (e.g., IEEE 1394).
The system management controller 2222 provides a variety of service functions related to assuring availability of the multimedia console 1104. The audio processing unit 2223 and an audio codec 2232 form a corresponding audio processing pipeline with high fidelity and stereo processing. Audio data is carried between the audio processing unit 2223 and the audio codec 2232 via a communication link. The audio processing pipeline outputs data to the A/V port 2240 for reproduction by an external audio player or device having audio capabilities.
The front panel I/O subassembly 2230 supports the functionality of the power button 2250 and the eject button 2252, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of the multimedia console 1104. A system power supply module 2239 provides power to the components of the multimedia console 1104. A fan 2238 cools the circuitry within the multimedia console 1104.
The CPU 2201, GPU 2208, memory controller 2210, and various other components within the multimedia console 1104 are interconnected via one or more buses, including serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures can include a Peripheral Component Interconnects (PCI) bus, PCI-Express bus, etc.
When the multimedia console 1104 is powered ON, application data may be loaded from the system memory 2243 into memory 2212 and/or caches 2202 and 2204 and executed on the CPU 2201. The application may present a graphical user interface that provides a consistent user experience when navigating to different media types available on the multimedia console 1104. In operation, applications and/or other media contained within the media drive 2244 may be launched or played from the media drive 2244 to provide additional functionalities to the multimedia console 1104.
The multimedia console 1104 may be operated as a standalone system by simply connecting the system to a television or other display. In this standalone mode, the multimedia console 1104 allows one or more users to interact with the system, watch movies, or listen to music. However, with the integration of broadband connectivity made available through the network interface controller 2224 or the wireless adapter 2248, the multimedia console 1104 may further be operated as a participant in a larger network community.
When the multimedia console 1104 is powered ON, a set amount of hardware resources are reserved for system use by the multimedia console operating system. These resources may include a reservation of memory (e.g., 16 MB), CPU and GPU cycles (e.g., 5%), networking bandwidth (e.g., 8 kbps), etc. Because these resources are reserved at system boot time, the reserved resources do not exist from the application's view.
In particular, the memory reservation preferably is large enough to contain the launch kernel, concurrent system applications, and drivers. The CPU reservation is preferably constant such that if the reserved CPU usage is not used by the system applications, an idle thread will consume any unused cycles.
With regard to the GPU reservation, lightweight messages generated by the system applications (e.g., pop-ups) are displayed by using a GPU interrupt to schedule code to render pop-ups into an overlay. The amount of memory needed for an overlay depends on the overlay area size and the overlay preferably scales with screen resolution. Where a full user interface is used by the concurrent system application, it is preferable to use a resolution independent of application resolution. A scaler may be used to set this resolution such that the need to change frequency and cause a TV re-sync is eliminated.
After the multimedia console 1104 boots and system resources are reserved, concurrent system applications execute to provide system functionalities. The system functionalities are encapsulated in a set of system applications that execute within the reserved system resources described above. The operating system kernel identifies threads that are system application threads versus gaming application threads. The system applications are preferably scheduled to run on the CPU 2201 at predetermined times and intervals in order to provide a consistent system resource view to the application. The scheduling is to minimize cache disruption for the gaming application running on the console.
When a concurrent system application requires audio, audio processing is scheduled asynchronously to the gaming application due to time sensitivity. A multimedia console application manager (described below) controls the gaming application audio level (e.g., mute, attenuate) when system applications are active.
Input devices (e.g., controllers 2242(1) and 2242(2)) are shared by gaming applications and system applications. The input devices are not reserved resources, but are to be switched between system applications and the gaming application such that each will have a focus of the device. The application manager preferably controls the switching of input stream, without knowledge of the gaming application's knowledge and a driver maintains state information regarding focus switches.
Various exemplary embodiments of the present digital assistant extensibility to third party applications are now presented by way of illustration and not as an exhaustive list of all embodiments. An example includes a method for implementing extensibility of a digital assistant operating on a device to one or more applications, comprising: configuring an interface for interoperating with application-specific services exposed by extensions associated with respective ones of the applications; receiving input from a device user; mapping the device user input to an extension for handling; and receiving an application-specific service from the extension in response to the device user inputs.
In another example, the method further includes rendering the application-specific service so that user experiences across the applications are exposed to the device user as native digital assistant user experiences and whereby the application-specific service increases a size of a database of answers available to the digital assistant. In another example, the method further includes using contextual data when performing the mapping. In another example, the contextual data comprises one or more of time/date, location of the user or device, language, schedule, applications installed on the device, user preferences, user behaviors, user activities, stored contacts, call history, messaging history, browsing history, device type, device capabilities, or communication network type. In another example, the method further includes providing extensibility services to the applications, the extensibility services including one or more of language services, vocabulary services, user preference services, or context services. In another example, the method further includes receiving portions of the extensibility services from a remote service provider. In another example, the method further includes supporting the interface with an extensibility client that is configured for interaction with the remote service provider. In another example, the method further includes loading application-specific resources from a manifest included in the application extension, the application-specific resources at least including keywords that are registered with the digital assistant. In another example, the application extension further includes logic for implementing a user experience or a user interface using the digital assistant. In another example, the method further includes configuring the digital assistant, responsively to voice input, gesture input, or manual input for performing at least one of sharing contact information, sharing a stored contact, scheduling a meeting, looking at a user's calendar, scheduling a reminder, making a call, operating a device, playing games, making purchases, taking notes, scheduling an alarm or wake-up reminder, sending a message, checking social media for updates, scraping a website, interacting with a search service, sharing or showing files, sending a link to a website, or sending a link to a resource.
A further example includes a device, comprising: one or more processors; a user interface (UI) for interacting with a user of the device using graphics and audio; and a memory device storing code associated with one or more applications and computer-readable instructions which, when executed by the one or more processors, perform a method comprising the steps of: exposing a digital assistant on the device for maintaining context-awareness for a device user by monitoring user behaviors and interactions with the device, the digital assistant further interacting with the device user using voice interactions through the UI, receiving an input from the device user through the UI, using the context-awareness to deliver an input to an extension to an application for handling, the application extension being configured to deliver services from the application into user experiences renderable by the digital assistant, and operating the digital assistant to render the services to the device user through the UI.
In another example, the device further includes exposing one or more extensibility services to the application extension. In another example, the device further includes enabling the application extension to load application-specific resources from a manifest into a runtime environment for execution. In another example, the application extension includes an event handler. In another example, the application extension includes logic comprising one of script or programming construct. In another example, the device further includes exposing one or more databases associated with the application to the digital assistant using the application extension.
A further example includes one or more computer-readable memory devices storing instructions which, when executed by one or more processors disposed in a computer server, perform a method comprising the steps of: interoperating with a digital assistant extensibility client on a local device, the digital assistant extensibility client exposing an application programming interface (API) to one or more application extensions being executable on the device, each of the application extensions being configured to deliver services from respective applications into user experiences renderable by the digital assistant; maintaining digital assistant extensibility services including at least one of i) language services that enable applications to use one or more different languages when rendering a user experience on the local device, ii) vocabulary services that enable applications to handle unknown words or phrases when rendering the user experience, iii) user preference services that enable applications to employ user preferences that are maintained by the digital assistant, or iv) context services that enable applications to utilize context-awareness when delivering services; and providing the digital assistant extensibility services to the one or more application extensions through the API exposed by the digital assistant extensibility client on the local device.
In another example, the digital assistant extensibility services and digital assistant extensibility client provide a platform supporting user experiences that are renderable on the local device across all the applications as a native digital assistant experience. In another example, the application extensions contain application-specific resources written to a manifest which is loaded into a runtime environment. In another example, the application extensions are authored by third party developers.
Based on the foregoing, it should be appreciated that technologies for digital assistant extensions have been disclosed herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological and transformative acts, specific computing machinery, and computer-readable storage media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts, and mediums are disclosed as example forms of implementing the claims.
The subject matter described above is provided by way of illustration only and should not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.
Claims
1. A method for implementing extensibility of a digital assistant operating on a device used by a user to one or more applications, comprising:
- operating the digital assistant to maintain context-awareness by monitoring user behaviors and interactions with the device;
- configuring an interface for interoperating with application-specific services exposed by application extensions associated with respective ones of the applications;
- receiving input from the device user;
- using the context-awareness to map the device user input to an application extension for handling; and
- receiving an application-specific service from the application extension in response to the device user inputs.
2. The method of claim 1 further including rendering the application-specific service so that user experiences across the applications are exposed to the device user as native digital assistant user experiences and whereby the application-specific service increases a size of a database of answers available to the digital assistant.
3. The method of claim 1 further including using contextual data when performing the mapping.
4. The method of claim 3 in which the contextual data comprises one or more of time/date, location of the user or device, language, schedule, applications installed on the device, user preferences, user behaviors, user activities, stored contacts, call history, messaging history, browsing history, device type, device capabilities, or communication network type.
5. The method of claim 1 further including providing extensibility services to the applications, the extensibility services including one or more of language services, vocabulary services, user preference services, or context services.
6. The method of claim 5 further including receiving portions of the extensibility services from a remote service provider.
7. The method of claim 6 further including supporting the interface with an extensibility client that is configured for interaction with the remote service provider.
8. The method of claim 1 further including loading application-specific resources from a manifest included in the application extension, the application-specific resources at least including keywords that are registered with the digital assistant.
9. The method of claim 1 in which the application extension further includes logic for implementing a user experience or a user interface using the digital assistant.
10. The method of claim 1 further including configuring the digital assistant, responsively to voice input, gesture input, or manual input for performing at least one of sharing contact information, sharing a stored contact, scheduling a meeting, looking at a user's calendar, scheduling a reminder, making a call, operating a device, playing games, making purchases, taking notes, scheduling an alarm or wake-up reminder, sending a message, checking social media for updates, scraping a website, interacting with a search service, sharing or showing files, sending a link to a website, or sending a link to a resource.
11. A device, comprising:
- one or more processors;
- a user interface (UI) for interacting with a user of the device using graphics and audio; and
- a memory device storing code associated with one or more applications and computer-readable instructions which, when executed by the one or more processors, cause the device to: expose a digital assistant on the device configured to maintain context-awareness for a device user by monitoring user behaviors and interactions with the device, the digital assistant further configured to interact with the device user using voice interactions through the UI, receive an input from the device user through the UI, use the context-awareness to deliver the input to an application extension for handling, the application extension being configured to deliver services from one or more applications that are related to the application extension into user experiences renderable by the digital assistant, and operate the digital assistant to render the services to the device user through the UI.
12. The device of claim 11 further including causing the device to expose one or more extensibility services to the application extension.
13. The device of claim 11 further including causing the device to enable the application extension to load application-specific resources from a manifest into a runtime environment for execution.
14. The device of claim 13 in which the application extension includes an event handler.
15. The device of claim 14 in which the application extension includes logic comprising one of script or programming construct.
16. The device of claim 11 further including causing the device to expose one or more databases associated with the one or more applications that are related to the application extension to the digital assistant using the application extension.
17. One or more computer-readable memory devices storing instructions which, when executed by one or more processors disposed in a computer server, cause the computer server to:
- interoperate with a digital assistant extensibility client on a local device, the digital assistant extensibility client exposing an application programming interface (API) to one or more application extensions being executable on the device, each of the application extensions being configured to deliver services from respective applications into user experiences renderable by a digital assistant;
- maintain digital assistant extensibility services including at least one of i) language services that enable applications to use one or more different languages when rendering a user experience on the local device, ii) vocabulary services that enable applications to handle unknown words or phrases when rendering the user experience, iii) user preference services that enable applications to employ user preferences that are maintained by the digital assistant, or iv) context services that enable applications to utilize context-awareness when delivering services; and
- provide the digital assistant extensibility services to the one or more application extensions through the API exposed by the digital assistant extensibility client on the local device wherein the digital assistant is configured to maintain context-awareness for a device user by monitoring user behaviors and interactions with the device, and wherein the context-awareness is used to deliver user input to the digital assistant to an application extension.
18. The one or more computer-readable memory devices of claim 17 in which the digital assistant extensibility services and digital assistant extensibility client provide a platform supporting user experiences that are renderable on the local device across all the applications as a native digital assistant experience.
19. The one or more computer-readable memory devices of claim 17 in which the application extensions contain application-specific resources written to a manifest which is loaded into a runtime environment.
20. The one or more computer-readable memory devices of claim 19 in which the application extensions are authored by third party developers.
Type: Application
Filed: May 14, 2015
Publication Date: Nov 17, 2016
Patent Grant number: 10133613
Inventors: Tanvi Surti (Seattle, WA), Michael Patten (Sammamish, WA), Sean Lyndersay (Sammamish, WA), Chee Chen Tong (Kirkland, WA)
Application Number: 14/712,364