2017-04-26 98 views
0

发送参数在我的对话我送一个用户一个提示对话框:博特框架C#中PromptChoice.Choice

PromptOptions<string> options = new PromptOptions<string>($"some var" + var, 
    "invalid", 
    "Exceeded", 
    context.Activity.ChannelId.ToLower() == "skype" || context.Activity.ChannelId.ToLower() == "webchat" || context.Activity.ChannelId.ToLower() == "emulator" ? 
    new List<string>() { "yes","no","exit", } : 
    new List<string>() { "yes", "exit", }, 
3); 
PromptDialog.Choice(context, this.OnOptionSelected, options); 

,并在方法OnOptionSelected:

private async Task OnOptionSelected(IDialogContext context, IAwaitable<string> result) 
{ 
    string optionSelected = await result; 

    switch (optionSelected) 
    { 
     case "yes": 
      CallMethod(**Param1**, true); 
      break; 
     case "no": 
      CallMethod(**Param1**, false); 
      break; 
     case "exit": 
      context.Call(new ExitDialog(), this.ResumeAfterOptionDialog); 
      break; 
    } 
} 

如何传递参数1至OnOptionSelected方法,以便我可以使用它?

+0

参数1和参数2取决于提示?或者你将如何获得这些? –

+0

参数1和参数2将不依赖于promptDialog。 – JoaoFilipeClementeMartins

+0

好吧,因为您无法更改OnOptionSelected方法的签名。所以基本上你必须去BotState选项 –

回答

0

您将无法将参数传递给OnOptionSelected方法。您不能更改​​方法的签名。

这里的方法可能是利用BotState将PromptDialog之前的值保存并在OnOptionSelected方法上检索它们以使用它们。

查看core-state C#示例了解更多关于如何使用BotState的信息。

+0

这个有用吗? –