我一直在使用 EchoBot 模板,最近使用了 VirtualAssistant 模板。在之前的模板中,提交输入表单数据没有问题,但是这个模板仅仅提交输入表单数据就无法与ContinueDialogAsync配合使用。我们该如何解决这个问题呢?请帮我。
WaterfallStep的输入形式
card.Body.Add(new AdaptiveTextBlock()
{
HorizontalAlignment = AdaptiveHorizontalAlignment.Left,
Spacing = AdaptiveSpacing.None,
Size = AdaptiveTextSize.Small,
Weight = AdaptiveTextWeight.Bolder,
Color = AdaptiveTextColor.Accent,
Text = Common.PurchaseDialog_DepartureDate
});
card.Body.Add(new AdaptiveDateInput()
{
Id = "GoDateVal",
Value = DateTime.Now.AddDays(4).ToString("yyyy-MM-dd"),
Spacing = AdaptiveSpacing.None
});
if (lowestPriceQuery.tripType == "RT")
{
card.Body.Add(new AdaptiveTextBlock()
{
HorizontalAlignment = AdaptiveHorizontalAlignment.Left,
Spacing = AdaptiveSpacing.None,
Size = AdaptiveTextSize.Small,
Weight = AdaptiveTextWeight.Bolder,
Color = AdaptiveTextColor.Accent,
Text = Common.PurchaseDialog_CommingDate
});
card.Body.Add(new AdaptiveDateInput()
{
Id = "ComeDateVal",
Value = DateTime.Now.AddDays(8).ToString("yyyy-MM-dd"),
Spacing = AdaptiveSpacing.None,
});
}
if (lowestPriceQuery.tripType == "DS")
{
card.Body.Add(new AdaptiveTextBlock()
{
HorizontalAlignment = AdaptiveHorizontalAlignment.Left,
Spacing = AdaptiveSpacing.None,
Size = AdaptiveTextSize.Small,
Weight = AdaptiveTextWeight.Bolder,
Color = AdaptiveTextColor.Accent,
Text = "ReturnDate"
});
card.Body.Add(new AdaptiveDateInput()
{
Id = "ComeDateVal",
Value = DateTime.Now.AddDays(8).ToString("yyyy-MM-dd"),
Spacing = AdaptiveSpacing.None,
});
}
card.Actions.Add(new AdaptiveSubmitAction()
{
Type = AdaptiveSubmitAction.TypeName,
Title = "submit",
Id = "submit",
});
reply.Attachments = new List<Attachment>
{
new Attachment()
{
ContentType = "application/vnd.microsoft.card.adaptive",
Content = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(card))
}
};
await turnContext.SendActivityAsync(reply, cancellationToken: cancellationToken);
迪劳格机器人,
调试时,没有任何反应var result = await dc.ContinueDialogAsync ();
从输入表单提交时。
var dc = await _dialogs.CreateContextAsync(turnContext);
if (turnContext.Activity.Type == ActivityTypes.Message)
{
// Ensure that message is a postBack (like a submission from Adaptive Cards)
var channelData = JObject.Parse(dc.Context.Activity.ChannelData.ToString());
if (channelData.ContainsKey("postback"))
{
var postbackActivity = dc.Context.Activity;
// Convert the user's Adaptive Card input into the input of a Text Prompt
// Must be sent as a string
postbackActivity.Text = postbackActivity.Value.ToString();
await dc.Context.SendActivityAsync(postbackActivity);
}
}
if (dc.ActiveDialog != null)
{
var result = await dc.ContinueDialogAsync();
}
else
{
await dc.BeginDialogAsync(typeof(T).Name);
}