【问题标题】:Unable to send pdf file from bot to user in ms teams无法将 pdf 文件从机器人发送给 ms 团队中的用户
【发布时间】:2018-12-04 02:35:09
【问题描述】:

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

文件是从机器人发送的,没有上传到用户的一个驱动器。 当我在https://dev.botframework.com/bots 的测试部分测试该功能时,这也有效。它不仅适用于 ms 团队。

【问题讨论】:

  • 您查看过Send and receive files through your bot 文档吗? Microsoft Teams 上的流程似乎有所不同,您必须在清单中启用它。
  • 是的,我做到了。我已经启用了清单中的流程并根据文档做了所有事情,这部分非常好。我想要实现的只是能够向用户发送 pdf 文件而无需请求许可并将文件上传到用户的一个驱动器。我将编辑我的帖子以更好地解释。 @米克

标签: node.js botframework microsoft-teams


【解决方案1】:

发送文件的行为可能因通道而异。 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 文件。

【讨论】:

  • 顺便说一句,限制的原因与文档的内置渲染无关。这是因为出于合规性原因,从 Office 365 上传和下载文档受到严格控制。
  • 感谢@BillBliss-MSFT 的澄清!
猜你喜欢
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多