2016-08-27 10 views
2

Ich möchte eine Anlage (.txt) zu Skype-Client mit Microsoft Bot Framework-V3 mit Bot Builder Nuget Paket senden (3.2.0)Dateianhang funktioniert in Microsoft Bot Emulator aber nicht in Skype

Dies ist, wie ich die Anlage erstellt:

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

Dies funktioniert für die Bot-Emulator (3.0.0.59), aber mein skype-Client (7.26.0.101) auf Windows 10 sieht nur den Text der Nachricht, aber nicht die Anlage.

Ich habe auch versucht, Skype-Web-UI in Outlook.com, auch keine Anlage.

In diesem Dokument: https://docs.botframework.com/en-us/csharp/builder/sdkreference/attachments.html

Dort heißt es:

Wenn es sich um eine Datei, um sie als Link dann einfach kommen durch

Ist dies der einzige Weg, bedeuten zu senden eine Datei mit dem BotFramework ist über einen Link? Direktversand ist nicht möglich? Aber wie funktioniert es mit dem Emulator?

+0

Mögliche Duplikat von [ein Bild senden, anstatt einen Link] (https://stackoverflow.com/questions/39246174/send-an-image-eher-als-ein-link) –

Antwort

3

Ich habe keine Ahnung, warum es im Emulator funktioniert, aber das Senden eines Bytearrays durch die Content-Eigenschaft wird nicht unterstützt. Doch nach this und this Kommentare können Sie eine Anlage senden Base64-codierte Daten URI:

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 
}; 
+0

Danke. Es funktioniert für viele Inhaltstypen einschließlich Excel. –

+0

Als Randnotiz müssen Sie nicht angeben, welche Art von Bild Sie hochladen. "Daten: Bild; Base64, ..." funktioniert wie ein Zauber. –

+0

irgendwelche Gedanken darüber, wie dies mit Node.js getan werden kann? – Srichakradhar

Verwandte Themen