botframework-sdk
botframework-sdk copied to clipboard
Spec: how skills can persist conversation state across multiple invocations
Issue
Today when you invoke a skill, each skill invocation gets a unique Conversation ID. That means there's no simple way of persisting state across skill invocations. I'm currently working around this issue by passing in a shared "skill" memory bag that my skills can persist shared information into. The issues with my current approach are:
1 - a skills state is now visible to other skills which may be desirable but may also not be desirable. 2 - you can't just flip a switch on every bot and have it work properly as a skill.
The current behavior of isolating each invocation to its own conversation is still useful and for safety reasons maybe should continue to be the default. I propose that we add a setting of some sort to let the developer decide if they'd like to use a shared conversation state across all invocations of a skill. This setting would cause the DialogManager
to use the relatesTo.conversation.id
Conversation ID for persisting conversation state if it's available.
Proposed change
TODO: We need to create a design for this change so we fully understand the impact to the different componetns.
Component Impact
- BF SDK (all platforms)
- Composer
Customer Impact
Describe the impact on customers
Tracking Status
Dotnet SDK TODO
- [ ] PR
- [ ] Merged
Javascript SDK TODO
- [ ] PR
- [ ] Merged
Python SDK TODO
- [ ] PR
- [ ] Merged
Java SDK TODO
- [ ] PR
- [ ] Merged
Samples TODO
- [ ] PR
- [ ] Merged
Docs TODO
- [ ] PR
- [ ] Merged
Tools TODO
- [ ] PR
- [ ] Merged