【发布时间】:2019-07-10 01:59:53
【问题描述】:
我有一组自适应卡片,一旦机器人加载就会显示。在 action.submit 上,我能够获取用户选择的卡片的值,但我无法将该值传递到主对话框中的下一步。
OnTurnAsync 编写如下代码:
public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
await base.OnTurnAsync(turnContext, cancellationToken);
var activity = turnContext.Activity;
if (string.IsNullOrWhiteSpace(activity.Text) && activity.Value != null)
{
activity.Text = JsonConvert.SerializeObject(activity.Value);
}
// Save any state changes that might have occured during the turn.
await ConversationState.SaveChangesAsync(turnContext, false, cancellationToken);
await UserState.SaveChangesAsync(turnContext, false, cancellationToken);
switch (activity.Text)
{
case "{\"choice\":1}":
break;
case "{\"choice\":2}":
// var msg = $"Platform Assistance";
// await turnContext.SendActivityAsync(MessageFactory.Text(msg), cancellationToken);
var welcomeCard = CreateAdaptiveCardAttachment();
var response = CreateResponse(turnContext.Activity, welcomeCard);
await turnContext.SendActivityAsync(response, cancellationToken);
//var response = CreateResponse(turnContext.Activity, welcomeCard);
break;
}
await turnContext.SendActivityAsync(activity, cancellationToken);
}
在主对话框中
private async Task<DialogTurnResult> HandleResponseAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
var userResult = stepContext.Result;
await stepContext.Context.SendActivityAsync($"INPUT: {stepContext.Result}");
return await stepContext.NextAsync();
}
我希望在显示所有卡片后我应该得到用户选择的选项,这将进一步传递给 LUIS 意图
我也尝试过使用文本提示,但代码似乎没有进入“HandleResponseAsync”方法。
【问题讨论】:
标签: c# botframework