【问题标题】:How to do downloadable file in response from the bot如何响应机器人的可下载文件
【发布时间】:2019-06-09 17:01:22
【问题描述】:

你好:)

挑战 Skype;机器人框架;接收可下载的文件

我有一个问题。我的项目是向机器人询问一些事情(目前使用 Bot Framework Emulator,但稍后我将使用 Skype),机器人会用附加的图像/图表回答。 我可以通过界面显示答案和图像。但是,用户无法下载此图像。

我该怎么做? AdaptiveCard 消息中有一个选项可以通过按钮下载附加的图像?

我尝试使用 HeroCard、ThumbnailCard、AdaptiveCard 和一个简单的附件,但它并没有解决我的问题。

提前致谢:)

【问题讨论】:

    标签: node.js download botframework skype


    【解决方案1】:

    有几种不同的方法可以解决这个问题。

    使用卡片

    首先,卡片不允许您直接下载附件。充其量,他们可以将您链接到您希望用户下载的图像(或其他文件)。示例json 的自适应卡可以做到这一点:

    {
        "type": "AdaptiveCard",
        "body": [
            {
                "type": "Image",
                "selectAction": {
                    "type": "Action.OpenUrl",
                    "url": "https://dev.botframework.com/Client/Images/ChatBot-BotFramework.png"
                },
                "url": "https://dev.botframework.com/Client/Images/ChatBot-BotFramework.png"
            },
            {
                "type": "TextBlock",
                "text": "This card's action will open an image"
            }
        ],
        "actions": [
            {
                "type": "Action.OpenUrl",
                "title": "Open Image",
                "url": "https://dev.botframework.com/Client/Images/ChatBot-BotFramework.png"
            }
        ],
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
        "version": "1.0"
    }
    

    看起来像这样:

    此卡片显示一张图片并包含一个供用户打开和下载的链接。因为我直接在图片上加了Action.OpenUrl,所以用户可以点击图片打开然后下载——“打开图片”按钮只是为了展示另一种方法。

    这里是自适应卡DocumentationSchemauser-friendly Designer 的绝佳网站。请注意,此时 Designer 不允许您轻松添加 Actions。您必须手动将它们添加到 JSON 部分。

    发送附件

    但是,您可以直接发送包含下载文件功能的消息。

    您可以使用以下方式定义附件:

    const attachment = {
      name: 'PDF',
      contentType: 'application/pdf',
      contentUrl: 'https://media.readthedocs.org/pdf/microsoftbotframework/latest/microsoftbotframework.pdf',
    }
    

    然后将其发送给用户:

    await step.context.sendActivity({
      text: 'Attachment',
      attachments: [attachment],
    });
    

    两个重要说明:

    1. 此方法适用于发送文件。如果您使用图像,它将显示一个不可点击的图像。这意味着自适应卡片更适合发送可下载的图像。

    2. 您的代码可能使用 step.context 以外的其他内容。这是为了将其作为瀑布对话框的一部分发送。您的机器人可能需要其他版本的 context.sendActivity

    如果您发现这回答了您的问题,请将其标记为“已回答”,我可以将其从我的支持工单跟踪器中清除。否则,请随时发表评论,我可以进一步帮助您。

    【讨论】:

    • 非常感谢这个准确的答案 :) 但是,我只看到 http 链接。下载本地文件呢?我可以使用 __dirname+"/myImg.png" 通过给定其规范路径来显示本地文件。我也可以通过在“url”参数中给出相同的规范路径来下载它。但是,当触发 Action.OpenUrl 时,它是在安装 botFramework 的本地启动还是在运行 nodejs SDK 的本地启动?
    【解决方案2】:

    [建议删除 - 我认为您的意思是评论而不是回答。]

    【讨论】:

      猜你喜欢
      • 2016-05-19
      • 2021-12-30
      • 2011-03-08
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 2012-12-06
      相关资源
      最近更新 更多