IP Library Granted Patent US 10,297,253
Granted Patent B2
US 10,297,253 · App. 15/269,728 · Granted May 21, 2019

Application integration with a digital assistant

Inventors: Robert A. Walker, II (Cupertino, CA); Brandon J. Newendorp (Cupertino, CA); Rohit Dasari (Cupertino, CA); Richard D. Giuli (Cupertino, CA); Thomas R. Gruber (Emerald Hills, CA); Carey E. Radebaugh (Cupertino, CA); Ashish Garg (Bellevue, WA); Vineet Khosla (Cupertino, CA); Jonathan H. Russell (San Francisco, CA); Corey Peterson (Cupertino, CA)
Assignee: Apple Inc.
G10L15/22G10L13/02G10L15/1815G06F17/279G10L15/063G10L15/30G10L2015/223G10L2015/228
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,297,253
App. No.
15/269,728
Granted
May 21, 2019
Kind
B2
Abstract

Systems and processes for application integration with a digital assistant are provided. In accordance with one example, a method includes, at an electronic device having one or more processors and memory, receiving a natural-language user input; identifying, with the one or more processors, an intent object of a set of intent objects and a parameter associated with the intent, where the intent object and the parameter are derived from the natural-language user input. The method further includes identifying a software application associated with the intent object of the set of intent objects; and providing the intent object and the parameter to the software application.

Claims (165)

1. An electronic device, comprising:

one or more processors;

a memory; and

one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for:

receiving a natural-language user input;

identifying, with the one or more processors, an intent object of a set of intent objects and a parameter associated with the intent object, wherein the intent object is derived from the natural-language user input;

identifying a software application associated with the intent object of the set of intent objects;

providing the intent object and the parameter to the software application;

confirming the intent object with the software application, wherein confirming the intent object with the software application includes requesting a notification that the software application can successfully perform a task corresponding to the intent object; and

after confirming the intent object with the software application, causing the software application to perform the task corresponding to the intent object.

2. The electronic device according to claim 1 , wherein the one or more programs further include instructions for:

receiving a response from the software application, wherein the response is indicative of whether the parameter is valid.

3. The electronic device according to claim 2 , wherein receiving a response from the software application comprises:

receiving, from the software application, a disambiguation list associated with the parameter, wherein the disambiguation list includes a plurality of candidate parameters.

4. The electronic device according to claim 3 , wherein the one or more programs further include instructions for:

outputting the disambiguation list;

receiving a user input indicative of a selection of a candidate parameter value of the disambiguation list; and

providing the selected candidate parameter value of the disambiguation list to the software application.

5. The electronic device according to claim 1 , wherein the natural-language user input is a first natural-language input and the parameter is a first parameter, wherein the one or more programs further include instructions for:

receiving, from the software application, a request for a second parameter associated with the intent object;

providing a natural-language query based on the request;

receiving a second natural-language user input;

identifying the second parameter, wherein the second parameter is derived from the second natural-language user input; and

providing the second parameter to the software application.

6. The electronic device according to claim 5 , wherein the electronic device further comprises an audio output component, and wherein providing the natural-language query comprises speaking, via speech synthesis, the natural-language query through the audio output component.

7. The electronic device according to claim 5 , wherein providing the natural-language query comprises providing the natural-language query based on a type of the electronic device, a state of the electronic device, or a combination thereof.

8. The electronic device according to claim 1 , wherein the one or more programs further include instructions for:

after providing the intent object and the parameter to the software application, receiving, from the software application, a result response associated with the intent object.

9. The electronic device according to claim 8 , wherein receiving a result response comprises:

receiving, from the software application, a set of response items associated with the intent object; and

outputting the set of response items.

10. The electronic device according to claim 9 , wherein the one or more programs further include instructions for:

providing, to the software application, a set of view controller parameters; and

receiving, from the software application, a set of view controller parameter values corresponding to the set of view controller parameters,

wherein outputting the set of response items comprises displaying the set of response items in a user interface based on the received view controller parameter values.

