主动给团队或用户安装Teams App

在写这篇文章的时候,这个新功能还处在 Public Review,这意味着可能(很小的可能性)这里写的方法在正式发布前还会有一些改动。

之前有一些做teams app开发的朋友问过我,能不能主动给一个team或者一个用户安装一个指定的app,之前做不到,但现在可以了,方法如下:

  1. 权限

先要确保你的app有 TeamsAppInstallation.ReadWriteSelfForUser.All 和 TeamsAppInstallation.ReadWriteSelfForTeam.All,从名字我们可以清楚的看到,一个权限是给一个用户主动安装app,第二是针对 team 的。

  1. 找到要安装的 app 的 id

我在前一篇博客文章里解释过各种 id 的区别,简单的说,开发者在 teams app 的 manifest json 文件里指定的 id,并且不是 teams app id,在manifest里指定的 id 在teams graph api里叫做 external id,而 app id 是 teams 自动生成的一个 id。需要我们通过这个api来获取。

GET https://graph.microsoft.com/beta/appCatalogs/teamsApps?$filter=externalId eq '{11111111-2222-3333-4444-911d24850d7c}'Response body:
{"value": [{"id": "b1c5353a-7aca-41b3-830f-27d5218fe0e5","externalId": "11111111-2222-3333-4444-911d24850d7c","name": "Test app name","version": "0.0.1",......}]
}

上面的调用就是查询一个 external id 是等于 manifest ID 的一个 app,而在返回的内容里的 “id” 就是我们需要的 app id。

  1. 检查这个 app 是否已经给 user 安装过
GET https://graph.microsoft.com/beta/users/{user-id}/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/id eq '{teamsAppId}'
  1. 安装 app 如果上一步检测下来,user并没有安装过这个 app 的话,那么我们就可以开始安装 app 了。
POST https://graph.microsoft.com/beta/users/{user-id}/teamwork/installedAppsRequest body:
{"teamsApp@odata.bind" : "https://graph.microsoft.com/beta/appCatalogs/teamsApps/{teamsAppId}"
}

上面 4 部都完成后,那个user就可以开始使用 app 了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

thinkphp5多级控制器是什么?怎么使用?

