IP Library › Granted Patent US 12,230,266
Granted Patent B1
US 12,230,266 · App. 17/957,270 · Granted Feb 18, 2025

Data routing in a multi-assistant context

Inventors: David Henry (New York, NY); Kenneth Chung Leung Chan (Burnaby, CA); Akshai Gopalakrishnan Prabhu (Toronto, CA); Yilin Zhu (North York, CA); Alain Soquet (Mialet, FR)
Assignee: Amazon Technologies, Inc.
G10L15/22G10L15/08G10L2015/088G10L2015/223
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 12,230,266
App. No.
17/957,270
Filed
Sep 30, 2022
Granted
Feb 18, 2025
Kind
B1
Art Unit
2692
USPC
704/275
Abstract

Techniques for routing data, in a system including multiple assistants, are described. A user device may store configuration data for a virtual assistant, where the configuration data includes a virtual assistant identifier, one or more resource identifiers, and optionally a virtual assistant name. A resource identifier may correspond to a component or device(s) of the virtual assistant. When the user device receives event data associated with a virtual assistant identifier, the user device may use stored configuration data to determine a resource identifier(s) associated with the virtual assistant identifier, associated with the event data. The user device may thereafter send the event data to the component and/or device(s) corresponding to the determined resource identifier(s).

Claims (86)

1. A computer-implemented method performed by a user device, the computer-implemented method comprising:

receiving, by the user device, first message request data including a first virtual assistant identifier, and first event data corresponding to the first message request data;

determining that the first virtual assistant identifier, included in the first message request data, is associated with a first resource identifier of a first component of a first virtual assistant using configuration data associating the first virtual assistant identifier, wherein the first virtual assistant identifier corresponds to the first virtual assistant of a set of virtual assistants supported by the user device;

generating first message data including the first event data;

after determining that the first virtual assistant identifier is associated with the first resource identifier, sending the first message data to the first component of the first virtual assistant,

after sending the first message data, receiving, from the first component of the first virtual assistant, first directive data associated with the first resource identifier;

using the configuration data to determine that the first virtual assistant identifier is associated with the first resource identifier associated with the first directive data;

after using the configuration data to determine that the first virtual assistant identifier is associated with the first resource identifier, generating second directive data associated with the first virtual assistant identifier; and

sending the second directive data to a source of the first message request data and the first event data.

2. The computer-implemented method of claim 1 , further comprising:

receiving second message request data including the first virtual assistant identifier, and second event data corresponding to the second message request data;

determining that the first virtual assistant identifier, included in the second message request data, is associated with a second resource identifier of a second component of the first virtual assistant using the configuration data, wherein the second component, of the first virtual assistant, is in communication with the user device over at least one network;

generating second message data including the second event data; and

after determining that the first virtual assistant identifier is associated with the second resource identifier, sending the second message data to the second component of the first virtual assistant.

3. The computer-implemented method of claim 1 , further comprising:

receiving, by the user device and from a second component in communication with the user device via at least one network, second directive data intended for the first virtual assistant;

identifying a routing rule associated with the first virtual assistant identifier, wherein the routing rule indicates a type of processing permitted to be performed by the first component of the first virtual assistant;

determining the second directive data corresponds to the type of processing permitted to be performed by the first component of the first virtual assistant; and

based on determining that the second directive data corresponds to the type of processing permitted to be performed by the first component of the first virtual assistant, sending the second directive data to the first component for processing.

4. The computer-implemented method of claim 1 , further comprising:

receiving a request to enable a second component to receive notification of a change in availability status of the first virtual assistant, wherein the request includes an identifier of the second component; and

based on receiving the request, storing an association between the first virtual assistant identifier and the identifier of the second component.

5. A computer-implemented method comprising:

receiving, by a user device, first event data associated with a first virtual assistant identifier;

using first configuration data stored by the user device for a first virtual assistant and including the first virtual assistant identifier and a first resource identifier for a first component of the first virtual assistant, determining that the first virtual assistant identifier, associated with the first event data, is associated with the first resource identifier; and

after using the first configuration data to determine that the first virtual assistant identifier is associated with the first resource identifier, sending the first event data to the first component for processing.

6. The computer-implemented method of claim 5 , wherein:

the first configuration data further includes a second resource identifier for a second component implementing a portion of functionality of the first virtual assistant;

the second component is in communication with the user device via at least one network; and

the first configuration data including the first resource identifier and the second resource identifier enables the first virtual assistant to be implemented partially by the user device and partially by the second component.

7. The computer-implemented method of claim 6 , further comprising:

receiving, by the user device, second event data associated with the first virtual assistant identifier;

