如何将值“是”或“否”存储到变量中?我试图在用户单击按钮时存储值“是”或“否”,但它没有将值带入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);
答案 0 :(得分:0)
不幸的是,context.SendActivityAsync()
不会返回用户输入的值,它只是发送活动,甚至没有等待用户响应。
有两种选择可以满足您的需求。
您可以将代码保持原样,并在OnTurnAsync()
中使用以下内容访问用户输入的值:
var k = turnContext.Activity.Text
您可以根据自己的情况去做。 Simple Prompt Sample也向您展示了如何执行此操作。
我建议使用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有使用瀑布对话框的很好的例子。