自适应卡提交操作

2024-01-10

我使用 JSON 格式生成了一张自适应卡,其中有两个按钮“提交”和“取消”,分别返回“messageBack”消息作为提交和取消。 我正在使用 C# 来访问回复,但我无法弄清楚如何从自适应卡访问回复。

我的json是

    {
      "type": "AdaptiveCard",
      "selectAction": {        
        "type": "Action.Submit"
      },
      "body": [
        {
          "type": "TextBlock",
          "horizontalAlignment": "Center",
          "size": "Large",
          "weight": "Bolder",
          "color": "Accent",
          "text": "Meeting Composer Create"
        },
        {
          "type": "ColumnSet",
          "columns": [
            {
              "type": "Column",
              "items": [
                {
                  "type": "TextBlock",
                  "horizontalAlignment": "Left",
                  "spacing": "Medium",
                  "size": "Medium",
                  "weight": "Bolder",
                  "color": "Accent",
                  "text": "Attendees:"
                 }
              ],
              "width": "stretch"
            },
            {
              "type": "Column",
              "items": [
                {
                  "type": "TextBlock",
                  "id": "attendeeVal",
                  "text": "a"
                }
              ],
              "width": "stretch"
            }
          ]
        },
        {
          "type": "ColumnSet",
      "columns": [
        {
          "type": "Column",
          "items": [
            {
              "type": "TextBlock",
              "size": "Medium",
              "weight": "Bolder",
              "color": "Accent",
              "text": "Subject:"
            }
          ],
          "width": "stretch"
        },
        {
          "type": "Column",
          "items": [
            {
              "type": "TextBlock",
              "id": "subVal",
              "text": "meeting"
            }
          ],
          "width": "stretch"
        }
      ]
    },
    {
      "type": "ColumnSet",
      "columns": [
        {
          "type": "Column",
          "items": [
            {
              "type": "TextBlock",
              "size": "Medium",
              "weight": "Bolder",
              "color": "Accent",
              "text": "Date:"
            }
          ],
          "width": "stretch"
        },
        {
          "type": "Column",
          "items": [
            {
              "type": "TextBlock",
              "id": "dateVal",
              "text": "17/11/2018 10.30 AM"
            }
          ],
          "width": "stretch"
        }
      ]
    },
    {
      "type": "ColumnSet",
      "columns": [
        {
          "type": "Column",
          "items": [
            {
              "type": "TextBlock",
              "size": "Medium",
              "weight": "Bolder",
              "color": "Accent",
              "text": "Document Name:"
            }
          ],
          "width": "stretch"
        },
        {
          "type": "Column",
          "items": [
            {
              "type": "TextBlock",
              "id": "docVal",
              "text": "Document1"
            }
          ],
          "width": "stretch"
        }
      ]
    }
  ],
  "actions": [
    {
      "type": "Action.Submit",
      "title": "Submit",
      "data": {
        "msteams": {
          "type": "messageBack",
          "displayText": "I clicked this button",
          "text": "text to bots",
          "value": "Submit"
        }
      }
    },
    {
      "type": "Action.Submit",
      "title": "Cancel",
      "data": {
        "msteams": {
          "type": "messageBack",
          "displayText": "I clicked this button",
          "text": "text to bots",
          "value": "Cancel"
        }
      }
    }
  ],
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.0"
}

我的 C# 是

 var response = getCard(stepContext, "Aditya Rao, Vishal Subramaniam" , "Scrum Meeting" , "17/11/1028, 10:30AM" , "Scrum Sprint.pptx");
 await stepContext.Context.SendActivityAsync(response).ConfigureAwait(false);

我要支持的附加功能是