using the first configuration data to determine that the first virtual assistant identifier, associated with the second event data, is associated with the first resource identifier and the second resource identifier; and

based on determining the first virtual assistant identifier is associated with the first resource identifier and the second resource identifier, sending the second event data to at least one of the first component and the second component for processing.

8. The computer-implemented method of claim 5 , further comprising:

receiving, by the user device and from a second component in communication with the user device via at least one network, directive data intended for the first virtual assistant;

identifying a routing rule associated with the first virtual assistant identifier, wherein the routing rule indicates a type of processing permitted to be performed by the first component of the first virtual assistant;

determining the directive data corresponds to the type of processing permitted to be performed by the first component of the first virtual assistant; and

based on determining that the directive data corresponds to the type of processing permitted to be performed by the first component of the first virtual assistant, sending the directive data to the first component for processing.

9. The computer-implemented method of claim 5 , further comprising:

receiving a request to enable a second component to receive notification of a change in availability status of the first virtual assistant, wherein the request includes an identifier of the second component; and

based on receiving the request, storing an association between the first virtual assistant identifier and the identifier of the second component.

10. The computer-implemented method of claim 5 , further comprising:

receiving input data requesting the first virtual assistant be disabled; and

based on receiving the input data, deleting the first configuration data from the user device.

11. The computer-implemented method of claim 5 , wherein the first configuration data further includes a virtual assistant name for the first virtual assistant, and wherein the computer-implemented method further comprises:

receiving input audio data corresponding to a spoken natural language user input including a wakeword;

determining the wakeword corresponds to the virtual assistant name; and

based on determining the wakeword corresponds to the virtual assistant name, determining that the spoken natural language user input is to be processed using at least one processing component of the first virtual assistant.

12. The computer-implemented method of claim 5 , further comprising:

storing, by the user device, second configuration data for a second virtual assistant, the second configuration data including:

a second virtual assistant identifier; and

a second resource identifier corresponding to a second component of the second virtual assistant.

13. A computing system comprising:

at least one processor; and

at least one memory comprising instructions that, when executed by the at least one processor, cause the computing system to:

receive, by a user device, first event data associated with a first virtual assistant identifier;

using first configuration data stored by the user device for a first virtual assistant and including the first virtual assistant identifier and a first resource identifier for a first component of the first virtual assistant, determine that the first virtual assistant identifier, associated with the first event data, is associated with the first resource identifier; and

after using the first configuration data to determine that the first virtual assistant identifier is associated with the first resource identifier, send the first event data to the first component for processing.

14. The computing system of claim 13 , wherein:

the first configuration data further includes a second resource identifier for a second component implementing a portion of functionality of the first virtual assistant;

the second component is in communication with the user device via at least one network; and

the first configuration data including the first resource identifier and the second resource identifier enables the first virtual assistant to be implemented partially by the user device and partially by the second component.

15. The computing system of claim 14 , wherein the at least one memory further comprises instructions that, when executed by the at least one processor, further cause the computing system to:

receive, by the user device, second event data associated with the first virtual assistant identifier;

using the first configuration data, determine that the first virtual assistant identifier, associated with the second event data, is associated with the first resource identifier and the second resource identifier; and

based on determining the first virtual assistant identifier is associated with the first resource identifier and the second resource identifier, send the second event data to at least one of the first component and the second component for processing.

16. The computing system of claim 13 , wherein the at least one memory further comprises instructions that, when executed by the at least one processor, further cause the computing system to:

receive, by the user device and from a second component in communication with the user device via at least one network, directive data intended for the first virtual assistant;

identify a routing rule associated with the first virtual assistant identifier, wherein the routing rule indicates a type of processing permitted to be performed by the first component of the first virtual assistant;

determine the directive data corresponds to the type of processing permitted to be performed by the first component of the first virtual assistant; and

based on determining that the directive data corresponds to the type of processing permitted to be performed by the first component of the first virtual assistant, send the directive data to the first component for processing.

17. The computing system of claim 13 , wherein the at least one memory further comprises instructions that, when executed by the at least one processor, further cause the computing system to:

receive a request to enable a second component to receive notification of a change in availability status of the first virtual assistant, wherein the request includes an identifier of the second component; and

based on receiving the request, store an association between the first virtual assistant identifier and the identifier of the second component.

18. The computing system of claim 13 , wherein the at least one memory further comprises instructions that, when executed by the at least one processor, further cause the computing system to:

receive input data requesting the first virtual assistant be disabled; and

based on receiving the input data, delete the first configuration data from the user device.

