Teams App如何选择用户

当我们在开发app的时候,很多时候需要选择一个用户,比如我们开发一个审批的app,就要选择审批人,所以这个app就需要实现选择人的界面,而且需要获取完整的用户列表,但是要获取完整的用户列表又需要app拥有较高的权限。通常企业的IT部门不太愿意把这种权限给到app。

不过,好在Teams已经为我们考虑到这点,Teams提供了一个很好用的功能:People Picker。我们先来看一下代码:

const peoplePickerInputs: PeoplePickerInputs = { ... };microsoftTeams.people.selectPeople((err: microsoftTeams.SdkError, people: PeoplePickerResult[]) =>{if (error) {const extraErrorMessage = error.message ?? '';let errorMessage;switch (error.errorCode) {case 100: // NOT_SUPPORTED_ON_PLATFORMerrorMessage = '当前平台不支持此API';break;case 500: // INTERNAL_ERRORerrorMessage = '内部错误';break;case 4000: // INVALID_ARGUMENTSerrorMessage = '参数错误';break;case 8000: // USER_ABORTerrorMessage = '用户取消操作';break;case 9000: // OLD_PLATFORMerrorMessage = '平台太老,不支持此API';break;default:errorMessage = '未知错误';break;}output('发生错误:' + errorMessage + ' ' + extraErrorMessage);}output(JSON.stringify(people));},peoplePickerInputs
);

PeoplePicker

可以看到,这个接口比较简单,但是不知道为什么目前微软的文档里对这个介绍的不详细,我们直接找到JS SDK的代码:https://github.com/OfficeDev/microsoft-teams-library-js/blob/master/src/public/people.ts

namespace people {export function selectPeople(callback: (error: SdkError, people: PeoplePickerResult[]) => void,peoplePickerInputs?: PeoplePickerInputs,): void {..................}export interface PeoplePickerInputs {title?: string;setSelected?: string[];openOrgWideSearchInChatOrChannel?: boolean;singleSelect?: boolean;}export interface PeoplePickerResult {objectId: string;displayName?: string;email?: string;}
}

selectPeople 有两个参数第一个参数是一个callback,当用户选择人结束后,或者用户取消了操作,这个回调函数就会被调用到。

第二个参数是一个配置,有这么一些值:

  • title

可选,选择人的界面标题,默认值是:Select people

  • setSelected

可选,设置已经选择的人员。这是一个 AzureAD ID的数组

  • openOrgWideSearchInChatOrChannel

可选,表明是否在整个组织里选择人员,默认值是 false。如果是 false,就是根据当前这个 app 的所在上下文,如果 app是安装到channel,那选择的就是channel里的人,如果安装到的是 chat,那选择的是这个chat里的人。

  • singleSelect

可选,表明是否选择一个人,还是多个人。默认值是 false

当用户选择完人员后,我们的代码就可以拿到一个 PeoplePickerResult 的数组,这个数组包含了用户选中的所有人,针对每一个人,有这些信息:

  • objectId

这个是人的 AAD ID,和上面 setSelected 是一样的概念

  • displayName

选择的人的显示名字

  • email

选择的人的邮箱地址

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

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

相关文章

Python终端如何输出彩色字体

Python终端如何输出彩色字体 Python终端如何输出彩色字体 实现过程:终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27&#xf…

关于Elemet-ui组件Cascader中proper的配置问题

最近做一个地区的二级联动用上了Cascader组件,但是我的城市数据结构跟他 options的默认的结构不太一样; 默认的结构如下: 我的数据结构是: 先说我的解决办法: 一看我的数据结构跟他默认的数据结构不对劲,我…

将Teams app升级到net6

net6 发布已经有一个多月了,因为我的LuckyDraw app是使用Azure app service,当时我查了一下app service还没有ready,昨天我又查看了一下,发现app service已经默认装了net6。 那就是时候升级我的LuckyDraw了,如果大家的…

作为程序猿,一定要知道的电脑快捷键和Eclipse快捷键

2019独角兽企业重金招聘Python工程师标准>>> 转载自:Java资源社区 1. F2 当你选中一个文件的话,这意味着“重命名”2. F5 刷新3. CTRLF5 强行刷新4. F12另存为5. Alt +F4 关闭程序6. Home首行7. Ctrl Home游标移动到文字编辑的开…

QCustomplot(一) 能做什么事

阅读目录 一、QCustomPlot简介二、效果预览三、源码下载四、相关文章回到顶部一、QCustomPlot简介 之前在Qt之自绘制饼图这篇文章的说明中我简单的描述了下目前依赖于qt的第三方绘图库,此后我会针对自己使用QCustomPlot的情况做一总结,以方便大家参考 QC…

shiro(一)简介、理论知识

2019独角兽企业重金招聘Python工程师标准>>> 开涛学shiro:http://jinnianshilongnian.iteye.com/blog/2018398 shirospirngmvc参考: https://www.cnblogs.com/sharpest/p/5865732.html http://peirenlei.iteye.com/blog/2086639 https://blog.csdn.net/c…

Teams 的 Meeting App

Teams 的 Meeting App 已经正式推出了一段时间,相应的文档也已经较为完善了,我接下来会写一系列的文章,来介绍如何开发一个自己的Meeting app。这篇文章作为这个系列的第一篇,将介绍 meeting app 是如何被使用的,有哪些…

开发第一个Meeting App

今天我们来看一下如何使用c# net6 来开发一个 teams的 meeting app。首先先确保本地安装了最新版本的 net6。创建一个目录,然后在目录下输入下面的命令行,让 dotnet 来生成一个初步的asp.net core 代码框架。 dotnet new razor代码框架生成如下的目录和…

solrCloud搭建

一.什么是solrCloud? SolrCoud(solr云)是solr提供的分布式搜索方案。当一个系统搜索请求并发很高的时候,就需要使用solrCloud来满足这些需求 solrCloud是基于solr和zookeeper的分布式的搜索方案,它的主要思想是使用zookeeper作为挤集群配置的…

如何获取 Teams Meeting 的上下文信息

我们上一篇文章讲了如果使用 net6 和 c# 来快速开发一个最简单的 teams meeting app。为了让大家比较容易理解,上个sample非常简单,简单到没有什么功能,那我们现在就来慢慢扩展这个app的功能:看看如何获取 meeting 的上下文。 打…

会议中的Meeting App

接着我们上两篇博客文章,我们说了如何开发会议前和会议后的 meeting app,那如何开发一个会议中的 app 呢,实际上比较简单,我们只需要在 tab 的配置项中勾选下面这两个选项即可。 勾选后,我们安装app到我们的一个会议中…

0-2岁的app开发人员必读,Android开发APP前的准备事项

2019独角兽企业重金招聘Python工程师标准>>> 随着移动互联网的兴起,各行各业对移动应用的需求越来越大,从事APP开发的人也越来越多,APP开发行业可以说是方兴未艾。APP开发是比较复杂的事情,涉及产品、美工设计、服务器…

Teams Meeting App的 task 弹出框

前几篇文章我们介绍了 Teams Meeting App 的各种类型和如何从无到有的使用 net6 和 c# 来开发一个 Teams Meeting app,那今天我们开始讨论一些 meeting app 的高级互动: task 弹出框。我们先来快速修改一下之前的代码,看看什么是 task 弹出框…

react 学习

react官网地址:http://facebook.github.io/react/ webpack官网地址:http://webpack.js.org/ 英文 https://www.webpackjs.com/ 中文 参考资料: React 入门实例教程-阮一峰 webpack的学习 学习列表: 了解react的语法&#x…

Teams Developer Portal介绍

在去年的 Build2021 大会上讲到的 Teams Developer Portal 已经上线一段时间了,我这几天玩了一下,发现比之前的 app studio 强大了很多,所以赶快写篇文章和大家分享。 Developer Portal 有两种访问的方式,一个是网页版&#xff0…

使用环境变量来配置 Teams App 的 manifest

上篇文章我们介绍了 Teams 的 Developer Portal,今天我想分享一个dev portal里一个比较实用的功能。这个功能在之前的 App Studio 里没有。这个功能叫 Environment variables。 当我们真实开发一个 teams app的时候,肯定有自己的开发环境,测…

[Unity优化]批处理03:静态批处理

[Unity优化]批处理03:静态批处理 原理: 运行时,把需要进行静态批处理的网格合并到一个新的网格中。虽然只进行一次合并操作,但是会占用更多的内存来存储合并后的网格,并且被静态批处理的物体无法移动旋转缩放 要使用静…

JS获取IP地址

HTML代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><script src"https://unpkg.com/vue/dist/vue.js"></script></head><body><div id"vm&quo…

1小时玩爆趣头条自媒体平台,增粉实战操作分享

做自媒体的人最关注的就是每天自己账号的后台数据&#xff0c;因为数据决定当天的收益。因此只要每天能达到几十万的数据&#xff0c;相信对于做自媒体的朋友来说&#xff0c;一个月下来&#xff0c;最少也有1万以上的收入。目前&#xff0c;自媒体平台能赚钱的平台有很多&…

隧道6in4 和隧道6to4(GNS3)

隧道6in4实验配置 拓扑图 Device Interface IP Address&#xff08;IPv6&#xff09; R1 F 0/0 10.1.81.1 F 0/1 2001:db8:cafe:81::10 R2 F 0/0 10.81.1.2 F 0/1 172.81.1.2 R3 F 0/0 172.81.1.3 F 0/1 2001:DB8:ACE:81::20 R4 F 0/0 2001:db8:cafe:81::4…