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团队中不起作用。
答案 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文件。