我需要创建一个用户必须填写并发送它的表单。所以我必须创建一个调用另一个方法的提交按钮,但我找不到提交操作和对另一个方法的调用之间的链接。
我的表格的脚本是:
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”的信息并在之后进行pprocess,我不知道如何发送它(DataJson?)和where(MessageReceivedAsync?)。有人能帮我吗 ?我是否需要为卡片创建另一个对话框?
Ps:所有这些代码都在rootDialog中。
答案 0 :(得分:0)
我没有收到消息'请完成所有搜索参数'
如果您的所有代码都在RootDialog中,请使用context.Wait( MessageReceivedAsync );发送附件后。
我需要发送带有Id =“titre”的信息并在之后处理
单击提交按钮时,表单数据将照常发送到MessageReceived方法。如果您只想访问自适应卡中的字段,则可以访问动态变量值。这是一个例子。
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":
if(value.titre == "")
{
await context.PostAsync("Please complete all the search parameters:\n");
}
else
{
await context.PostAsync($"You entered {value.titre}");
}
return;
}
}