正在使用PromptDialog传递参数。确认:恢复Bot框架(C#)
在显示提示确认对话框之前,我从用户那里得到一些输入。根据这些输入和PromptDialog(是/否)选择,我必须执行一些功能逻辑。正在使用PromptDialog传递参数。确认:恢复Bot框架(C#),c#,bots,botframework,C#,Bots,Botframework,在显示提示确认对话框之前,我从用户那里得到一些输入。根据这些输入和PromptDialog(是/否)选择,我必须执行一些功能逻辑。 提示对话框 PromptDialog.Confirm( context: context, resume: ServiceDetails, prompt: "Shall I continue with " + facility, retry: "Please,Confirm?."
提示对话框
PromptDialog.Confirm(
context: context,
resume: ServiceDetails,
prompt: "Shall I continue with " + facility,
retry: "Please,Confirm?.");
恢复功能:ServiceDetails
private async Task ServiceDetails(IDialogContext context, IAwaitable<bool> result)
{
var confirm = await result;
if (confirm && facility=="xxx") // They said yes
{
专用异步任务服务详细信息(IDialogContext上下文,IAwaitable结果)
{
var确认=等待结果;
如果(确认和设施==“xxx”)//他们说是
{
在ServiceDetails方法中,我必须传递“facility”值。有可能吗?或者我应该使用会话(context.userdata.SetValue)来获取这个特定对话的“facility”值?正如您所说,一种选择是使用Bot数据包并将值存储在那里。我认为使用PrivateConversationData包而不是UserData包可能更有意义,因为后者将在所有频道和对话中都可用。您可以在 根据您的工作流程,另一种更合适的选择是使用FormFlow。使用FormFlow,您可以定义一个模型,稍后将其转换为问题。表单完成后,您将获得表单的“状态”,以及用户提供的所有答案
您可以找到有关FormFlow的文档,以及一些如何使用的示例。您可以使用类级变量,
facility
,然后在功能逻辑提示对话框中执行此操作。facility=facility
然后,您可以在ServiceDetails中简单地将该值读取为
this.facility==“xxx”
回调只会有额外的bool
参数,其他任何东西都必须进入上下文数据。@jackarms是的,只有通过上下文数据我才能获得值,即context.userdata.SetValue。但是在bot框架中,它类似于会话。从查询实体获取两个输入。根据实体问题,我应该问使用single formflowIForm BuildFacilityForm()
如何检查这些输入的设置值和字段。active
。虽然没有完全了解您,但这似乎与此线程中的问题不同。我建议通过此查询打开一个新问题