2019年3月8日,星期五

从模板创建Microsoft Teams

One thing we’一直在等待的是从一个团队创建许多团队的能力 模板,就像许多组织使用SharePoint网站一样。 Microsoft现在已经发布了此文件(在撰写本文时为预览),我们可以定义一个 JSON中的模板,确切定义了团队的外观,包括 频道,标签,已安装的应用,所有者和各种配置 设置。很好,因为我们现在可以处理诸如 项目团队,其中可能有“Technical”, “Account 管理”, “Project delivery”, “Client success” and so on. You can 想象在不同渠道中定义的各种标签-也许 帐户管理频道将有一个带有窗口小部件的标签,用于 CRM中的摘要数据。也许技术频道会有一个标签 也显示来自Azure Dev Ops的当前工作项。正在制作应用 许多团队可用的可能是3rd 第三方应用可用 团队商店或内部开发的自定义商品。

与模板化团队合作所需的工作总结如下:



因此,这些都是由开发人员主导的。它为N’t好像模板是 例如存储在Teams服务中的某个地方-最终是开发人员 正在编写代码以将一些JSON传递给对Graph的调用。还有这个JSON 包含团队创建的所有细节–名称,说明, 频道设置,已安装的应用等。当我’一直在与 API,我’我发现有一些代码可以分解构建JSON 是有用的。特别地,将其分为两个部分似乎很有用:

  • 对于每个正在创建的团队而言,事情都会发生变化(名称,说明, 拥有者)

    ..和..

  • 保持不变并被视为模板一部分的内容 (渠道设置,已安装的应用程序等)
因此,本文旨在提供一些简单的代码,以防其他人发现 它很有用。那里’这里没有什么太复杂的,但是我’我试图获得更多 通过Github共享少量代码的习惯。

有关JSON结构和Graph调用的详细信息,请参见 //docs.microsoft.com/en-us/graph/api/team-post?view=graph-rest-beta。如文档所示,创建团队的示例JSON可能看起来像 像这样(这是来自文档的示例):

So, although we’重新构造此JSON并将其传递给Graph 开发人员可以选择:

  • 创建一个包含不变部分的静态JSON文件,并将其视为 的“template”
  • 编写一些代码以附加代表团队名称,描述的JSON 和所有者

您可能从上面的摘录中注意到,所有者需要 以GUID的形式指定,而不是您最有可能拥有的( 用户’s account name/e-mail address). This GUID is 的用户 identifier in AAD。因此,我们 ’ll also need a method in our code to lookup a 用户 帐户名称的GUID。

我们可以在团队模板中定义什么?

这里’s a summary:

设置
能见度 公共/私人
已安装的应用 [应用目录中的任何应用]
拥有者 [List of 用户s]
频道详情 标签,默认为收藏夹
会员设置 允许创建频道,允许添加应用等。
访客设定 允许创建频道,允许删除频道
有趣的设置 允许小字,贴纸和模因,内容分级
讯息设定 允许编辑/删除消息,允许团队和渠道 提及

编码

我想要的主要帮助程序代码是我可以调用的方法,该方法可以接受 团队名称,描述和所有者的参数,因此我可以称之为 多次。也许它可以成为某些背后的核心代码 从Excel文件读取以批量创建许多团队。也许会 在良好的最终用户自助服务请求过程中位于自定义表单的后面。 在身份验证方面,此代码使用仅应用程序身份验证来创建团队(使用AAD客户端ID和客户端密钥),而不是委派身份验证(在用户上下文中)。但是,您可以根据需要采用这两种方法。

因此,我得出的核心代码是(在一个简单的控制台应用程序的上下文中显示了该代码-但您可以将核心方法放到所需的任何内容中):


您可能会注意到我有一个“TeamDetails”上课也做些 工作。这是操作JSON的代码所在,提供 将团队名称,描述和所有者附加到其他方法的方法 指定的详细信息:


当然,完整的代码可以在Github中找到– it’位于以下地址: //github.com/chrisobriensp/TeamsProvisioning

结果

现在,我们可以使用上面显示的CreateTeam()方法创建尽可能多的团队。将使用模板中指定的通道,选项卡和其他属性来创建每一个。例如,这是上面显示的示例JSON中定义的通道和选项卡:



概要

现在可以使用正确的工具集以一致的方式创建许多Microsoft团队,并且我们也可以使用仅应用程序权限来执行此操作(因此无需在存储高特权帐户的详细信息方面做任何麻烦的事情)。如果您开始使用Graph API方法来执行此操作,那么您可能会发现本文中的代码很有用。除了使用“标准”模板创建团队之外,请注意,Microsoft本身还提供了一些嵌入到服务中的特定基本模板-这些模板可能立即满足您的需求。目前,这些基本模板针对教育,零售和医疗保健场景-但是将来无疑会有更多。

无论哪种方式,我们都有一些新选项可用于推出具有特定功能的团队。希望作为基础的Graph方法很快就会出现在预览版中,因此可以在生产解决方案中使用此方法。