microsoft / BotFramework-Composer

Dialog creation and management for Microsoft Bot Framework Applications
https://docs.microsoft.com/en-us/composer/
MIT License
867 stars 370 forks source link

does not match memory scopes error in bot composer with multiturn implementation #9500

Closed smithah closed 1 year ago

smithah commented 1 year ago

Getting an error message does not match memory scopes error in bot composer with multiturn implementation. Multiturn is working but getting this error each time the dialog executes. Please let me know how to handle this error in bot composer.

smithah commented 1 year ago

The error message is as below:

//////// We ran into a problem executing your composer dialog. 'Menu' does not match memory scopes:[turn,settings,dialog,dialogContext,dialogclass,class,this,conversation,user,virtualagentcontext,virtualagent]

Parameter name: key

Sent at January 28 at 8:09 AM

Bot true said: Sorry, the bot can't talk for a while. It's something the bot's owner needs to address. Error code: 2023. Conversation ID: 9S8bmRW9uVv25j7VQUyiel-in. Time (UTC): 1/28/2023 2:39:57 AM. 'Menu' does not match memory scopes:[turn,settings,dialog,dialogContext,dialogclass,class,this,conversation,user,virtualagentcontext,virtualagent] Parameter name: key

Bot true said:

Sorry, the bot can't talk for a while. It's something the bot's owner needs to address. Error code: 2023. Conversation ID: 9S8bmRW9uVv25j7VQUyiel-in. Time (UTC): 1/28/2023 2:39:57 AM. 'Menu' does not match memory scopes:[turn,settings,dialog,dialogContext,dialogclass,class,this,conversation,user,virtualagentcontext,virtualagent]

Parameter name: key

////// errormsg

dmvtech commented 1 year ago

Hi @smithah Are you using Menu as an top level memory scope/bucket?

smithah commented 1 year ago

The error occurs at the Prompt for text activity in Bot Composer, where i am setting the User Input v to an already defined property to expression =conversation.policy where i am using that, conversation.policy value in a http request. If i remove equals sign in Prompt for text User expression then the error doesn't occur, but multi-turn doesn't work. Here 'Menu' is the user input selection choice from a list of hero card options which i am storing it in =conversation.policy in User Input tab of Prompt text.

smithah commented 1 year ago

multiturnerror

Getting the error where i have set a property =conversation.policy , highlighted in the above image. The same conversation.policy has been used elsewhere in the code.

How do i update the same property value across the dialog flows ?

smithah commented 1 year ago

If i remove the equals sign "=" from the converstaion.policy in the above image, then the error is not seen, but the multiturn doesn't go work. Is there any reference topic where how to implement a multiturn is described ?

dmvtech commented 1 year ago

If i remove the equals sign "=" from the converstaion.policy in the above image, then the error is not seen,

Ah, gotcha! Yeah, the = you will only want to use when resolving an expression. To assign to a property, you want to use the scoped property without it.

but the multiturn doesn't go work. Is there any reference topic where how to implement a multiturn is described ?

Can you please clarify on this point? What is exactly happening? The value in ${turn.activity.text} will be used in place of what a user is prompted for. Is that the intended goal? If not, leave that property blank.

smithah commented 1 year ago

The flow is: 1) Displaying multiple options as buttons in Adaptive Cards. 2) When user clicks on one of the option button, , then it queries the Custom Question Answering via a HTTP request to pull up the relevant answer with the option, which is ${turn.activity.text} as the question for Custom Question Answering. 3) The response from the request, is again displayed again as a set of buttons with Adaptive Cards along with a Menu button to return to main menu again. So this continues. 4)Here i want to assign each clicked option to the conversation.policy variable to use it back in the HTTP request, only if i use =converstion.policy it returns back to the beginning of the dialog again.But if i remove = the dialog ends after click of any of the button option , displaying it once.

Are you referring to the multiple turns that the user has to enter a valid response? -- User clicks on the button options which is fed as question to HTTP request of Custom Question Answering.

Are you using validation? No If so, what is the validation rule? N/A How many turns are you allowing? Default 3 is set.

smithah commented 1 year ago

This issue is solved, creation of multiple dialogs solved it.

smithah commented 1 year ago

Reference : Helps in multiturn cases

https://github.com/microsoft/BotFramework-Composer/issues/5574 https://github.com/microsoft/BotFramework-Composer/issues/5687