【发布时间】:2018-10-17 00:24:37
【问题描述】:
我需要创建一个用户必须填写并发送的表单。所以我必须创建一个调用另一个方法的提交按钮,但我找不到提交操作和调用另一个方法之间的链接。
我的表单脚本是:
public Attachment CreateAdaptiveCardwithEntry()
{
var submitActionData = JObject.Parse("{ \"Type\": \"SaveFunction\" }");
var card = new AdaptiveCard()
{
Body = new List<CardElement>()
{
// Hotels Search form
new TextBlock() { Text = "Titre de la note des frais" },
new TextInput()
{
Id = "titre",
Speak = "<s>Veuillez saisir le titre</s>",
Placeholder = "Veuillez saisir le titre",
Style = TextInputStyle.Text
},
},
Actions = new List<ActionBase>()
{
new SubmitAction()
{
DataJson = submitActionData.ToString()
}
}
};
我卡的脚本是:
var replyMessage = context.MakeMessage();
replyMessage.Attachments = new List<Attachment> { FraisDialog.CreateAdaptiveCardwithEntry() };
await context.PostAsync(replyMessage, CancellationToken.None);
context.Wait(MessageReceived);
MessageReceivedAsync 中的脚本是:
public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{
var message = await result;
if (message.Value != null)
{
// Got an Action Submit
dynamic value = message.Value;
string submitType = value.Type.ToString();
switch (submitType)
{
case "SaveFunction":
await context.PostAsync("Please complete all the search parameters:\n");
return;
}
}
}
在此示例中,我需要使用 Id = "titre" 发送信息并随后对其进行处理,我不知道如何发送它(DataJson ?)和哪里(MessageReceivedAsync ?)。有人能帮我吗 ?我需要为卡创建另一个对话框吗?
Ps : 所有这些代码都在 rootDialog 中。
【问题讨论】:
-
您只想处理自适应卡片中输入的字段?
-
是的,这就是我想要的,但我无法触发提交操作。你能告诉我怎么做吗?
-
触发提交操作是什么意思?您没有收到“请完成所有搜索参数”的消息吗?
-
这正是我的问题所在,我没有收到“请完成所有搜索参数”消息,而是收到“抱歉,我的机器人代码有问题”,即 500内部服务器错误。
标签: azure botframework form-submit adaptive-cards