使用机器人框架仿真器v.3.5.36,如果用户发送长文本(大约1K字符),仿真器会自动将对话栈重置回根对话框,不会出现任何错误或警告。(参见下面的屏幕截图。)
bot框架是否有声明的消息限制?
有没有办法让机器人处理这样的情况,并警告用户,而不是这种沉默的东西?
这段代码根本没有什么特别之处:
[LuisModel("{GUID}", "{CODE}", LuisApiVersion.V2, domain: "westeurope.api.cognitive.microsoft.com", threshold: 0.5)]
[Serializable]
public class LuisSearchDialog2 : LuisDialog<object>
{
[LuisIntent("")]
[LuisIntent("None")]
public async Task None(IDialogContext context, LuisResult result)
{
await context.PostAsync(JsonConvert.SerializeObject(result));
context.Wait(this.MessageReceived);
}
}
发布于 2018-06-04 18:51:04
原因是基础LuisDialog不能处理失败的接口请求(如果查询太长,它会返回414代码)。因此,处理此类错误的最简单方法是覆盖MessageReceived,如下所示:
[Serializable]
public class LuisSearchDialog2 : LuisDialog<object>
{
protected override async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> activity)
{
try
{
await base.MessageReceived(context, activity);
}
catch(HttpRequestException e)
{
// Handle error here
//await context.PostAsync("Error: " + e.ToString());
context.Wait(this.MessageReceived);
}
}
}
https://stackoverflow.com/questions/50610169
复制相似问题