您如何在Skype频道上使用漫游器框架发送pdf文件?

时间:2019-02-12 19:38:21

标签: pdf botframework skype

我想在Skype频道上使用bot-framework发送pdf文件。类似于在电报频道上执行此操作的方式。 Bot Framework: send pdf file on Telegram。我真的很难找到有关将Skype通道与bot框架一起使用的有用文档。 CardAttachments即使在两年前即将推出也不起作用。像电报示例一样,我将pdf作为base64字符串。我无法使用链接,因为pdf是根据用户输入生成的。

这是我发送图像的方式。我认为这是相似的。

        var cardAttachment = new Attachment()
        {
            ContentUrl = "https://my.url/file.png",
            ContentType = "image/png",
            Name = "filename.png",
        };
        var reply = turnContext.Activity.CreateReply();
        reply.Attachments = new List<Attachment>() { cardAttachment };
        reply.Text = "Some useful text to go along with the image.";
        await turnContext.SendActivityAsync(reply, cancellationToken);

我尝试过

        var values = new Dictionary<string, string>();
        ...
        var content = new FormUrlEncodedContent(values);
        var response = await Client.PostAsync(@"https://my.url/report.php", content);
        var report = await response.Content.ReadAsByteArrayAsync();
        var cardAttachment = new Attachment()
        {
            ContentUrl = "data:application/pdf;base64," + Convert.ToBase64String(report),
            ContentType = "application/pdf",
            Name = $"{answers.Name}.pdf",
        };
        var reply = turnContext.Activity.CreateReply();
        reply.Attachments = new List<Attachment>() { cardAttachment };
        reply.Text = $"{answers.Name} here is your report.";
        await turnContext.SendActivityAsync(reply, cancellationToken);

似乎很近但是很正确。

更新:尽管Skype阻止您以任何形式(链接,本地文件或Base64Strings)将PDF作为附件发送,您也可以通过简单地嵌入链接将其作为链接发送在您的文字中。看起来您可以将链接和本地文件发送到WebChat。 Sending Bot Reply message with attachment using Bot Framework有许多使用各种方法的示例。

2 个答案:

答案 0 :(得分:0)

我知道截至去年的这个时候,出于安全考虑,Skype频道不支持向用户发送PDF附件-您可以查看有关此问题的更多详细信息here。我没有找到与此相反的任何最新文档,也没有能够通过测试机器人将PDF附件发送给Skype。但是,我可以将PDF发送到Emulator和WebChat。不幸的是,我相信Skype频道仍不支持发送PDF附件。

这是我用来将PDF附件发送到模拟器和WebChat的示例代码:

var reply = turnContext.Activity.CreateReply();

// Create an attachment.
var attachment = new Attachment
{
    ContentUrl = "<path_to_file>/<filename>.pdf",
    ContentType = "application/pdf",
    Name = "<filename>.pdf",
};

// Add the attachment to our reply.
reply.Attachments = new List<Attachment>() { attachment };

// Send the activity to the user.
await turnContext.SendActivityAsync(reply, cancellationToken);

对不起,我没有更多帮助。

答案 1 :(得分:0)

尽管Skype阻止您以任何形式(链接,本地文件或Base64Strings)以附件的形式发送PDF,但您只需将链接嵌入到您的计算机中,就可以将它们作为链接发送。文本。