Вложение файла работает в эмуляторе Microsoft Bot, но не в Skype

Я хочу отправить вложение (.txt) клиенту Skype с помощью Microsoft Bot Framework V3 с пакетом Nuget Bot Builder (3.2.0)

Вот как я создал вложение:

var replayFile = new Microsoft.Bot.Connector.Attachment();
replayFile.Name = "FileName";
replayFile.Content = "ByteArray";
replayFile.ContentType = "text/plain";

Это работает для эмулятора бота (3.0.0.59), но мой клиент скайпа (7.26.0.101) в Windows 10 видит только текст сообщения, но не вложение.

Я также попробовал веб-интерфейс Skype в Outlook.com, тоже без вложений.

В этом документе: https://docs.botframework.com/en-us/csharp/builder/sdkreference/attachments.html

В нем говорится:

Если это файл, то он просто появится как ссылка

Означает ли это, что единственный способ отправить файл с помощью BotFramework — по ссылке? Отправка напрямую невозможна? Но как это работает с помощью эмулятора?


person Miaosen Wang    schedule 27.08.2016    source источник
comment
Возможный дубликат отправить изображение, а не ссылку   -  person Ezequiel Jadib    schedule 11.07.2017


Ответы (1)


Я понятия не имею, почему это работает в эмуляторе, но отправка массива байтов через свойство Content не поддерживается. Однако согласно этому и этот комментарий, вы можете отправить вложение, используя URI данных в кодировке base64:

byte[] data = GetAttachmentData();
var contentType = "text/plain";
var replayFile = new Microsoft.Bot.Connector.Attachment
{
    Name = "FileName.txt",
    ContentUrl = $"data:{contentType};base64,{Convert.ToBase64String(data)}",
    ContentType = contentType
};
person Eugene Berdnikov    schedule 04.09.2016
comment
Кстати, вам не нужно указывать, какое изображение вы загружаете. data:image;base64,... работает как шарм. - person Simon Mattes; 04.12.2016
comment
@srichakradhar Если тот же подход не работает, я думаю, вам нужно задать отдельный вопрос о переполнении стека. - person Eugene Berdnikov; 01.12.2017