IP Library Granted Patent US 11,385,910
Granted Patent B2
US 11,385,910 · App. 16/407,571 · Granted Jul 12, 2022

Stack-based communications systems and methods

Inventor: James Roy Bulpin (Cambridge, GB)
Assignee: Citrix Systems, Inc.
G06F9/451G06F9/546G06N3/004
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 11,385,910
App. No.
16/407,571
Granted
Jul 12, 2022
Kind
B2
Abstract

A stack-based conversation engine is provided. The conversation engine enables a voice or text based virtual assistant to create interactive, conversational experiences in an extensible manner. The conversation engine can be used to support a conversation between a user and a virtual assistant. The conversation engine can be configured to receive, from the virtual assistant, a fulfillment request specifying an intent from the virtual assistant; push an item onto a conversation stack stored, the item including an identifier of the intent; execute an action handler associated with the intent to generate instructions to manipulate the conversation stack; manipulate the conversation stack according to the instructions; and store the conversation stack for subsequent processing in support of the conversation.

Claims (70)

1. A computer system for supporting a conversation between a user and a virtual assistant, the computer system comprising:

a memory; and

at least one processor coupled to the memory to:

receive, from the virtual assistant, a fulfillment request specifying an intent requesting information and/or execution of an action;

push an item onto a conversation stack stored in the memory, wherein the item includes an identifier of the intent;

in response to determining that the received intent is not a generic user reply intent, determine that the intent matches an intent of a registered action handler;

receive, from the registered action handler, one or more instructions to manipulate the conversation stack, wherein the one or more instructions include an instruction to remove the item from the conversation stack;

manipulate the conversation stack in accordance with the one or more instructions; and

store the conversation stack in the memory for subsequent processing within the conversation.

2. The computer system of claim 1 , wherein the intent is a first intent, the item is a first item, and to manipulate the conversation stack comprises to push a second item onto the conversation stack, the second item including an identifier of a second intent, and the at least one processor is further configured to:

peek at the second item in the conversation stack to generate a response to the user regarding the second intent; and

transmit a fulfillment response to the virtual assistant, the fulfillment response comprising the response to the user.

3. The computer system of claim 2 , wherein the registered action handler is a first action handler and to peek comprises to execute a second action handler associated with the second item.

4. The computer system of claim 1 , wherein the fulfillment request comprises a full representation of the conversation stack.

5. The computer system of claim 1 , wherein the fulfillment request comprises a session identifier, and the at least one processor is further configured to store, in the memory, an association between the conversation stack and the session identifier.

6. The computer system of claim 1 , wherein the intent is a first intent, the fulfillment request is a first fulfillment request, and the at least one processor is further configured to:

receive a second fulfillment request comprising a second intent;

call the registered action handler with the second intent to determine whether the registered action handler can process the second intent; and

process a response message from the registered action handler.

7. The computer system of claim 6 , wherein the response message specifies a response to the user and at least one instruction to manipulate the conversation stack and the at least one processor is further configured to:

append the response to the user to another response to the user; and

manipulate the conversation stack in accordance with the at least one instruction.

8. The computer system of claim 6 , wherein the response message specifies no additional action and the at least one processor is further configured to take no additional action regarding the response message.

9. The computer system of claim 6 , wherein the item is a first item and the at least one processor is further configured to call the registered action handler to indicate that a second item will be placed atop the item prior to pushing the second item onto the conversation stack.

10. The computer system of claim 1 , wherein to execute the registered action handler comprises to generate a response to the user and the at least one processor is further configured to transmit a fulfillment response to the virtual assistant, the fulfillment response comprising the response to the user.

11. The computer system of claim 1 , wherein the at least one processor is further configured to execute the registered action handler, and to execute the registered action handler comprises to execute a programmatic action requested by the user.

12. The computer system of claim 1 , wherein the conversation stack comprises a plurality of items, individual items of the plurality having a respective position within the conversation stack.

13. The computer system of claim 12 , wherein:

to push the item onto the conversation stack comprises to push the item to occupy a topmost position within the conversation stack; and

to remove the item from the conversation stack is based on the item occupying the topmost position within the conversation stack prior to removal of the item from the conversation stack.

14. The computer system of claim 13 , wherein:

the conversation stack comprises a preceding item and the item;

