botframework-sdk icon indicating copy to clipboard operation
botframework-sdk copied to clipboard

Spec: how skills can persist conversation state across multiple invocations

Open Stevenic opened this issue 4 years ago • 0 comments

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

Stevenic avatar Jul 15 '20 19:07 Stevenic