c#聊天机器人|动态返回提示消息

c#聊天机器人|动态返回提示消息,c#,botframework,chatbot,C#,Botframework,Chatbot,c#聊天机器人:有没有办法动态控制choice prompt的RetryPrompt消息?我使用的是bot framework 4.0。有几种不同的方法可以做到这一点,具体取决于我如何解释您的问题 最简单的方法是只添加一个单独的RetryPrompt。例如,如果我们想在中执行此操作,只需添加RetryPrompt属性: 私有静态异步任务TransportStepAsync(WaterAllStepContext stepContext,CancellationToken Cancellation

c#聊天机器人:有没有办法动态控制choice prompt的RetryPrompt消息?我使用的是bot framework 4.0。

有几种不同的方法可以做到这一点,具体取决于我如何解释您的问题

最简单的方法是只添加一个单独的
RetryPrompt
。例如,如果我们想在中执行此操作,只需添加
RetryPrompt
属性:

私有静态异步任务TransportStepAsync(WaterAllStepContext stepContext,CancellationToken CancellationToken)
{
//瀑布步骤总是在瀑布的结尾或另一个对话框中结束;这里是一个提示对话框。
//在此处运行提示意味着在收到用户响应时将运行下一个WaterWall步骤。
return wait stepContext.PromptAsync(name of(ChoicePrompt)),
新提示
{
Prompt=MessageFactory.Text(“请输入您的运输方式”),
Choices=ChoiceFactory.ToChoices(新列表{“汽车”、“公共汽车”、“自行车”}),
RetryPrompt=MessageFactory.Text(“这不是一个有效的选项,请重试。”)
},取消令牌);
}
这将产生:

另一种选择是执行@pkr2000所说的操作(尽管有点不同),并使用自定义验证器动态添加
RetryPrompt
。比如:

AddDialog(新的ChoicePrompt(name of(ChoicePrompt),validateEchoicesAsync));
[...]
专用静态任务ValidateCoiceSaSync(PromptValidatorContext promptContext,CancellationToken CancellationToken)
{
如果(!promptContext.Recognized.successed)
{
promptContext.Options.RetryPrompt=MessageFactory.Text($”您说的\“{promptContext.Context.Activity.Text},\”无效。请重试。“);
返回Task.FromResult(false);
}
返回Task.FromResult(true);
}
这将产生:


您可以在验证器中执行任何您想要的操作。您可以传入一个完全不同的
活动,而不是使用
MessageFactory.Text()
,例如自适应卡或其他东西。您也不能设置
RetryPrompt
,而是将
提示更改为所需的任何文本/活动,返回
false
,然后用户会收到新提示的重新提示。使用自定义验证器可以做的事情真的是无限的。

动态返回提示消息是什么。请发布您的相关代码以及我们可以帮助您解决的问题。感谢Nirmal的快速回复。当用户尝试输入除屏幕上显示的内容外的其他内容时,机器人会以不同的消息回复用户。当您向用户建议一些选择,但用户忽略并发送一条文本时,您是否希望获得该文本并根据他们所说的内容回复?这是您的问题吗?通常只需将“重试提示”属性更改为您想要的内容。通常,我会为提示符声明一个验证器,并在其中做出选择。例如,此处的AgePromptValidator异步函数内部;AddDialog(newnumbercompt(nameof(numbercompt),AgePromptValidatorAsync));非常好,非常感谢@mdrichardson,这是一个非常好的解释