Botframework 请求有效负载无效。确保提供有效的请求负载

Botframework 请求有效负载无效。确保提供有效的请求负载,botframework,bots,Botframework,Bots,在10到15次返回后,等待sc.BeginDialogAsync(nameof(MainDialog)) 错误是: 错误“:[”请求负载无效。请确保提供有效的 请求有效负载。“] 情景: 使用:企业Bot模板 在分派后的主对话框中=>QnA回答结果是使用建议卡[竖起大拇指/竖起大拇指]询问反馈 如果用户选择向上/向下拇指,则可以结束对话框。 如果他们没有选择任何选项,用户需要输入另一个查询,该查询需要再次通过Maindialog进行处理(DISPATCH=>LUIS/QnA) 在我的场景中,没有

在10到15次
返回后,等待sc.BeginDialogAsync(nameof(MainDialog))

错误是:

错误“:[”请求负载无效。请确保提供有效的 请求有效负载。“]

情景: 使用:企业Bot模板

在分派后的主对话框中=>QnA回答结果是使用建议卡[竖起大拇指/竖起大拇指]询问反馈

如果用户选择向上/向下拇指,则可以结束对话框。 如果他们没有选择任何选项,用户需要输入另一个查询,该查询需要再次通过Maindialog进行处理(DISPATCH=>LUIS/QnA)

在我的场景中,没有给出反馈的用户在10点之后输入新的查询 到15次是服务器错误

var answers = await qnaService.GetAnswersAsync(dc.Context);

                        if (answers != null && answers.Count() > 0 && answers[0].Score >= _bestQnAScore)
                        {
                            string personalizedAnswer = DialogUtilities.PersonalizeAnswer(answers[0].Answer, _authResult, greetingInQNAAnswerSetting);
                            if (!string.IsNullOrEmpty(personalizedAnswer))
                            {
                                personalizedAnswer = StringUtils.URLBlankSpaceHelper(personalizedAnswer);
                                await dc.Context.SendActivityAsync(personalizedAnswer, personalizedAnswer, "acceptingInput");

                                string[] arrQnAMetadata = _configuration["QnAMetadata"].ToString().Split(',');
                                string stringToCheck = (answers[0].Metadata.Length > 0) ? answers[0].Metadata.FirstOrDefault().Value.ToLower() : string.Empty;
                                bool isChitChat = arrQnAMetadata.Any(stringToCheck.Contains);
                                if (!isChitChat)
                                {
                                    await dc.BeginDialogAsync(nameof(FeedbackDialog), new VM_Luis_AuthResult(null, _authResult, _EnumDISPATCHIntent.ToString()));
                                }
                                else
                                {
                                    #region OPEN/CLOSE TICKET
                                    FeedbackLogger.LogUserFeedback(_authResult.UserEmail, dc.Context.Activity.Conversation.Id, dc.Context.Activity.Text, _authResult.Country, _authResult.City, _authResult.OfficeLocation, TicketState.Open, TicketStatus.None, ref this._topScoringIntent, ref this._ticketNumber);
                                    FeedbackLogger.LogUserFeedback(_authResult.UserEmail, dc.Context.Activity.Conversation.Id, dc.Context.Activity.Text, _authResult.Country, _authResult.City, _authResult.OfficeLocation, TicketState.Closed, TicketStatus.Successful, ref this._topScoringIntent, ref this._ticketNumber);
                                    #endregion
                                    await dc.EndDialogAsync();
                                }
                            }
                        }
                        else
                        {
                            await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused);
                            await dc.EndDialogAsync();
                        }
FeedbackDialog.cs

private async Task<DialogTurnResult> OnFeedbackResult(WaterfallStepContext sc, CancellationToken cancellationToken)
        {
            var res = Convert.ToString(sc.Result);
            if (InterruptionsConstants.NegativeFeedback.Any(f => res.ToLower() == f))
            {
                await sc.Context.SendActivityAsync("Thank You!");
                return await sc.EndDialogAsync();
            }
            else if (InterruptionsConstants.PositiveFeedback.Any(f => res.ToLower() == f))
            {
                await sc.Context.SendActivityAsync("Thank you very much");
                return await sc.EndDialogAsync();
            }
            else
            {
                 return await sc.BeginDialogAsync(nameof(MainDialog));
            }
        }
反馈结果上的私有异步任务(WaterCallStepContext sc,CancellationToken CancellationToken) { var res=转换为字符串(sc.Result); if(InterruptionsConstants.NegativeFeedback.Any(f=>res.ToLower()==f)) { 等待sc.Context.SendActivityAsync(“谢谢!”); return wait sc.EndDialogAsync(); } else if(interruptionsconts.PositiveFeedback.Any(f=>res.ToLower()==f)) { 等待sc.Context.SendActivityAsync(“非常感谢”); return wait sc.EndDialogAsync(); } 其他的 { return wait sc.BeginDialogAsync(名称(主对话框)); } }
提前感谢。:)否则{rawait sc.CancelAllDialogsAsync();return wait sc.BeginDialogAsync(nameof(mainlialog));}您的问题解决了吗?