2017-04-26 1 views
0

In meinem Dialog Ich bin ein Benutzer eine Aufforderung Dialog zu senden:Bot-Framework C# senden Parameter in 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); 

und in der Methode 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; 
    } 
} 

Wie kann ich passieren Param1 zu die OnOptionSelected-Methode, damit ich sie dann verwenden kann?

+0

Param 1 und Param 2 hängt von der Eingabeaufforderung ab? oder wie wirst du diese bekommen? –

+0

Param1 und Param2 hängen nicht vom promptDialog ab. – JoaoFilipeClementeMartins

+0

OK, weil Sie die Signatur der OnOptionSelected-Methode nicht ändern können. Also im Grunde müssen Sie mit BotState Option gehen –

Antwort

0

Sie können die Parameter nicht an die OnOptionSelected-Methode übergeben. Sie können die Signatur der Methode ResumeAfter<T> nicht ändern.

Der Weg, hier zu gehen ist wahrscheinlich die BotState nutzen, um die Werte dort vor der PromptDialog zu speichern und sie auf die OnOptionSelected Methode abrufen, um sie zu verwenden.

Überprüfen Sie die core-state C# Probe, um mehr darüber zu erfahren, wie Sie den BotState verwenden können.

+0

War das nützlich? –