Существует несколько способов сделать это.
Использование карточек
Во-первых, карточки не позволяют напрямую загружать вложения.В лучшем случае они могут связать вас с изображением (или другим файлом), который вы хотите, чтобы ваш пользователь загрузил.Пример 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
непосредственно к изображению, пользователь может щелкнуть изображение, чтобы открыть, а затем загрузить его - кнопка «Открыть изображение» просто для демонстрации другого метода.
Вот отличный веб-сайт дляАдаптивная карта Документация , Схема и Удобный конструктор .Обратите внимание, что в данный момент конструктор не позволяет легко добавлять 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],
});
Два важных примечания:
Этот метод хорошо работает для отправки файлов.Если вы используете изображение, оно будет отображать неклейкое изображение.Это означает, что для отправки загружаемых изображений лучше использовать Adaptive Cards.
Ваш код может использовать что-то отличное от step.context
.Это для отправки в рамках диалога водопада.Возможно, вам понадобится другая версия context.sendActivity
для вашего бота.
Если вы нашли ответ на свой вопрос, отметьте его как «Отвечено», и я могу снять его с поддержкитрекерВ противном случае, не стесняйтесь комментировать, и я могу помочь вам в дальнейшем.