【发布时间】:2019-08-01 15:59:21
【问题描述】:
我一直在使用 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);
}
【问题讨论】:
-
await dc.context.ContinueDialogAsync();怎么样? -
我在 Maindialog 中开始瀑布步骤后继续。
-
@SLock 我提交了一个答案。我相当肯定你在某个时候从我那里得到了那个代码(在我知道更好之前)。你能把我链接到它吗?我以为我已经更正了我之前的所有答案,但也许没有。
标签: c# botframework adaptive-cards