11. The electronic device according to claim 1 , wherein each intent object of the set of intent objects is associated with the software application.

12. The electronic device according to claim 1 , wherein the intent object is a first intent object and wherein the parameter is associated with the first intent object and not associated with a second intent object.

13. The electronic device according to claim 1 , wherein the one or more programs further include instructions for:

determining whether the electronic device is in a lock state; and

in accordance with a determination that the device is in the lock state, determining whether the intent object is allowed to be provided to the software application while the electronic device is in the lock state,

wherein the intent object and the parameter are provided to the software application only in accordance with a determination that the intent object is allowed to be provided to the software application while the electronic device is in the lock state.

14. The electronic device according to claim 1 , wherein the parameter is derived from the natural-language user input by analyzing the natural-language user input using each of a plurality of detectors.

15. The electronic device according to claim 1 , wherein the one or more programs further include instructions for:

determining a user context of the electronic device;

wherein the parameter is based at least in part on the user context.

16. The electronic device according to claim 1 , wherein the one or more programs further include instructions for:

requesting a confirmation of the parameter; and

receiving a user input corresponding to the confirmation of the parameter, wherein the parameter is provided to the software application in response to receiving the user input.

17. The electronic device according to claim 1 , wherein identifying the software application comprises:

determining whether the software application resides on the electronic device;

in accordance with a determination that the software application does not reside on the electronic device, determining whether the software application resides on an external device that is in communication with the electronic device; and wherein providing the intent object and the parameter to the software application comprises:

in accordance with a determination that the software application resides on an external device that is in communication with the electronic device:

providing the intent object and the parameter to the software application by providing the intent object and the parameter to the external device.

18. The electronic device according to claim 1 , wherein identifying the software application comprises:

determining whether the software application resides on the electronic device;

in accordance with a determination that the software application does not reside on the electronic device:

identifying a set of software applications associated with the intent object;

displaying, in a user interface, the set of software applications associated with the intent object;

receiving a user input including a selection of one or more software applications of the set of software applications associated with the intent object; and

accessing the selected one or more software applications of the set of software applications associated with the intent object.

19. The electronic device according to claim 1 , wherein identifying a software application associated with the intent object of the set of intent objects comprises identifying the software application based on the parameter.

20. The electronic device according to claim 1 , wherein the one or more programs further include instructions for:

identifying, based on the natural-language user input, a third intent object from the set of intent objects;

identifying, based on the identified third intent object, a second software application;

providing the third intent object and at least one response item to the second software application; and

receiving, from the second software application, a second response item associated with the third intent object.

21. The electronic device according to claim 1 , wherein the software application is a first software application, and wherein providing the intent object and the parameter to the software application comprises:

causing a third software application to provide the intent object and the parameter to the first software application.

22. The electronic device according to claim 1 , wherein receiving a natural-language user input comprises:

receiving a natural-language user input including an application-specific term; and

wherein identifying a software application associated with the intent object of the set of intent objects comprises:

identifying the software application based on the application-specific term.

23. The electronic device according to claim 1 , wherein the one or more programs further include instructions for:

receiving a command including an identification of the software application; and

in response to the command, determining whether the software application is permitted to access data associated with the intent object.

24. A non-transitory computer-readable storage medium storing one or more programs, the one or more programs comprising instructions, which when executed by one or more processors of an electronic device, cause the electronic device to:

receive a natural-language user input;

identify, with the one or more processors, an intent object of a set of intent objects and a parameter associated with the intent object, wherein the intent is derived from the natural-language user input;

identify a software application associated with the intent object of the set of intent objects;

provide the intent object and the parameter to the software application;

confirm the intent object with the software application, wherein confirming the intent object with the software application includes requesting a notification that the software application can successfully perform a task corresponding to the intent object; and

after confirming the intent object with the software application, causing the software application to perform the task corresponding to the intent object.

25. The non-transitory computer-readable storage medium according to claim 19 , wherein the one or more programs further include instructions which when executed by one or more processors of an electronic device, cause the electronic device to:

receive a response from the software application, wherein the response is indicative of whether the parameter is valid.

