azure - 机器人生成器:自适应卡片 - 提交时调用方法
问题描述
我需要创建一个用户必须填写并发送的表单。所以我必须创建一个调用另一个方法的提交按钮,但我找不到提交操作和调用另一个方法之间的链接。
我的表格脚本是:
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中。
解决方案
我没有收到消息“请完成所有搜索参数”
如果您的所有代码都在 RootDialog 中,请使用 context.Wait( MessageReceivedAsync ); 发送附件后。
我需要使用 Id = "tire" 发送信息并在之后进行处理
单击提交按钮时,表单数据照常发送到 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;
}
}
推荐阅读
- python - 如何在 Python 中制作密码检查器?
- visual-studio-code - 是否可以构建一个允许用户提供自己的语法的 VS Code 扩展?
- firebase - Flutter Class '_JsonQuerySnapshot' 没有实例 getter 'documents'
- rust - NEAR 智能合约生锈错误:“无法使用 Borsh 反序列化值”
- r - 使用棒球拉日期范围的最佳方法?
- javascript - 单击元素时如何隐藏或显示所需的块?
- python - 我在 python 上做一个虚拟助手,我不知道为什么语音识别不听并打印我所说的
- python - 如何将浮点像素值写入带有枕头的图像文件?
- postgresql - 为 RHEL 8 设置 ODBC,出现错误 [IM002][unixODBC]Missing database name in call to CC_connect
- python - 如何将给定数据的输出转换为字典格式?