Adaptive ForEachElement loop's incorrectly when changes cause ContinueDialogAsync to be recalled
Version
c# 4.16.1
Describe the bug
When looping using the ForEachElement, if something causes changes the ForEachElement runs the first action in its actions list rather the continuing with the next.
To Reproduce
Use the ForEachElement with > 1 loops In the Actions Property Ask a question Begin Dialog where the dialog is an adaptive dialog, and its action causes change (for example use EditAction) Show a message when the dialog starts Show the result of Question
Run the bot, notice on the 2nd time around the loop it jumps back to first action in its actions list
Expected behavior
Each loop of the ForEachElement should carry out each action sequentially
Additional context
Just guessing, but because action changes cause ContinueDialogAsync to be recursively called the 'childDialogState' can get out of sync when the final pop of recursion returns from ContinueDialogAsync. Is the fix to reacquire the 'childDialogState' after ?
Attached is Simple Bot that shows it going wrong
Thanks for the issue details and repro project. We have some fixes for an issue related to this in the main branch here Handle DialogEvents.RepromptDialog in ForEachElement that will be part of an upcoming release. We will use your sample to test this and see if it will solve this issue.
Thanks for the issue details and repro project. We have some fixes for an issue related to this in the main branch here Handle DialogEvents.RepromptDialog in ForEachElement that will be part of an upcoming release. We will use your sample to test this and see if it will solve this issue.
Looks like this issue was reported against Bot Framework DotNet SDK 4.16.1 which includes the fix you're referring to but this issue is still broken
@Rich-biomni - Unfortunately, I am unable to test using your Simplebot project. I am getting dependency errors related to the BotFramework Solutions library you have included that I am unable to get around. The library was marked as obscelete on Mar 31, 2022 and is no longer supported. Additionally, its docs state the same while adding that there is no guarantee it will work if used beyond v4.9.1 of the SDK.
Would you be able to provide a more stipped down version of your bot (or just a new project) that focuses on and reproduces the error?
@Rich-biomni - Thank you for the updated project. I have it working now, without issue, using a local build of the SDK. I have started testing and will let you know what I find. I've found a couple curiosities, but I haven't had a chance to dig into them just yet. I will let you know what I find when I know more.
@Rich-biomni - I was able to repro the issue using your sample. Unfortunately, I was unable to find a simple solution / workaround to help mitigate this for you.
Escalating to @ceciliaavila for continued support on this.
Is this repeatable in 4.17.1?
@tracyboehrer
Issue exists in 4.17.1 as well
This PR for this was reverted due to a breaking change. We will need to revisit.
Notes for SDK: This breaks Bot Designers (PVA) "SlotFillingTest" and some "IntentSwitchingTests". We will need to extract the tests to reproduce outside PVA.
This PR for this was reverted due to a breaking change. We will need to revisit.
Notes for SDK: This breaks Bot Designers (PVA) "SlotFillingTest" and some "IntentSwitchingTests". We will need to extract the tests to reproduce outside PVA.
Hi @tracyboehrer, the reverted PR was related to another issue (#6430). Which issue is causing problems with PVA?
Ah. I reopen the other then and reclose this.
I don't have the exact steps to reproduce outside PVA yet. Since you don't have access to that code, we'll have to bring those tests into SDK somehow.