26. The non-transitory computer-readable storage medium according to claim 25 , wherein receiving a response from the software application comprises:

receiving, from the software application, a disambiguation list associated with the parameter, wherein the disambiguation list includes a plurality of candidate parameters.

27. The non-transitory computer-readable storage medium according to claim 26 , wherein the one or more programs further include instructions which when executed by one or more processors of an electronic device, cause the electronic device to:

output the disambiguation list;

receive a user input indicative of a selection of a candidate parameter value of the disambiguation list; and

provide the selected candidate parameter value of the disambiguation list to the software application.

28. The non-transitory computer-readable storage medium according to claim 19 , wherein the natural-language user input is a first natural-language input and the parameter is a first parameter, wherein the one or more programs further include instructions which when executed by one or more processors of an electronic device, cause the electronic device to:

receive, from the software application, a request for a second parameter associated with the intent object;

provide a natural-language query based on the request;

receive a second natural-language user input;

identify the second parameter, wherein the second parameter is derived from the second natural-language user input; and

provide the second parameter to the software application.

29. The non-transitory computer-readable storage medium according to claim 19 , wherein the one or more programs further include instructions which when executed by one or more processors of an electronic device, cause the electronic device to:

determine whether the electronic device is in a lock state; and

in accordance with a determination that the device is in the lock state, determine whether the intent object is allowed to be provided to the software application while the electronic device is in the lock state,

wherein the intent object and the parameter are provided to the software application only in accordance with a determination that the intent object is allowed to be provided to the software application while the electronic device is in the lock state.

30. The non-transitory computer-readable storage medium according to claim 19 , wherein the one or more programs further include instructions which when executed by one or more processors of an electronic device, cause the electronic device to:

request a confirmation of the parameter; and

receive a user input corresponding to the confirmation of the parameter, wherein the parameter is provided to the software application in response to receiving the user input.

31. The non-transitory computer-readable storage medium according to claim 19 , wherein identifying the software application comprises:

determining whether the software application resides on the electronic device;

in accordance with a determination that the software application does not reside on the electronic device, determining whether the software application resides on an external device that is in communication with the electronic device; and wherein providing the intent object and the parameter to he software application comprises:

in accordance with a determination that the software application resides on an external device that is in communication with the electronic device:

providing the intent object and the parameter to the software application by providing the intent object and the parameter to the external device.

32. The non-transitory computer-readable storage medium according to claim 19 , wherein identifying the software application comprises:

determining whether the software application resides on the electronic device;

in accordance with a determination that the software application does not reside on the electronic device:

identifying a set of software applications associated with the intent object;

displaying, in a user interface, the set of software applications associated with the intent object;

receiving a user input including a selection of one or more software applications of the set of software applications associated with the intent object; and

accessing the selected one or more software applications of the set of software applications associated with the intent object.

33. The non-transitory computer-readable storage medium according to claim 19 , wherein the software application is a first software application, and wherein providing the intent object and the parameter to the software application comprises:

causing a third software application to provide the intent object and the parameter to the first software application.

34. The non-transitory computer-readable storage medium according to claim 19 , wherein the one or more programs further include instructions which when executed by one or more processors of an electronic device, cause the electronic device to:

receive a command including an identification of the software application; and

in response to the command, determine whether the software application is permitted to access data associated with the intent object.

35. The non-transitory computer-readable storage medium according to claim 19 , wherein the one or more programs further include instructions which when executed by one or more processors of an electronic device, cause the electronic device to:

receive a response from the software application, wherein the response is indicative of whether the parameter is valid.

36. A method, comprising:

at an electronic device having one or more processors:

receiving a natural-language user input;

identifying, with the one or more processors, an intent object of a set of intent objects and a parameter associated with the intent object, wherein the intent object is derived from the natural-language user input;

identifying a software application associated with the intent object of the set of intents objects;

providing the intent object and the parameter to the software application;

confirming the intent object with the software application, wherein confirming the intent object with the software application includes requesting a notification that the software application can successfully perform a task corresponding to the intent object; and