19. The computing system of claim 13 , wherein the first configuration data further includes a virtual assistant name for the first virtual assistant, and wherein the at least one memory further comprises instructions that, when executed by the at least one processor, further cause the computing system to:

receive input audio data corresponding to a spoken natural language user input including a wakeword;

determine the wakeword corresponds to the virtual assistant name; and

based on determining the wakeword corresponds to the virtual assistant name, determine that the spoken natural language user input is to be processed using at least one processing component of the first virtual assistant.

20. The computing system of claim 13 , wherein the at least one memory further comprises instructions that, when executed by the at least one processor, further cause the computing system to:

store, by the user device, second configuration data for a second virtual assistant, the second configuration data including:

a second virtual assistant identifier; and

a second resource identifier corresponding to a second component of the second virtual assistant.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2024
From: HENRY, DAVID; CHAN, KENNETH CHUNG LEUNG; PRABHU, AKSHAI GOPALAKRISHNAN; ZHU, YILIN; SOQUET, ALAIN
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 067248/0106 →
References Cited (46)
US 9721570B1 · Beal et al. · 2017 [cited by applicant]
US 10217453B2 · Stevans et al. · 2019 [cited by applicant]
US 10218651B2 · Schubert et al. · 2019 [cited by applicant]
US 10353906B2 · Souche et al. · 2019 [cited by applicant]
US 10706847B2 · Seo et al. · 2020 [cited by applicant]
US 10832681B1 · Jethva · 2020 [cited by applicant]
US 10909442B1 · Szarvas et al. · 2021 [cited by applicant]
US 10911910B2 · Park et al. · 2021 [cited by applicant]
US 11037556B2 · Rangarajan et al. · 2021 [cited by applicant]
US 11100923B2 · Fainberg et al. · 2021 [cited by applicant]
US 11152003B2 · O'Donovan · 2021 [cited by applicant]
US 11164570B2 · Nadkar et al. · 2021 [cited by applicant]
US 11188808B2 · Wang et al. · 2021 [cited by applicant]
US 11393474B2 · Lee et al. · 2022 [cited by applicant]
US 11455987B1 · Dabas et al. · 2022 [cited by applicant]
US 11538478B2 · Bobbili et al. · 2022 [cited by applicant]
US 11563815B2 · Shetty · 2023 [cited by applicant]
US 11727925B2 · Sharifi et al. · 2023 [cited by applicant]
US 11763809B1 · Bobbili et al. · 2023 [cited by applicant]
US 11783831B1 · Lantin et al. · 2023 [cited by applicant]
US 11973663B2 · Yarabolu et al. · 2024 [cited by applicant]
US 11984123B2 · Maury et al. · 2024 [cited by applicant]
US 11991253B2 · Kaplan · 2024 [cited by applicant]
US 12001614B2 · Udall et al. · 2024 [cited by applicant]
US 12052315B2 · Cosman et al. · 2024 [cited by applicant]
US 12057961B2 · Crettenand et al. · 2024 [cited by applicant]
US 12112001B1 · Shen et al. · 2024 [cited by applicant]
US 12130847B2 · Koneru et al. · 2024 [cited by applicant]
US 12142298B1 · Kottur et al. · 2024 [cited by applicant]
US 20150242760A1 · Miao et al. · 2015 [cited by applicant]
US 20180204569A1 · Nadkar et al. · 2018 [cited by applicant]
US 20180293484A1 · Wang et al. · 2018 [cited by applicant]
US 20190332400A1 · Spoor et al. · 2019 [cited by applicant]
US 20210357496A1 · Lewis · 2021 [cited by examiner]
US 20220129556A1 · Chen et al. · 2022 [cited by applicant]
US 20220157323A1 · Verma et al. · 2022 [cited by applicant]
US 20220245606A1 · Chauhan et al. · 2022 [cited by applicant]
US 20230050655A1 · Song et al. · 2023 [cited by applicant]
US 20230131099A1 · Anamandra et al. · 2023 [cited by applicant]
US 20230179855A1 · Liu et al. · 2023 [cited by applicant]
US 20230297849A1 · Cheng et al. · 2023 [cited by applicant]
US 20230298593A1 · Ramos et al. · 2023 [cited by applicant]
US 20240021205A1 · Singh et al. · 2024 [cited by applicant]
US 20240086461A1 · Varakin · 2024 [cited by applicant]
US 20240146776A1 · Hansen et al. · 2024 [cited by applicant]
U.S. Non-Final Office Action issued on Jan. 2, 2025 for U.S. Appl. No. 17/957,271. [cited by applicant]
Cited By (1)
US 12,488,787