将值存储在botframework建议的变量中

时间:2019-03-07 13:53:37

标签: c# botframework

如何将值“是”或“否”存储到变量中?我试图在用户单击按钮时存储值“是”或“否”,但它没有将值带入k

var activity1 = MessageFactory.SuggestedActions(  
new CardAction[]
{
    new CardAction(title: "YES", type: ActionTypes.ImBack,value:"yes"),
    new CardAction( title: "NO", type: ActionTypes.ImBack, value: "no")
}, text: "Do you want to continue Shopping?");
var k=await context.SendActivityAsync(activity1);

1 个答案:

答案 0 :(得分:0)

不幸的是,context.SendActivityAsync()不会返回用户输入的值,它只是发送活动,甚至没有等待用户响应。

有两种选择可以满足您的需求。

1。保持您的代码不变

您可以将代码保持原样,并在OnTurnAsync()中使用以下内容访问用户输入的值:

var k = turnContext.Activity.Text

您可以根据自己的情况去做。 Simple Prompt Sample也向您展示了如何执行此操作。

2。使用瀑布对话框

我建议使用ChoicePrompt,而不是CardAction

与您相关的代码类似于(请注意,这是对其他必要的WaterfallDialog代码的补充):

private static async Task<DialogTurnResult> FirstStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken = default(CancellationToken))
{
    return await stepContext.PromptAsync(
        "choicePrompt",
        new PromptOptions
        {
            Prompt = MessageFactory.Text("Select an Action"),
            Choices = new List<Choice> { new Choice("Yes"), new Choice("No") },
        });
}

private static async Task<DialogTurnResult> SecondStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken = default(CancellationToken))
{
    var k = ((FoundChoice)stepContext.Result).Value.ToString();
    return await stepContext.NextAsync();
}

Basic Bot Sample有使用瀑布对话框的很好的例子。

其他参考