'Word as a Service' 可以通过 MS Graph API 实现吗?
Is 'Word as a Service' possible via MS Graph API?
我找到了部分拼图,但不是全部。
使用 Graph APIs,当用户在我自己的网络应用程序中选择文档时,我可以:-
- 在他们的 OneDrive 帐户中创建一个新的临时文件夹
- 将 my.docx 文件上传到此位置
- 为 my.docx
获取 url
- 在新选项卡中打开 URL,加载 Office 365 的 MSWord 编辑器(或再次单击后查看器和编辑器)
这里有点棘手。我怎样才能将编辑后的内容放回我的 Web 应用程序过去存储这些文档的位置?
理论化,我可以:-
- 为我创建的新文件夹创建webhook订阅
- 实施 webhook 侦听器(和验证)服务
当监听器收到文档的 'update' 通知时:-
- 调用下载(内容)API,或从 driveItem 元数据,从@microsoft.graph.downloadUrl
下载
- 将它保存到我的网络应用程序中我想要的位置
对我来说,这听起来像是会有很大的延迟。 Webhook 订阅通常会发送批量更改,而且频率看起来不确定。在编辑会话期间对每个单独的保存操作进行版本控制当然不是很好。
我是否错过了一些更明显的 Word 即服务路径?即另一个 API 或 API 的混合?
我考虑过但尚未确定范围的备选方案:在我自己的 Web 应用程序中实施 WOPI 或 WebDav。
今天 OneNote and Excel 是唯一通过 Microsoft Graph 中公开可用的 REST API 公开 API 的办公室 "document clients"。
我知道的唯一其他 "publicly available options" 是:
- WOPI APIs,那种行为像 REST API 但更老
- The office add-in model(托管在客户端)与 JavaScript API
- The word object library(旧的,依赖dcoms,需要机器上安装office和授权)
听起来您使用 OneDrive 只是为了利用其对 MS-WOPI protocol 的内置支持。 WOPI 基本上是一个增强的 WebDav 界面,Office 使用它来处理远程文档(即存储在 OneDrive、Box、DropBox 等上的文件)。
您的解决方案大体上很好,而且很容易编排。您完全可以使用 webhooks 来订阅文件的更改。您可能需要应用程序中的某种机制在它们 "done" 时通知您的系统,以便您可以在之后清理文件。
如果您想要更强大的解决方案,则需要查看 WOPI。实施 WOPI 将允许您将这些文件永久保留在您的系统上。 Office Online 将使用 WOPI 接口与您的存储系统和就地 open/save/edit 文件对话。
请记住,实施 WOPI(或与此相关的任何协议)通常不是一件容易的事。在使用之前,您还需要让 Office 验证您的最终解决方案并将其列入白名单。有关此过程的详细信息以及如何请求访问权限,请访问 Microsoft Cloud Storage Provider Program 网站。
我找到了部分拼图,但不是全部。
使用 Graph APIs,当用户在我自己的网络应用程序中选择文档时,我可以:-
- 在他们的 OneDrive 帐户中创建一个新的临时文件夹
- 将 my.docx 文件上传到此位置
- 为 my.docx 获取 url
- 在新选项卡中打开 URL,加载 Office 365 的 MSWord 编辑器(或再次单击后查看器和编辑器)
这里有点棘手。我怎样才能将编辑后的内容放回我的 Web 应用程序过去存储这些文档的位置?
理论化,我可以:-
- 为我创建的新文件夹创建webhook订阅
- 实施 webhook 侦听器(和验证)服务
当监听器收到文档的 'update' 通知时:-
- 调用下载(内容)API,或从 driveItem 元数据,从@microsoft.graph.downloadUrl 下载
- 将它保存到我的网络应用程序中我想要的位置
对我来说,这听起来像是会有很大的延迟。 Webhook 订阅通常会发送批量更改,而且频率看起来不确定。在编辑会话期间对每个单独的保存操作进行版本控制当然不是很好。
我是否错过了一些更明显的 Word 即服务路径?即另一个 API 或 API 的混合?
我考虑过但尚未确定范围的备选方案:在我自己的 Web 应用程序中实施 WOPI 或 WebDav。
今天 OneNote and Excel 是唯一通过 Microsoft Graph 中公开可用的 REST API 公开 API 的办公室 "document clients"。
我知道的唯一其他 "publicly available options" 是:
- WOPI APIs,那种行为像 REST API 但更老
- The office add-in model(托管在客户端)与 JavaScript API
- The word object library(旧的,依赖dcoms,需要机器上安装office和授权)
听起来您使用 OneDrive 只是为了利用其对 MS-WOPI protocol 的内置支持。 WOPI 基本上是一个增强的 WebDav 界面,Office 使用它来处理远程文档(即存储在 OneDrive、Box、DropBox 等上的文件)。
您的解决方案大体上很好,而且很容易编排。您完全可以使用 webhooks 来订阅文件的更改。您可能需要应用程序中的某种机制在它们 "done" 时通知您的系统,以便您可以在之后清理文件。
如果您想要更强大的解决方案,则需要查看 WOPI。实施 WOPI 将允许您将这些文件永久保留在您的系统上。 Office Online 将使用 WOPI 接口与您的存储系统和就地 open/save/edit 文件对话。
请记住,实施 WOPI(或与此相关的任何协议)通常不是一件容易的事。在使用之前,您还需要让 Office 验证您的最终解决方案并将其列入白名单。有关此过程的详细信息以及如何请求访问权限,请访问 Microsoft Cloud Storage Provider Program 网站。