BotFramework修改选择

时间:2017-08-17 18:58:07

标签: c# botframework

我正在构建一个机器人,为用户提供一个选项列表,理想情况下,用户会从列表中选择一些内容。场景将是寻找餐饮选项的用户。我向用户提供当地餐馆的列表,之后用户可以询问有关餐馆的问题。当用户要求我列出的选项时,PromptChoice非常适合。但是,如果用户要求列表中的内容,而不是提示用户重试他们的查询,我想采取用户的查询,然后执行查找,看看我是否有答案题。如何修改PromptChoice重试行为?我已经在我的消息处理程序中尝试过这个:

private async Task MessageHandler(IDialogContext context, IAwaitable<object> argument){
    string message = "";
    try{
        object obj = await argument;
        //parse message, do something
        if(obj.GetType() == typeof(string)){
            message = obj.ToString();
        }
    }
    catch(TooManyAttemptsException){
        //do something else
        object obj = await argument;
        if(obj.GetType() == typeof(string)){
             DoSomethingElse(obj.ToString());
        }           
    }
    //parse the message
}

然而,这不起作用,在我可以做一些更优雅的事情之前,僵尸程序最终会在崩溃之前通过我的重试提示回复给用户。当我在循环的catch部分放入断点时,虽然我的断点被击中,但是当我启动DoSomethingElse函数时,僵尸程序已经响应了用户。我用我自己的PromptChoice覆盖了PromptDialog.PromptChoice类,但即使在这个类中,我也不确定要改变什么,以便我不会发出重试提示,而是在其他地方处理消息。有什么想法吗?

0 个答案:

没有答案