Welcome to the Bot Framework SDK for JavaScript repository, which is the home for the libraries and packages that enable developers to build sophisticated bot applications using JavaScript.
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.
Versions
SDK version 4.8.x to Latest
Describe the bug
SkillDialog
attempts to save conversation state when all activities are forwarded to the skill.https://github.com/microsoft/botbuilder-js/blob/b1a27a1a5b756660786ff086f10b9aab86a7692a/libraries/botbuilder-dialogs/src/skillDialog.ts#L264-L267
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.
Which leads to four attempts by the
Root bot
trying to save the state while trying to send four typing activities to theSkill 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.