to push the item to occupy the topmost position comprises to push the item above the preceding item; and

to remove the topmost item from the conversation stack comprises to remove the topmost item while the preceding item remains on the conversation stack.

15. A method of supporting a conversation between a virtual assistant and a user, the method comprising:

receiving, from the virtual assistant, a fulfillment request specifying an intent;

pushing an item onto a conversation stack stored in a memory, wherein the item includes an identifier of the intent;

in response to a determination that the received intent is not a generic user reply intent, determining that the intent matches an intent of a registered action handler;

receiving, from the registered action handler, a response message including a response to the user and one or more instructions to manipulate the conversation stack, wherein the one or more instructions include an instruction to remove the item from the conversation stack;

manipulating the conversation stack in accordance with the one or more instructions;

storing the conversation stack in the memory for subsequent processing within the conversation; and

transmitting a fulfillment response to the virtual assistant to continue the conversation, the fulfillment response comprising the response to the user.

16. The method of claim 15 , wherein the intent is a first intent, the item is a first item, and manipulating the conversation stack comprises pushing a second item onto the conversation stack, the second item including an identifier of a second intent and the method further comprises:

peeking at the second item in the conversation stack to generate an additional response to the user regarding the second intent; and

appending the additional response to the user to the response to the user.

17. The method of claim 16 , wherein the registered action handler is a first action handler and peeking comprises executing a second action handler associated with the second item.

18. The method of claim 15 , wherein the intent is a first intent, the fulfillment request is a first fulfillment request, and the method further comprises:

receiving a second fulfillment request comprising a second intent;

calling the registered action handler with the second intent to determine whether the registered action handler can process the second intent; and

processing another response message from the registered action handler.

19. The method of claim 18 , wherein the item is a first item and the method further comprises calling the registered action handler to indicate that a second item will be placed atop the first item prior to pushing the second item onto the conversation stack.

20. A non-transitory computer readable medium storing executable sequences of instructions to implement a conversation stack in a memory, the conversation stack snorting a conversation between a user and a virtual assistant, the sequences of instructions comprising instructions to:

receive, from the virtual assistant, a fulfillment request specifying an intent;

push an item onto the conversation stack stored in the memory, wherein the item includes an identifier of the intent;

in response to a determination that the received intent is not a generic user reply intent, determine that the intent matches an intent of a registered action handler;

receive, from the registered action handler, one or more instructions to manipulate the conversation stack, wherein the one or more instructions include an instruction to remove the item from the conversation stack;

manipulate the conversation stack in accordance with the one or more instructions;

store the conversation stack in the memory for subsequent processing within the conversation; and

transmit a fulfillment response to the virtual assistant.

21. The computer readable medium of claim 20 , wherein the intent is a first intent, the item is a first item, and to manipulate the conversation stack comprises to push a second item onto the conversation stack, the second item including an identifier of a second intent, and the sequences of instructions further include instructions to:

peek at the second item in the conversation stack to generate a response to the user regarding the second intent; and

store the response to the user in the fulfillment response.

22. The computer readable medium of claim 21 , wherein the registered action handler is a first action handler and to peek comprises to execute a second action handler associated with the second item.

23. A system comprising:

at least one virtual assistant device; and

a computing device in communication with the at least one virtual assistant device via a network, the computing device including a processor and a memory accessible by the processor, and configured to

receive information about an intent of a user for a communication received at the at least one virtual assistant device, the intent being identifiable based on a set of skills of the at least one virtual assistant device;

provide at least one item of data in a data structure of the memory, the at least one item of data representative of one context of a plurality of contexts for a given conversation between a user and the at least one virtual assistant device, and the data structure being constructed and arranged as a stack of items of data;

modify the data structure based on the received information, the modification of the data structure including at least one of a change in a number or position of items in the stack of items of data based on the intent of the user; and

provide a response to the user using the modified data structure, the response directed to one context of the plurality of contexts of the conversation based on one item of the data structure to prevent transmission of the response with an incorrect context.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2019
From: BULPIN, JAMES ROY
To: CITRIX SYSTEMS, INC.
Reel/Frame 049136/0648 →
Continuity (2)
Provisional Application 62806328 · Feb 15, 2019
Related Publication 20200264906A1 · Aug 20, 2020