private static Attachment CreateAdaptiveCardAttachment(string filePath, string names, string subj , string datee, string docs)
    {
        var adaptiveCardJson = File.ReadAllText(filePath);
        dynamic obj = JsonConvert.DeserializeObject(adaptiveCardJson);
        obj["body"][1]["columns"][1]["items"][0]["text"] = names;
        obj["body"][2]["columns"][1]["items"][0]["text"] = subj;
        obj["body"][3]["columns"][1]["items"][0]["text"] = datee;
        obj["body"][4]["columns"][1]["items"][0]["text"] = docs;
        var adaptiveCardAttachment = new Attachment()
        {
            ContentType = "application/vnd.microsoft.card.adaptive",
            Content = obj,
        };
        return adaptiveCardAttachment;
    }


    // Create an attachment message response.
    private Activity CreateResponse(Activity activity, Attachment attachment)
    {
        var response = activity.CreateReply();
        response.Attachments = new List<Attachment>() { attachment };
        return response;
    }


    private Activity getCard(WaterfallStepContext stepContext, string names, string subj , string datee, string docs)
    {
        var jsonFilePath = @".\Dialogs\CardTemplates\MeetingComposerCreate.json";
        var activity = stepContext.Context.Activity;
        var adCard = CreateAdaptiveCardAttachment(jsonFilePath,names,subj,datee,docs);
        var response = CreateResponse(activity, adCard);
        return response;
    }

单击“提交”或“取消”后如何访问值响应?

另外,如果有人可以帮助我找到如何从 input.choice 获取回复以获取所选卡片的复选框数据。


单击“提交”或“取消”后如何访问值响应?

我们可以通过以下方式获取用户从自适应卡提交的值Activity.Value财产。

if(turnContext.Activity.Value!= null)
{

    reply.Text = $"submit data: {turnContext.Activity.Value}";

}

测试结果:

模拟器中的输出:

另外,如果有人可以帮助我找到如何从 input.choice 获取回复以获取所选卡片的复选框数据。

要显示选项供用户选择并获取所选选项,可以参考以下代码片段。

在 json 文件中:

{
  "type": "Input.ChoiceSet",
  "id": "optionSelection",
  "isMultiSelect": true,
  "style": "compact",
  "choices": [
    {
      "title": "option1",
      "value": "option1"
    },
    {
      "title": "option2",
      "value": "option2"
    },
    {
      "title": "option3",
      "value": "option3"
    }
  ]
}

使用相同的代码来获取用户的选择:

reply.Text = $"submit data: {turnContext.Activity.Value}";

