Description
openedon Nov 11, 2022
Versions
Describe the bug
SkillDialog
attempts to save conversation state when all activities are forwarded to the skill.
botbuilder-js/libraries/botbuilder-dialogs/src/skillDialog.ts
Lines 264 to 267 in b1a27a1
This means that informational but not necessarily actionable activities such as Typing activities trigger state saves.
Human Handoff scenario
Typing activities should continue to be forwarded to skill, in case the skill acts as a middleman and routes typing activities to a human agent who is speaking with the end-user.
E.g.
sequenceDiagram
participant Customer's Web Chat
Note right of Customer's Web Chat: Web Chat instance<br/>is configured to send Typing activities
participant Root bot
participant Skill bot
participant Human agent
Customer's Web Chat-->>Root bot: Customer says: <br/> "Escalate to agent"
Root bot-->>Skill bot: Begin handoff
Skill bot-->>Human agent: Customer seeking agent
Human agent-->>Customer's Web Chat: Human agent says<br/> "Hello, how can I help you today?"
Note right of Customer's Web Chat: Customer begins typing for 12 seconds
Customer's Web Chat-->>Root bot: Web Chat sends<br/>a 3 second debounced Typing activities<br/>to Root bot, etc.
Which leads to four attempts by the Root bot
trying to save the state while trying to send four typing activities to the Skill bot
.
These typing activities should be forwarded to the human agent, but there are no meaningful state changes in either bot whilst the customer is speaking to the agent.
Additionally, by saving state whilst sending Typing activities to storage can lead to 404s and/or 412s depending on the stoage provider.
Note: Loading state is still necessary as otherwise the root bot would not be able to send the Typing activity to the skill.
Additional context
Any changes needs to be ported to the other SDK languages as well.