【问题标题】:How to pass custom data into teams task module from bot adaptive card如何将自定义数据从机器人自适应卡传递到团队任务模块
【发布时间】:2021-05-29 04:36:05
【问题描述】:

我有一个团队机器人 (nodejs),它使用一些表格数据呈现自适应卡片。我们希望通过在任务模块中构建一个 javascript 小部件来提供更丰富的数据查看体验,该小部件将使用交互式 D3 图表显示数据。

基本上自适应卡片会有一个“查看更多”按钮,它将调用一个包含 html 内容的任务模块。

我想不通的部分是如何从任务模块中的 html 访问数据。我意识到有一个名为microsoftTeams 的全局对象包含元数据和上下文,但它似乎并不特定于被单击的自适应卡(调用任务模块的自适应卡)。它包含更多用于团队的全局信息,例如用户和对话元数据。

在将任务模块作为自定义参数调用时,我能够将数据插入到 taskInfo 对象中。所以我的问题是,有没有办法从 HTML iframe 内部访问 taskInfo 对象?

【问题讨论】:

    标签: node.js microsoft-teams


    【解决方案1】:

    我正在使用查询字符串从服务器获取数据到客户端(可能有更好的方法,希望@Saonti-MSFT 以更简单/更清洁的方式回来)。

    这是我的任务对象:

    task: {
      type: "continue",
      value: {
        url: `${process.env.HostName}?message=${JSON.stringify(Buffer.from(message).toString("base64"))}`,
        width: 500, 
        height: 736
      },
    }
    

    然后我在客户端获取搜索查询并将其转换回执行以下操作

    const urlParams = new URLSearchParams(window.location.search);
    const message = urlParams.get('message');
    
    // Needed to remove the quotes and convert spaces to "+" as this was getting lost
    const data = atob(message.replace(/"/g,"").replace(/\s/g, "+"));
    
    

    注意:我只是为单个字符串执行此操作,但我不明白如果您将对象转换为服务器上的字符串然后解析它,为什么不能使用它客户。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      您可以查看此Sample。这里有可以自定义的 HTML 页面。您可以创建自己的网页并集成到任务模块中。

      【讨论】:

      • 我正在查看 JS 版本,但在示例中的任何地方都看不到 HTML 页面上使用了任务信息中的数据?
      • 请问您有在 iframe @Saonti-MSFT 内的 HTML 页面上使用的自定义数据的示例吗?
      • @Ghojzilla - 当您提交任务模块 submitHandler 函数驻留在 TaskInfo.url 网页中。请检查此docs?
      • @Nikitha-MSFT - 我对提交处理程序的理解是当从网页调用microsoftTeams.tasks.submitTask 时调用它。不要像字符串一样将数据从服务器传递到客户端。 (我已经提交了一个答案,这可能会使我的意思更清楚一些)。您是否能够使用提交处理程序将数据从服务器传递到网页?网页是否可以访问提交处理函数来提取数据?
      猜你喜欢
      • 1970-01-01
      • 2021-12-03
      • 2022-06-29
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 2020-12-04
      • 2021-09-27
      • 2020-10-09
      相关资源
      最近更新 更多