测试结果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自适应卡提交操作 的相关文章

  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 使用

    因此 我决定开始使用 C 进行编程 我所做的一件事就是创建一个 pausec exe pause exe 克隆 它有效 但是当像这样调用它时 lt nul pausec 它崩溃了 据我所知 我得到的错误是这样的 未处理的异常 System
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 如何在 MVC 配置中允许匿名 Twitter 连接

    使用 春季社交 1 1 4 春季社交推特 1 1 2 spring mvc 4 2 在 Tomcat 7 上 下面是我的 MVC 应用程序的 tomcat 配置 包括 twitter 设置和 usersConnectionRepositor
  • 0-1 背包有额外限制(彩色物品)?

    我研究这个问题主要是出于工作间隙的好奇心 想象一下正常的 0 1 背包问题 除了所有物品都是黄色 红色 蓝色或绿色之外 并且由于你的强迫症 你的背包中每种颜色必须恰好有 2 件物品 因此 每个项目都有 3 个属性 而不是普通项目 重量 价值
  • 如何在 Gradle 中使用自定义 Java 注释处理器?

    我一直在研究一个简单的java注释处理器 它扩展了AbstractProcessor 我已经能够成功地测试这个使用javac Processor MyProcessor mySource java 问题是使用 Android Studio
  • 文档写入问题

    我正在制作一个页面 用户可以在其中回答有关他们要回售的产品的问题 使用单选按钮 当他们点击页面底部的按钮时 就会弹出报价 我编写了一个 JavaScript 函数 当用户点击按钮时执行 它计算价格并使用 document write 显示它
  • 如何为 Elixir 结构验证/强制执行类型和值?

    如何为 Elixir Structs 验证 强制执行值的类型和范围 例如在结构创建期间 如果提交无效类型 值 则抛出错误 lat 应该是数字并且在 90 0 和 90 0 之间 lon 应该是数字并且在 180 0 和 180 0 之间 d
  • 如何将所有请求重定向到nginx中的同一个文件?

    我的根目录 网络 应用程序 src 在这个目录中我有 2 个目录 js 和 assets 和一个文件index html 这就是我需要实现的目标 任何对 js 或 assets 或 index html 的请求都只是从根目录提供文件 例如
  • 变体调试没有类型为 INSTANT_RUN_MERGED_MANIFESTS 的输出

    我想做的事和问题 我将 Android Studio 和 Android Gradle 插件更新为 3 0 0 将 Gradle Wrapper 更新为 4 2 1 并希望通过 IDE 在设备上构建和部署我的 Android Gradle
  • 重构 python 模块配置以避免相对导入

    这与一个上一个问题 https stackoverflow com questions 343517 how do i work with multiple git branches of a python module我的 我了解如何存储
  • 如何使用runOnUithread运行?

    我正在开发的应用程序有一个连接到 mysql 数据库的登录 注册 起初我在UI Thread我后来发现它不起作用 因为反对在 Android 上运行长代码UI Thread 我尝试编辑代码以在新的计算机上运行长任务Thread我补充说 现在
  • 找不到模块“@vaadin/flow-frontend/Flow”

    Vaadin 突然停止构建我的库 并出现以下错误 我已经跳过 Vaadin 舞蹈 还有很多其他的东西 但我现在没有主意了 我尝试构建用于生产的库 但对于开发来说也失败了 我正在使用 Vaadin Flow Github 上的问题跟踪器重定向
  • UIImagePickerController 保存到磁盘然后加载到 UIImageView

    我有一个 UIImagePickerController 将图像以 png 格式保存到磁盘 当我尝试加载 PNG 并设置 UIImageView 时imageView image到该文件 它不显示 这是我的代码 void imagePick
  • PHP 在非静态方法上调用 self

    为什么本例中对非静态方法的 自我 调用有效 class A protected function aNonStaticMethod return class public function aEcho echo self aNonStati
  • 如何在现有环境中添加功能

    是否可以使用env 作为命名空间的替代品 在向环境添加函数之前如何检查环境是否已经存在 这与这个问题以及布伦丹的建议有关如何组织大型R程序 https stackoverflow com questions 1266279 how to o
  • Windows Defender - 以编程方式添加排除文件夹

    我出于研究目的检查了不同的键盘记录器 并偶然发现了 Refog https www refog com keylogger https www refog com keylogger 这个程序可以捕获很多系统事件 但真正引起我注意的是其他东
  • 附加类型的实体失败,因为相同类型的另一个实体已具有相同的主键值

    错误消息 附加该类型的实体失败 因为同一类型的另一个实体已具有相同的主键值 问题 如何以与下面代码中的 AttachActivity 方法所示类似的方式附加实体 我必须假设上面的错误消息的 另一个实体 部分指的是内存中存在但超出范围的对象
  • EF linq/lambda .contains(list[String])?

    有什么方法可以评估字符串是否包含列表的某些元素或列表的所有元素 使用 linq 到实体 我一直在尝试使用 predicateBuilder 和其他方法 但我对这些不是 100 EDIT 就像是 string words searchStri
  • 使用 serde 反序列化带有 Enum 键的 HashMap

    我有以下 Rust 代码 它模拟了一个配置文件 其中包括HashMap键控有一个enum use std collections HashMap use serde Deserialize Serialize derive Debug Cl
  • Google 机器学习套件,在 Android 上使用 ML Kit 识别图像中的文本错误 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我尝试安装 在 Android 上使用 ML Kit 识别图像中的文本 然后运行此应用程序 但出现此错误 com goo
  • Fabric + DigitalOcean:不可见的环境变量?

    我在 DigitalOcean 上有服务器 我使用 Fabric 来部署我的代码 我的代码依赖于环境变量 烧瓶配置 我今天遇到了一个奇怪的麻烦 在服务器上 root bashrc我已经添加了下一行 export CONFIG path to
  • 自适应卡提交操作

    我使用 JSON 格式生成了一张自适应卡 其中有两个按钮 提交 和 取消 分别返回 messageBack 消息作为提交和取消 我正在使用 C 来访问回复 但我无法弄清楚如何从自适应卡访问回复 我的json是 type AdaptiveCa