首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LUIS对话框的超长消息将重置对话框状态

LUIS对话框的超长消息将重置对话框状态
EN

Stack Overflow用户
提问于 2018-05-31 01:10:51
回答 1查看 94关注 0票数 0

使用机器人框架仿真器v.3.5.36,如果用户发送长文本(大约1K字符),仿真器会自动将对话栈重置回根对话框,不会出现任何错误或警告。(参见下面的屏幕截图。)

bot框架是否有声明的消息限制?

有没有办法让机器人处理这样的情况,并警告用户,而不是这种沉默的东西?

这段代码根本没有什么特别之处:

代码语言:javascript
复制
[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);
    } 
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 18:51:04

原因是基础LuisDialog不能处理失败的接口请求(如果查询太长,它会返回414代码)。因此,处理此类错误的最简单方法是覆盖MessageReceived,如下所示:

代码语言:javascript
复制
[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);
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50610169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档