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