thinkphp5多级控制器是什么?怎么使用? 一、总结 1、多级控制器是让控制器的级数变成多级,也就是controller目录下可以新建其它目录。 2、使用的话注意目录下的控制的的命名空间(加上目录名)(namespace app\…

给Teams消息附加图片的三种方式

Teams消息支持三种不同的方式来添加图片,这篇文章我们来一起看一下这三种方式。 Inline图片 var imagePath Path.Combine(Environment.CurrentDirectory, "abc.png"); var imageData Convert.ToBase64String(File.ReadAllBytes(imagePath)); var image…

4月18日 MySQL学习

正式开始了数据库的学习 昨天下好的MySQL 今天正式开始学习的,介绍了多种数据库软件,当然 学习的这个是开源的 免费的。 DBMS(数据库管理系统)这就是我们学习的数据库的软件 数据库分为关系型数据库管理系统和非关系型数据库管理系统(没有深入的了解) 今…

企业数据湖构建之旅

摘要:随着互联网的发展,数据的规模和类型都呈现一个爆炸性的增长,对于这么多类型的数据,如何进行有效的管理和存储,包括数据的分析,这是大家要面临的一个问题。在武汉云栖大会上,阿里云高级产品…

用AzureFunction开发最简单的Teams Bot

之前我有一篇文章讲了如何在azure function上开发最简单的outgoing webhook,收到一些反馈,建议我介绍一下如果在azure function上开发teams bot,那这篇文章就来讲一下如何用function来快速开发bot。 我们先创建一个azure function资源&#…

20189215 2018-2019-2 《密码与安全新技术专题》第7周作业

课程:《密码与安全新技术专题》 班级: 1892班 姓名: 李炀 学号:20189215 上课教师:谢四江 上课日期:2019年4月9日 必修/选修: 选修 1.本次讲座的学习总结 讲座主题:信息隐藏 信息隐藏…

BZOJ1565[NOI2009]植物大战僵尸——最大权闭合子图+拓扑排序

题目描述 Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏。Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻。该款游戏包含多种不同的挑战系列&#xf…

推送ActivityFeed到Teams

几个月前,Teams 团队又推出了新的 Graph API,让 app 可以给用户发送 Activity Feed。我们来看看如何做。 首先,我们的app需要使用较新的 manifest 1.7版本,当然如果使用最新的1.8版本就更好了。在manifest json中添加 webApplica…

RecycleView弹性滑动

还有点bug,建议使用 LinearSnapHelper rvPilotList.addOnScrollListener(new RecyclerView.OnScrollListener() {Overridepublic void onScrolled(NonNull RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);// …

关于深度学习,这些知识点你需要了解一下

深度学习概述 o 受限玻尔兹曼机和深度信念网络 o Dropout o 处理不平衡的技巧 o SMOTE:合成少数过采样技术 o 神经网络中对成本敏感的学习 深度学习概述 在2006年之前,训练深度监督前馈神经网络总是失败的,其主要原因都是导致…

发送不同类型的ActivityFeed

上一篇文章讲到了如何使用最新的Graph API来给一个用户发送一个简单的 Activity Feed。我们这篇文章来详细讲一下发送三种不同类型的消息。 发送 Chat 相关的 Activity Notification API 为 POST https://graph.microsoft.com/beta/chats/{chat-id}/sendActivityNotification…

git add * 提示warning: LF will be replaced by CRLF in 解决办法

在使用git的时候,每次执行 $ git add * 都会提示这样一个警告消息: 虽然说没有什么影响吧。 不过就是觉得太碍眼了, 按照这样设置就没有问题了: git config core.autocrlf false 这样设置git的配置后在执行add操作就没有问题了。 奋斗的年纪你…

git 放弃本地修改,强制拉取更新

开发时,对于本地的项目中修改不做保存操作(或代码改崩),可以用到Git pull的强制覆盖,具体代码如下: git fetch --all git reset --hard origin/master git pull //可以省略 git fetch 指令是下载远程仓库最…

发送ActivityFeed的隐藏功能

前两篇文章介绍了如何发送 activity notification,这篇文章主要介绍两个隐藏功能,实际上所谓的隐藏功能是指大家在阅读官方文档是会忽略的两个点,但是实际上也是很实用的两个功能点。 text 类型的 topic 之前文章中提到我们的 activity not…

Dispatch Queue 之 Invoke 当前队列

 转载于:https://www.cnblogs.com/huahuahu/p/dispatch-queue-zhi-invoke-dang-qian-dui-lie.html

js或jQuery获取当前屏幕的各种高度

Javascript: 网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: document.body.offsetWidth (包括边线的宽) 网页可见区域高: document.body.offsetHeight (包括边线的高) …

Teams数据统计 - 用户在线离线状态

前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计,看上去很有大数据感。 实际上 Teams 也具备的类似的能力,只是它把这个能力开放给了开发人员,我们可以通过强大的 Graph API,获取大量的数据信息&…

我们是如何通过全球第一免费开源ERP Odoo做到项目100%交付

传统友商ERP的交付过程 一、先初步需求调研,后选型功能模块 传统友商ERP第一件事情先对客户方进行初步的调研,客户方无论说什么,友商听过算过,只关心你人数多少,有哪些人涉及到哪些模块,接着对模块进行所谓…

HDU 4747 Mex

4747 思路: 线段树 先求出mex(1,1), mex(1, 2) , mex(1,3),...,mex(1,n)(单调上升),先将这些mex放进线段树里求和 然后再求出next[i]表示下一次出现a[i] 的位置 然后从前…

Teams数据统计 - 通话记录

上篇文章介绍了如何获取用户的在线状态,这篇文章我们记录介绍如何统计用户通话记录。 首先,Teams为了安全,它要求 app 要有 CallRecords.Read.All 权限。然后就可以通过这个api来获取 call record。 GET /communications/callRecords/{id}这…