Как сделать скачиваемый файл в ответ от бота - PullRequest
0 голосов
/ 15 января 2019

Привет! :)

вызов по скайпу; Bot Framework; получать загружаемые файлы

У меня есть проблема. Мой проект - что-то спросить у бота (в настоящее время я использую Bot Framework Emulator, но позже я буду использовать Skype), и бот отвечает с приложенным изображением / диаграммой. Я могу отображать через интерфейс ответ и изображение. Однако пользователь не может загрузить это изображение.

Как я могу это сделать? В сообщении AdaptiveCard есть опция, позволяющая загрузить прикрепленное изображение с помощью кнопки?

Я пытался использовать HeroCard, ThumbnailCard, AdaptiveCard и простое вложение, но это не решило мою проблему.

Заранее спасибо:)

Ответы [ 2 ]

0 голосов
/ 18 января 2019

[рекомендуем удалить - я думаю, что вы хотели комментировать вместо ответа.]

0 голосов
/ 16 января 2019

Существует несколько способов сделать это.

Использование карточек

Во-первых, карточки не позволяют напрямую загружать вложения.В лучшем случае они могут связать вас с изображением (или другим файлом), который вы хотите, чтобы ваш пользователь загрузил.Пример 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"
}

И выглядит так:

Adaptive Card With Clickable Image

Эта картаотображает изображение и содержит ссылку для пользователя, чтобы открыть и загрузить его.Поскольку я добавил Action.OpenUrl непосредственно к изображению, пользователь может щелкнуть изображение, чтобы открыть, а затем загрузить его - кнопка «Открыть изображение» просто для демонстрации другого метода.

Вот отличный веб-сайт дляАдаптивная карта Документация , Схема и Удобный конструктор .Обратите внимание, что в данный момент конструктор не позволяет легко добавлять Action s.Вы должны вручную добавить их в часть 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. Этот метод хорошо работает для отправки файлов.Если вы используете изображение, оно будет отображать неклейкое изображение.Это означает, что для отправки загружаемых изображений лучше использовать Adaptive Cards.

  2. Ваш код может использовать что-то отличное от step.context.Это для отправки в рамках диалога водопада.Возможно, вам понадобится другая версия context.sendActivity для вашего бота.

Если вы нашли ответ на свой вопрос, отметьте его как «Отвечено», и я могу снять его с поддержкитрекерВ противном случае, не стесняйтесь комментировать, и я могу помочь вам в дальнейшем.

...