Как вы отправляете PDF-файл, используя бот-фреймворк на канале Skype? - PullRequest
0 голосов
/ 12 февраля 2019

Я хотел бы отправить файл PDF с использованием bot-framework на канал Skype.Аналогично тому, как это делается на телеграмме. Bot Framework: отправьте pdf-файл на Telegram .Я действительно изо всех сил пытаюсь найти полезную документацию по использованию канала Skype с bot-framework.CardAttachments не работают, даже если они скоро появятся два года назад.Как и в примере с Telegram, у меня есть 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 запрещает вам отправлять PDF-файлы в виде вложений в любой форме (ссылки, локальный файл или Base64Strings) , вы можете отправлять их в виде ссылок , просто вставив ссылку в текст.Похоже, вы можете отправлять ссылки и локальные файлы в WebChat. Отправка сообщения с ответом Bot с вложением с использованием Bot Framework содержит множество примеров различных подходов.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Хотя Skype запрещает вам отправлять PDF-файлы в виде вложений в любой форме (ссылки, локальный файл или Base64Strings), вы можете отправлять их как ссылки , просто внедрив ссылку в ваш текст.

0 голосов
/ 13 февраля 2019

Я знаю, что по состоянию на это время в прошлом году канал Skype не поддерживал отправку вложений в формате PDF пользователям из-за проблем безопасности - вы можете увидеть более подробную информацию об этой проблеме здесь .Я не смог найти ни одной недавней документации, противоречащей этому, и при этом я не смог отправить PDF-вложение через моего тестового бота в Skype.Я мог бы, однако, отправить PDF в эмулятор и веб-чат.К сожалению, я считаю, что отправка вложений в формате PDF по-прежнему не поддерживается каналом Skype.

Вот пример кода, который я использовал для отправки вложения в PDF в эмулятор и веб-чат:

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);

Извините, яне могло быть больше помощи.

...