c# - Action.Submit 不适用于机器人框架
问题描述
我使用以下代码创建了一张自适应卡。但是,在单击提交按钮时,机器人会引发错误。
var card = new AdaptiveCard();
card.Body.Add(new AdaptiveTextBlock() { Text = "May I know who I am chatting with?", Size = AdaptiveTextSize.Medium, Weight = AdaptiveTextWeight.Bolder, HorizontalAlignment = AdaptiveHorizontalAlignment.Left });
card.Body.Add(new AdaptiveImage() { UrlString = "https://media-exp1.licdn.com/dms/image/C510BAQHDcYycRMpKWQ/company-logo_200_200/0?e=2159024400&v=beta&t=MRb3ZSGGATtJvp6s6XQt3r_SqyhORkaleuB3bUWVe6g", Size = AdaptiveImageSize.Medium, HorizontalAlignment= AdaptiveHorizontalAlignment.Right }) ;
card.Body.Add(new AdaptiveTextBlock() { Text = "Name", Size = AdaptiveTextSize.Medium, Weight = AdaptiveTextWeight.Bolder });
card.Body.Add(new AdaptiveTextInput() { Style = AdaptiveTextInputStyle.Text, Id = "Name", Placeholder = "First Last"});
card.Body.Add(new AdaptiveTextBlock() { Text = "Mobile number:", Size = AdaptiveTextSize.Medium, Weight = AdaptiveTextWeight.Bolder });
card.Body.Add(new AdaptiveTextInput() { Style = AdaptiveTextInputStyle.Tel, Id = "Mobile number", Placeholder = "xxx.xxx.xxxx" });
card.Body.Add(new AdaptiveTextBlock() { Text = "Email:", Size = AdaptiveTextSize.Medium, Weight = AdaptiveTextWeight.Bolder });
card.Body.Add(new AdaptiveTextInput() { Style = AdaptiveTextInputStyle.Email, Id = "Email", Placeholder = "youremail@example.com" });
card.Body.Add(new AdaptiveTextBlock() { Text = "Your Company Name:", Size = AdaptiveTextSize.Medium, Weight = AdaptiveTextWeight.Bolder});
card.Body.Add(new AdaptiveTextInput() { Style = AdaptiveTextInputStyle.Text, Id = "Your Company Name" });
card.Body.Add(new AdaptiveTextBlock() { Text = "Message:", Size = AdaptiveTextSize.Medium, Weight = AdaptiveTextWeight.Bolder});
card.Body.Add(new AdaptiveTextInput() { Style = AdaptiveTextInputStyle.Text, Id = "Message", IsMultiline = true });
card.Actions.Add(new AdaptiveSubmitAction() {Title = "Submit", Data = { } });
return new Attachment()
{
ContentType = AdaptiveCard.ContentType,
Content = card
};
解决方案
这就是我创建自适应卡的方式-
public static Attachment PersonalInfo()
{
var card = new AdaptiveCard("1.0");
card.Body.Add(new AdaptiveTextBlock() { Text = "Sure. While I fetch that, may I know you a little?", Size = AdaptiveTextSize.Medium, Weight = AdaptiveTextWeight.Bolder, HorizontalAlignment = AdaptiveHorizontalAlignment.Left });
//card.Body.Add(new AdaptiveTextBlock() { Text = "If yes, please fill in the form below and click SUBMIT.", Size = AdaptiveTextSize.Medium, Weight = AdaptiveTextWeight.Bolder, HorizontalAlignment = AdaptiveHorizontalAlignment.Left });
//card.Body.Add(new AdaptiveTextBlock() { Text = "If no, please click CANCEL at the end", Size = AdaptiveTextSize.Medium, Weight = AdaptiveTextWeight.Bolder, HorizontalAlignment = AdaptiveHorizontalAlignment.Left });
//card.Body.Add(new AdaptiveChoiceSetInput() { Id = "Choose", Style = AdaptiveChoiceInputStyle.Expanded, Choices = new List<AdaptiveChoice>() { new AdaptiveChoice() { Title = "Yes", Value = "Yes" }, new AdaptiveChoice() { Title = "No", Value = "No" } } });
//card.Body.Add(new AdaptiveImage() { UrlString = "https://media-exp1.licdn.com/dms/image/C510BAQHDcYycRMpKWQ/company-logo_200_200/0?e=2159024400&v=beta&t=MRb3ZSGGATtJvp6s6XQt3r_SqyhORkaleuB3bUWVe6g", Size = AdaptiveImageSize.Medium, HorizontalAlignment= AdaptiveHorizontalAlignment.Right }) ;
//card.Body.Add(new AdaptiveTextBlock() { Text = "Name", Size = AdaptiveTextSize.Medium, Weight = AdaptiveTextWeight.Bolder });
card.Body.Add(new AdaptiveTextInput() { Style = AdaptiveTextInputStyle.Text, Id = "Name", Placeholder = "Name", IsMultiline = true, IsRequired = true });
card.Body.Add(new AdaptiveTextInput() { Style = AdaptiveTextInputStyle.Tel, Id = "Mobile number", Placeholder = "Mobile number", IsMultiline = true });
card.Body.Add(new AdaptiveTextInput() { Style = AdaptiveTextInputStyle.Email, Id = "Email", Placeholder = "Email ID", IsMultiline = true, });
card.Body.Add(new AdaptiveTextInput() { Style = AdaptiveTextInputStyle.Text, Id = "Your Company Name", Placeholder = "Your Company Name", IsMultiline = true });
card.Actions.Add(new AdaptiveSubmitAction() { Title = "SUBMIT", Style = "positive", Id = "submit", Data = "submit", DataJson = "{\"submit\":\"submit\"}"});
card.Actions.Add(new AdaptiveSubmitAction() { Title = "CANCEL", Style = "negative", Id = "cancel", Data = "cancel", DataJson = "{\"cancel\":\"cancel\"}" });
return new Attachment()
{
ContentType = AdaptiveCard.ContentType,
Content = card
};
}
然后在 OnTurnAsyc Activity 的开头——
if (string.IsNullOrEmpty(turnContext.Activity.Text))
{
dynamic value = turnContext.Activity.Value;
if (value != null)
{
if (value["submit"] == "submit")
{
//bool flag = true;
isFormSubmit = true;
string text = value["submit"]; // The property will be named after your text input's ID
text = string.IsNullOrEmpty(text) ? "." : text; // In case the text input is empty
turnContext.Activity.Text = text;
}
else if (value["cancel"] == "cancel")
{
isFormCancel = true;
string text = value["cancel"]; // The property will be named after your text input's ID
text = string.IsNullOrEmpty(text) ? "." : text; // In case the text input is empty
turnContext.Activity.Text = text;
}
}
}
推荐阅读
- ruby-on-rails - 使用 Rails 的 highcharts(通过 LazyHighCharts),是否有 yDateFormat 的工具提示,用于在 Yaxis 上显示日期时间数据?
- distributed-system - aerospike 读取的强一致性 - 为什么他们需要政权编号?
- php - woocommerce 自定义运输方式未出现在运输区域
- python - 如何将我的雅虎财务输出保存到 excel 文件
- asp.net - .net IIS 表单身份验证始终拒绝访问,即使使用正确配置的 web.config
- django - 按多个条件过滤多对多关系中的对象
- functional-programming - 检查列表是否在球拍列表中包含大写或小写字母或数字
- java - 在 BottomNavigationView 中切换选项卡时出现延迟
- c - 堆缓冲区溢出试图重新分配内存。C语言
- angular - 由于不允许的 MIME 类型(“text/html”),Nginx 被阻止。角 8