“The given key was not present in the dictionary.” error when ending dialog
Im using botframework 4 (c#) together with Qnamaker to make a qnabot. I want the bot to go through give alternative questions if qna-service returns more than 1 answer.
So I've made a dialog that does that. However then it goes through the steps and comes to the end and I call context.EndDialogAsync() it throws an "The given key was not present in the dictionary."-error.
If I type something into the chat after this it will run the dialog-step over again and rinse and repeat.
Anyone got any ideas what might be the issue? Im willing to the code I just don't know code that could be causing the error.
Im trying to follow this example as much as possible: https://github.com/Microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/51.cafe-bot
One difference is I couldn't get the bot to find my Dialog if I added it to in the MainDispatcher like they have done in the example (it couldn't find it). If I however added it to the "class" : IBot it worked. Could it be related?
Appreciate any help or tips on how I can debug this, thanks!
This sets up the dialog and all the steps in the waterfall works until I get to the last one and try to call EndDialogAsync.
public OptionsDialog(IStatePropertyAccessor<QnaProperty> qnaAccessors, IEnumerable<WaterfallStep> steps = null, string dialogId = null)
: base(Name)
{
QnAAccessor = qnaAccessors ?? throw new ArgumentNullException(nameof(qnaAccessors));
var waterfallStepsOptions = new WaterfallStep
{
PromptQuestionAsync,
WriteAnswerAsync,
HelpfulResponseAsync,
};
AddDialog(new WaterfallDialog(WaterfallStepsName, waterfallStepsOptions));
ChoicePrompt choice = new ChoicePrompt(QuestionPromptName);
choice.Style = ListStyle.SuggestedAction;
AddDialog(choice);
AddDialog(new ChoicePrompt(HelpfulPromptName));
}
Last waterfall step:
private async Task<DialogTurnResult> HelpfulResponseAsync(WaterfallStepContext stepContext,
CancellationToken cancellationToken)
{
var answer = (stepContext.Result as FoundChoice).Value;
if (answer == "Yes")
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Great!"), cancellationToken);
}
else
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Maybe try rephrasing your question else here's a link to the documentation: LINK"), cancellationToken);
}
return await stepContext.EndDialogAsync(cancellationToken);
}
The dialog thats starts this dialog looks like this:
public MainDialog(BotServices services, ConversationState conversationState, string dialogId = null)
: base(Name)
{
_services = services ?? throw new ArgumentNullException(nameof(services));
_qnaAccessor = conversationState.CreateProperty<QnaProperty>(QnaProperty);
_dialogAccessor = conversationState.CreateProperty<DialogState>(DialogProperty);
_dialogs = new DialogSet(_dialogAccessor);
}
public override async Task<DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null,
CancellationToken cancellationToken = default(CancellationToken))
{
var response = await _services.QnAServices[QnaConfiguration].GetAnswersAsync(dc.Context);
var qnaProperty = await _qnaAccessor.GetAsync(dc.Context, () => new QnaProperty(response));
//var qnaProperty = await _qnaAccessor.SetAsync(dc.Context, response, cancellationToken);
if (response != null && response.Length > 1)
{
return await dc.BeginDialogAsync(OptionsDialog.Name, cancellationToken);
}
else if (response != null && response.Length == 1)
{
await dc.Context.SendActivityAsync(response[0].Answer, cancellationToken: cancellationToken);
}
else
{
var msg = @"No QnA Maker answers were found.";
await dc.Context.SendActivityAsync(msg, cancellationToken: cancellationToken);
}
return await dc.EndDialogAsync(cancellationToken);
}
EDIT:
It seems to work when I moved the logic from MainDispatcher Dialog to just the IBot class instead, so Im assuming maybe the issue is with finding the dialog when it's instantiated in the Ibot class instead of the maindialog. Maybe?
c# botframework
|
show 2 more comments
Im using botframework 4 (c#) together with Qnamaker to make a qnabot. I want the bot to go through give alternative questions if qna-service returns more than 1 answer.
So I've made a dialog that does that. However then it goes through the steps and comes to the end and I call context.EndDialogAsync() it throws an "The given key was not present in the dictionary."-error.
If I type something into the chat after this it will run the dialog-step over again and rinse and repeat.
Anyone got any ideas what might be the issue? Im willing to the code I just don't know code that could be causing the error.
Im trying to follow this example as much as possible: https://github.com/Microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/51.cafe-bot
One difference is I couldn't get the bot to find my Dialog if I added it to in the MainDispatcher like they have done in the example (it couldn't find it). If I however added it to the "class" : IBot it worked. Could it be related?
Appreciate any help or tips on how I can debug this, thanks!
This sets up the dialog and all the steps in the waterfall works until I get to the last one and try to call EndDialogAsync.
public OptionsDialog(IStatePropertyAccessor<QnaProperty> qnaAccessors, IEnumerable<WaterfallStep> steps = null, string dialogId = null)
: base(Name)
{
QnAAccessor = qnaAccessors ?? throw new ArgumentNullException(nameof(qnaAccessors));
var waterfallStepsOptions = new WaterfallStep
{
PromptQuestionAsync,
WriteAnswerAsync,
HelpfulResponseAsync,
};
AddDialog(new WaterfallDialog(WaterfallStepsName, waterfallStepsOptions));
ChoicePrompt choice = new ChoicePrompt(QuestionPromptName);
choice.Style = ListStyle.SuggestedAction;
AddDialog(choice);
AddDialog(new ChoicePrompt(HelpfulPromptName));
}
Last waterfall step:
private async Task<DialogTurnResult> HelpfulResponseAsync(WaterfallStepContext stepContext,
CancellationToken cancellationToken)
{
var answer = (stepContext.Result as FoundChoice).Value;
if (answer == "Yes")
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Great!"), cancellationToken);
}
else
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Maybe try rephrasing your question else here's a link to the documentation: LINK"), cancellationToken);
}
return await stepContext.EndDialogAsync(cancellationToken);
}
The dialog thats starts this dialog looks like this:
public MainDialog(BotServices services, ConversationState conversationState, string dialogId = null)
: base(Name)
{
_services = services ?? throw new ArgumentNullException(nameof(services));
_qnaAccessor = conversationState.CreateProperty<QnaProperty>(QnaProperty);
_dialogAccessor = conversationState.CreateProperty<DialogState>(DialogProperty);
_dialogs = new DialogSet(_dialogAccessor);
}
public override async Task<DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null,
CancellationToken cancellationToken = default(CancellationToken))
{
var response = await _services.QnAServices[QnaConfiguration].GetAnswersAsync(dc.Context);
var qnaProperty = await _qnaAccessor.GetAsync(dc.Context, () => new QnaProperty(response));
//var qnaProperty = await _qnaAccessor.SetAsync(dc.Context, response, cancellationToken);
if (response != null && response.Length > 1)
{
return await dc.BeginDialogAsync(OptionsDialog.Name, cancellationToken);
}
else if (response != null && response.Length == 1)
{
await dc.Context.SendActivityAsync(response[0].Answer, cancellationToken: cancellationToken);
}
else
{
var msg = @"No QnA Maker answers were found.";
await dc.Context.SendActivityAsync(msg, cancellationToken: cancellationToken);
}
return await dc.EndDialogAsync(cancellationToken);
}
EDIT:
It seems to work when I moved the logic from MainDispatcher Dialog to just the IBot class instead, so Im assuming maybe the issue is with finding the dialog when it's instantiated in the Ibot class instead of the maindialog. Maybe?
c# botframework
1
Please add a code snippet, where you exception gets thrown. Searching your linked repo has three sites of results containing 'EndDialogAsync'.
– nilsK
Nov 21 '18 at 16:19
Added some of the code, hopefully it's relevant. Thanks for your reply.
– Alun
Nov 22 '18 at 6:53
Thank you for posting your code, but I wonder if it still may not be enough. Have you determined that it is indeed the EndDialogAsync method that is throwing the error? My suspicion is that the error is being caused not by the dialog you're ending but by the dialog that the conversation is trying to switch to after that. What are you expecting to happen when that dialog ends?
– Kyle Delaney
Nov 27 '18 at 1:17
Do you still need help?
– Kyle Delaney
Dec 4 '18 at 3:52
1
Hello, sorry hadn't noticed I got a reply here. Well I never fixed the problem but worked around ut by removing the MainDispatcher from the equation and just doing what that does in the : Ibot class instead. This change worked without chaching anything in the dialog that contains the waterfall steps so Im assuming it had something to do with setting up the dialogs in different places maybe? Or maybe it had something to do with calling EndDialog and not having a ContinueDialog in the previous one but iirc it should just default to sending it up the dialogstack if that was the case?
– Alun
Dec 5 '18 at 12:22
|
show 2 more comments
Im using botframework 4 (c#) together with Qnamaker to make a qnabot. I want the bot to go through give alternative questions if qna-service returns more than 1 answer.
So I've made a dialog that does that. However then it goes through the steps and comes to the end and I call context.EndDialogAsync() it throws an "The given key was not present in the dictionary."-error.
If I type something into the chat after this it will run the dialog-step over again and rinse and repeat.
Anyone got any ideas what might be the issue? Im willing to the code I just don't know code that could be causing the error.
Im trying to follow this example as much as possible: https://github.com/Microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/51.cafe-bot
One difference is I couldn't get the bot to find my Dialog if I added it to in the MainDispatcher like they have done in the example (it couldn't find it). If I however added it to the "class" : IBot it worked. Could it be related?
Appreciate any help or tips on how I can debug this, thanks!
This sets up the dialog and all the steps in the waterfall works until I get to the last one and try to call EndDialogAsync.
public OptionsDialog(IStatePropertyAccessor<QnaProperty> qnaAccessors, IEnumerable<WaterfallStep> steps = null, string dialogId = null)
: base(Name)
{
QnAAccessor = qnaAccessors ?? throw new ArgumentNullException(nameof(qnaAccessors));
var waterfallStepsOptions = new WaterfallStep
{
PromptQuestionAsync,
WriteAnswerAsync,
HelpfulResponseAsync,
};
AddDialog(new WaterfallDialog(WaterfallStepsName, waterfallStepsOptions));
ChoicePrompt choice = new ChoicePrompt(QuestionPromptName);
choice.Style = ListStyle.SuggestedAction;
AddDialog(choice);
AddDialog(new ChoicePrompt(HelpfulPromptName));
}
Last waterfall step:
private async Task<DialogTurnResult> HelpfulResponseAsync(WaterfallStepContext stepContext,
CancellationToken cancellationToken)
{
var answer = (stepContext.Result as FoundChoice).Value;
if (answer == "Yes")
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Great!"), cancellationToken);
}
else
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Maybe try rephrasing your question else here's a link to the documentation: LINK"), cancellationToken);
}
return await stepContext.EndDialogAsync(cancellationToken);
}
The dialog thats starts this dialog looks like this:
public MainDialog(BotServices services, ConversationState conversationState, string dialogId = null)
: base(Name)
{
_services = services ?? throw new ArgumentNullException(nameof(services));
_qnaAccessor = conversationState.CreateProperty<QnaProperty>(QnaProperty);
_dialogAccessor = conversationState.CreateProperty<DialogState>(DialogProperty);
_dialogs = new DialogSet(_dialogAccessor);
}
public override async Task<DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null,
CancellationToken cancellationToken = default(CancellationToken))
{
var response = await _services.QnAServices[QnaConfiguration].GetAnswersAsync(dc.Context);
var qnaProperty = await _qnaAccessor.GetAsync(dc.Context, () => new QnaProperty(response));
//var qnaProperty = await _qnaAccessor.SetAsync(dc.Context, response, cancellationToken);
if (response != null && response.Length > 1)
{
return await dc.BeginDialogAsync(OptionsDialog.Name, cancellationToken);
}
else if (response != null && response.Length == 1)
{
await dc.Context.SendActivityAsync(response[0].Answer, cancellationToken: cancellationToken);
}
else
{
var msg = @"No QnA Maker answers were found.";
await dc.Context.SendActivityAsync(msg, cancellationToken: cancellationToken);
}
return await dc.EndDialogAsync(cancellationToken);
}
EDIT:
It seems to work when I moved the logic from MainDispatcher Dialog to just the IBot class instead, so Im assuming maybe the issue is with finding the dialog when it's instantiated in the Ibot class instead of the maindialog. Maybe?
c# botframework
Im using botframework 4 (c#) together with Qnamaker to make a qnabot. I want the bot to go through give alternative questions if qna-service returns more than 1 answer.
So I've made a dialog that does that. However then it goes through the steps and comes to the end and I call context.EndDialogAsync() it throws an "The given key was not present in the dictionary."-error.
If I type something into the chat after this it will run the dialog-step over again and rinse and repeat.
Anyone got any ideas what might be the issue? Im willing to the code I just don't know code that could be causing the error.
Im trying to follow this example as much as possible: https://github.com/Microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/51.cafe-bot
One difference is I couldn't get the bot to find my Dialog if I added it to in the MainDispatcher like they have done in the example (it couldn't find it). If I however added it to the "class" : IBot it worked. Could it be related?
Appreciate any help or tips on how I can debug this, thanks!
This sets up the dialog and all the steps in the waterfall works until I get to the last one and try to call EndDialogAsync.
public OptionsDialog(IStatePropertyAccessor<QnaProperty> qnaAccessors, IEnumerable<WaterfallStep> steps = null, string dialogId = null)
: base(Name)
{
QnAAccessor = qnaAccessors ?? throw new ArgumentNullException(nameof(qnaAccessors));
var waterfallStepsOptions = new WaterfallStep
{
PromptQuestionAsync,
WriteAnswerAsync,
HelpfulResponseAsync,
};
AddDialog(new WaterfallDialog(WaterfallStepsName, waterfallStepsOptions));
ChoicePrompt choice = new ChoicePrompt(QuestionPromptName);
choice.Style = ListStyle.SuggestedAction;
AddDialog(choice);
AddDialog(new ChoicePrompt(HelpfulPromptName));
}
Last waterfall step:
private async Task<DialogTurnResult> HelpfulResponseAsync(WaterfallStepContext stepContext,
CancellationToken cancellationToken)
{
var answer = (stepContext.Result as FoundChoice).Value;
if (answer == "Yes")
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Great!"), cancellationToken);
}
else
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Maybe try rephrasing your question else here's a link to the documentation: LINK"), cancellationToken);
}
return await stepContext.EndDialogAsync(cancellationToken);
}
The dialog thats starts this dialog looks like this:
public MainDialog(BotServices services, ConversationState conversationState, string dialogId = null)
: base(Name)
{
_services = services ?? throw new ArgumentNullException(nameof(services));
_qnaAccessor = conversationState.CreateProperty<QnaProperty>(QnaProperty);
_dialogAccessor = conversationState.CreateProperty<DialogState>(DialogProperty);
_dialogs = new DialogSet(_dialogAccessor);
}
public override async Task<DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null,
CancellationToken cancellationToken = default(CancellationToken))
{
var response = await _services.QnAServices[QnaConfiguration].GetAnswersAsync(dc.Context);
var qnaProperty = await _qnaAccessor.GetAsync(dc.Context, () => new QnaProperty(response));
//var qnaProperty = await _qnaAccessor.SetAsync(dc.Context, response, cancellationToken);
if (response != null && response.Length > 1)
{
return await dc.BeginDialogAsync(OptionsDialog.Name, cancellationToken);
}
else if (response != null && response.Length == 1)
{
await dc.Context.SendActivityAsync(response[0].Answer, cancellationToken: cancellationToken);
}
else
{
var msg = @"No QnA Maker answers were found.";
await dc.Context.SendActivityAsync(msg, cancellationToken: cancellationToken);
}
return await dc.EndDialogAsync(cancellationToken);
}
EDIT:
It seems to work when I moved the logic from MainDispatcher Dialog to just the IBot class instead, so Im assuming maybe the issue is with finding the dialog when it's instantiated in the Ibot class instead of the maindialog. Maybe?
c# botframework
c# botframework
edited Nov 22 '18 at 7:56
asked Nov 21 '18 at 15:28
Alun
93
93
1
Please add a code snippet, where you exception gets thrown. Searching your linked repo has three sites of results containing 'EndDialogAsync'.
– nilsK
Nov 21 '18 at 16:19
Added some of the code, hopefully it's relevant. Thanks for your reply.
– Alun
Nov 22 '18 at 6:53
Thank you for posting your code, but I wonder if it still may not be enough. Have you determined that it is indeed the EndDialogAsync method that is throwing the error? My suspicion is that the error is being caused not by the dialog you're ending but by the dialog that the conversation is trying to switch to after that. What are you expecting to happen when that dialog ends?
– Kyle Delaney
Nov 27 '18 at 1:17
Do you still need help?
– Kyle Delaney
Dec 4 '18 at 3:52
1
Hello, sorry hadn't noticed I got a reply here. Well I never fixed the problem but worked around ut by removing the MainDispatcher from the equation and just doing what that does in the : Ibot class instead. This change worked without chaching anything in the dialog that contains the waterfall steps so Im assuming it had something to do with setting up the dialogs in different places maybe? Or maybe it had something to do with calling EndDialog and not having a ContinueDialog in the previous one but iirc it should just default to sending it up the dialogstack if that was the case?
– Alun
Dec 5 '18 at 12:22
|
show 2 more comments
1
Please add a code snippet, where you exception gets thrown. Searching your linked repo has three sites of results containing 'EndDialogAsync'.
– nilsK
Nov 21 '18 at 16:19
Added some of the code, hopefully it's relevant. Thanks for your reply.
– Alun
Nov 22 '18 at 6:53
Thank you for posting your code, but I wonder if it still may not be enough. Have you determined that it is indeed the EndDialogAsync method that is throwing the error? My suspicion is that the error is being caused not by the dialog you're ending but by the dialog that the conversation is trying to switch to after that. What are you expecting to happen when that dialog ends?
– Kyle Delaney
Nov 27 '18 at 1:17
Do you still need help?
– Kyle Delaney
Dec 4 '18 at 3:52
1
Hello, sorry hadn't noticed I got a reply here. Well I never fixed the problem but worked around ut by removing the MainDispatcher from the equation and just doing what that does in the : Ibot class instead. This change worked without chaching anything in the dialog that contains the waterfall steps so Im assuming it had something to do with setting up the dialogs in different places maybe? Or maybe it had something to do with calling EndDialog and not having a ContinueDialog in the previous one but iirc it should just default to sending it up the dialogstack if that was the case?
– Alun
Dec 5 '18 at 12:22
1
1
Please add a code snippet, where you exception gets thrown. Searching your linked repo has three sites of results containing 'EndDialogAsync'.
– nilsK
Nov 21 '18 at 16:19
Please add a code snippet, where you exception gets thrown. Searching your linked repo has three sites of results containing 'EndDialogAsync'.
– nilsK
Nov 21 '18 at 16:19
Added some of the code, hopefully it's relevant. Thanks for your reply.
– Alun
Nov 22 '18 at 6:53
Added some of the code, hopefully it's relevant. Thanks for your reply.
– Alun
Nov 22 '18 at 6:53
Thank you for posting your code, but I wonder if it still may not be enough. Have you determined that it is indeed the EndDialogAsync method that is throwing the error? My suspicion is that the error is being caused not by the dialog you're ending but by the dialog that the conversation is trying to switch to after that. What are you expecting to happen when that dialog ends?
– Kyle Delaney
Nov 27 '18 at 1:17
Thank you for posting your code, but I wonder if it still may not be enough. Have you determined that it is indeed the EndDialogAsync method that is throwing the error? My suspicion is that the error is being caused not by the dialog you're ending but by the dialog that the conversation is trying to switch to after that. What are you expecting to happen when that dialog ends?
– Kyle Delaney
Nov 27 '18 at 1:17
Do you still need help?
– Kyle Delaney
Dec 4 '18 at 3:52
Do you still need help?
– Kyle Delaney
Dec 4 '18 at 3:52
1
1
Hello, sorry hadn't noticed I got a reply here. Well I never fixed the problem but worked around ut by removing the MainDispatcher from the equation and just doing what that does in the : Ibot class instead. This change worked without chaching anything in the dialog that contains the waterfall steps so Im assuming it had something to do with setting up the dialogs in different places maybe? Or maybe it had something to do with calling EndDialog and not having a ContinueDialog in the previous one but iirc it should just default to sending it up the dialogstack if that was the case?
– Alun
Dec 5 '18 at 12:22
Hello, sorry hadn't noticed I got a reply here. Well I never fixed the problem but worked around ut by removing the MainDispatcher from the equation and just doing what that does in the : Ibot class instead. This change worked without chaching anything in the dialog that contains the waterfall steps so Im assuming it had something to do with setting up the dialogs in different places maybe? Or maybe it had something to do with calling EndDialog and not having a ContinueDialog in the previous one but iirc it should just default to sending it up the dialogstack if that was the case?
– Alun
Dec 5 '18 at 12:22
|
show 2 more comments
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53415355%2fthe-given-key-was-not-present-in-the-dictionary-error-when-ending-dialog%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53415355%2fthe-given-key-was-not-present-in-the-dictionary-error-when-ending-dialog%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Please add a code snippet, where you exception gets thrown. Searching your linked repo has three sites of results containing 'EndDialogAsync'.
– nilsK
Nov 21 '18 at 16:19
Added some of the code, hopefully it's relevant. Thanks for your reply.
– Alun
Nov 22 '18 at 6:53
Thank you for posting your code, but I wonder if it still may not be enough. Have you determined that it is indeed the EndDialogAsync method that is throwing the error? My suspicion is that the error is being caused not by the dialog you're ending but by the dialog that the conversation is trying to switch to after that. What are you expecting to happen when that dialog ends?
– Kyle Delaney
Nov 27 '18 at 1:17
Do you still need help?
– Kyle Delaney
Dec 4 '18 at 3:52
1
Hello, sorry hadn't noticed I got a reply here. Well I never fixed the problem but worked around ut by removing the MainDispatcher from the equation and just doing what that does in the : Ibot class instead. This change worked without chaching anything in the dialog that contains the waterfall steps so Im assuming it had something to do with setting up the dialogs in different places maybe? Or maybe it had something to do with calling EndDialog and not having a ContinueDialog in the previous one but iirc it should just default to sending it up the dialogstack if that was the case?
– Alun
Dec 5 '18 at 12:22