after confirming the intent object with the software application, causing the software application to perform the task corresponding to the intent object.

37. The method according to claim 36 , wherein receiving a response from the software application comprises:

receiving, from the software application, a disambiguation list associated with the parameter, wherein the disambiguation list includes a plurality of candidate parameters.

38. The method according to claim 37 , further comprising:

outputting the disambiguation list;

receiving a user input indicative of a selection of a candidate parameter value of the disambiguation list; and

providing the selected candidate parameter value of the disambiguation list to the software application.

39. The method according to claim 38 , wherein the natural-language user input is a first natural-language input and the parameter is a first parameter, further comprising:

receiving, from the software application, a request for a second parameter associated with the intent object;

providing a natural-language query based on the request;

receiving a second natural-language user input;

identifying the second parameter, wherein the second parameter is derived from the second natural-language user input; and providing the second parameter to the software application.

40. The method according to claim 36 , further comprising:

determining whether the electronic device is in a lock state; and

in accordance with a determination that the device is in the lock state, determining whether the intent object is allowed to be provided to the software application while the electronic device is in the lock state,

wherein the intent object and the parameter are provided to the software application only in accordance with a determination that the intent object is allowed to be provided to the software application while the electronic device is in the lock state.

41. The method according to claim 36 , further comprising:

requesting a confirmation of the parameter; and

receiving a user input corresponding to the confirmation of the parameter, wherein the parameter is provided to the software application in response to receiving the user input.

42. The method according to claim 36 , wherein identifying the software application comprises:

determining whether the software application resides on the electronic device;

in accordance with a determination that the software application does not reside on the electronic device, determining whether the software application resides on an external device that is in communication with the electronic device; and wherein providing the intent object and the parameter to the software application comprises:

in accordance with a determination that the software application resides on an external device that is in communication with the electronic device:

providing the intent object and the parameter to the software application by providing the intent object and the parameter to the external device.

43. The method according to claim 36 , wherein identifying the software application comprises:

determining whether the software application resides on the electronic device;

in accordance with a determination that the software application does not reside on the electronic device:

identifying a set of software applications associated with the intent object;

displaying, in a user interface, the set of software applications associated with the intent object;

receiving a user input including a selection of one or more software applications of the set of software applications associated with the intent object; and

accessing the selected one or more software applications of the set of software applications associated with the intent object.

44. The method according to claim 36 , wherein the software application is a first software application, and wherein providing the intent object and the parameter to the software application comprises:

causing a third software application to provide the intent object and the parameter to the first software application.

45. The method according to claim 36 , further comprising

receiving a command including an identification of the software application; and

in response to the command, determining whether the software application is permitted to access data associated with the intent object.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 23, 2016
From: WALKER, II, ROBERT A.; NEWENDORP, BRANDON J.; DASARI, ROHIT; GIULI, RICHARD D.; GRUBER, THOMAS R.; RADEBAUGH, CAREY E.; GARG, ASHISH; KHOSLA, VINEET; RUSSELL, JONATHAN H.; PETERSON, COREY
To: APPLE INC.
Reel/Frame 040679/0361 →
Continuity (2)
Provisional Application 62348929 · Jun 11, 2016
Related Publication 20170358303A1 · Dec 14, 2017
Cited By (39)
US 12,197,712 US 12,197,817 US 12,200,297 US 12,204,932 US 12,211,502 US 12,216,894 US 12,219,314 US 12,223,282 US 12,236,952 US 12,254,887 US 12,260,234 US 12,277,954 US 12,293,203 US 12,293,763 US 12,293,764 US 12,301,635 US 12,333,404 US 12,361,943 US 12,367,879 US 12,379,894 US 12,380,281 US 12,380,876 US 12,386,434 US 12,386,491 US 12,394,412 US 12,431,128 US 12,477,470 US 12,548,568 US 12,556,890 US 12,567,415 US 12,608,171 US 12,613,621 US 12,613,730 US 12,619,452 US 12,620,179 US 12,640,142 US 12,640,151 US 12,670,639 US 12,675,839