无法将Bot的pdf文件发送给ms团队中的用户

时间:2018-11-30 15:06:34

标签: node.js botframework microsoft-teams

NodeJS BotBuilder SDK版本:3.15.0 我的代码:

var pdf = {
  name: '<file_name>.pdf',
  contentType: 'application/pdf',
  contentUrl: '<https url to public pdf file>'
};
var reply = new builder.Message(session).addAttachment(pdf);
session.send(reply);

在一些在线示例中,此代码是相同的。我遇到的问题是我总是会出错:

Error: POST to 'https://smba.trafficmanager.net/emea/v3/conversations/a%3A1TwHmhoGuZP2Mf9P0TTnjv8HkcaXzEHryv0sYCvDDUI-qrMitJtHRlAnIcedcDH_v3IfMBXtg_zo5MDVcS0-8hDCQ4sJzpJhrewBPK8uWJXYeShgmd-s7uh5o8kW4ebAP/activities/1543588440246' failed: [400] Bad Request

对于image / png,此代码可以正常工作。

我要实现的是:(图像取自Bot Framework Emulator) File from the web sent from bot to user

文件是从bot发送的,没有将其上传到用户的一个驱动器。 当我在https://dev.botframework.com/bots的“测试”部分中测试功能时,此功能也有效。它仅在ms团队中不起作用。

1 个答案:

答案 0 :(得分:0)

每个通道的发送文件行为可能不同。 Microsoft Teams不像WebChat / Emulator那样支持直接上载方法。这是由于合规性原因as Bill Bliss stated

  

您可以使用OneDrive和SharePoint的Microsoft Graph API发布带有引用现有SharePoint文件的带有卡附件的邮件。使用Graph API需要通过标准的OAuth2授权流程访问用户的OneDrive文件夹(用于个人和小组聊天文件)或团队渠道中的文件(用于渠道文件)。此方法适用于所有Teams上下文。

请查看Send and receive files through your bot ,以获取完整的文档以及如何实现。


另一种选择是使用AdaptiveCard,您可以在其中使用文档的图像缩略图和按钮来直接从公共可访问URL下载PDF文件。