- 博客(128)
- 资源 (1)
- 收藏
- 关注
原创 TeamsApp升级之路 之 EF Core SQL 篇
如何在 LuckyDraw 的 bot api service 里使用 EF core 来处理抽奖
2022-12-18 10:46:54
12833
原创 Teams app 的 SSO 机制
我们来继续我们的 Teams sample 之旅,上一个讲了 Tab app,那我们这里再深入一步,看一下如何使用 sso 机制。
2022-11-29 17:30:41
13157
原创 Teams Tab App 的 manifest 分析
上一篇文章我们深入来分析了 tab app 的代码,这篇文章我们研究一下 manifest
2022-11-27 09:19:15
11264
原创 使用环境变量来配置 Teams App 的 manifest
上篇文章我们介绍了 Teams 的 Developer Portal,今天我想分享一个dev portal里一个比较实用的功能。这个功能在之前的 App Studio 里没有。这个功能叫 Environment variables。 当我们真实开发一个 teams app的时候,肯定有自己的开发环境,测试环境,和生产环境,比如一旦一个app发布到 teams store之后,开发人员再继续开发第二个版本的时候肯定不能徐印象生产环境了。需要有一个用于开发测试的测试app。测试app的manifest里很多设
2022-03-13 20:06:56
5037
原创 Teams Developer Portal介绍
在去年的 Build2021 大会上讲到的 Teams Developer Portal 已经上线一段时间了,我这几天玩了一下,发现比之前的 app studio 强大了很多,所以赶快写篇文章和大家分享。 Developer Portal 有两种访问的方式,一个是网页版,一个是在 Teams 里直接使用,功能基本都一样,我这里就以 Teams app 版本来做一个介绍。 登入打开 Teams,在 Teams 里搜索 Developer Portal,点击 Add。 安装完后,就可以在 Teams
2022-03-12 19:56:09
5561
原创 Teams Meeting 实时事件通知
Microsoft Teams最近推出了很多新的功能和api,我们今天就来一起看一下 teams 会议的实时事件通知,我觉得有了这个功能,我们的app,我们的bot又可以有很多可以实现的场景了。 我们来看看如何在 c# 里处理会议开始和结束这两个事件。 protected override async Task OnTeamsMeetingStartAsync(MeetingStartEventDetails startDetails, ITurnContext<IEventActivity&g
2022-02-05 14:26:19
9857
原创 如何获取Teams Meeting 详情
最近有一些朋友问我,有没有可能获取到会议的详情,我搜索了目前所有的 teams 文档,发现有一个api可以获取,不过在我写这篇文章的时候,这个 api 还在 preview 阶段,可能在正式发布前,还会有一些变化,但是按照之前的经验,这个变化基本不会有。 :) 我们来看看如果在 c# 代码里调用这个 api MeetingInfo meetingInfo = await TeamsInfo.GetMeetingInfoAsync(turnContext); 如果大家喜欢直接使用 http requ
2022-01-30 16:19:15
9120
原创 Teams Meeting App的 task 弹出框
前几篇文章我们介绍了 Teams Meeting App 的各种类型和如何从无到有的使用 net6 和 c# 来开发一个 Teams Meeting app,那今天我们开始讨论一些 meeting app 的高级互动: task 弹出框。我们先来快速修改一下之前的代码,看看什么是 task 弹出框。 打开MainPage.cshtml文件,加入如下代码: <body style="background: white"> ... <button onclick="add()..
2021-12-30 06:14:37
7723
原创 会议中的Meeting App
接着我们上两篇博客文章,我们说了如何开发会议前和会议后的 meeting app,那如何开发一个会议中的 app 呢,实际上比较简单,我们只需要在 tab 的配置项中勾选下面这两个选项即可。 勾选后,我们安装app到我们的一个会议中,然后开始会议,在会议的工具条上就可以看到我们的app的图标,点击后就会出现侧边栏。如下图: 在侧边栏的上方有一个向上的小箭头。这个图标和共享桌面的图标类似,点击后实际上就是共享我们的app给所有用参与会议的人 所有参与会议的用户都会在会议窗口的正中间显示出我们
2021-12-28 08:23:39
8053
原创 如何获取 Teams Meeting 的上下文信息
我们上一篇文章讲了如果使用 net6 和 c# 来快速开发一个最简单的 teams meeting app。为了让大家比较容易理解,上个sample非常简单,简单到没有什么功能,那我们现在就来慢慢扩展这个app的功能:看看如何获取 meeting 的上下文。 打开上个sample中的MainPage.cshtml文件,使用如下代码: @page "/MainPage" <!DOCTYPE html> <html lang="en"> <head> &l..
2021-12-27 11:22:04
8111
原创 开发第一个Meeting App
今天我们来看一下如何使用c# net6 来开发一个 teams的 meeting app。首先先确保本地安装了最新版本的 net6。创建一个目录,然后在目录下输入下面的命令行,让 dotnet 来生成一个初步的asp.net core 代码框架。 dotnet new razor 代码框架生成如下的目录和文件,我们可以删除不需要的文件:Error.cshtml.cs,Error.cshtml,Index.cshtml,Index.cshtml.cs,Privacy.cshtml和Priv...
2021-12-26 19:22:21
7857
原创 Teams 的 Meeting App
Teams 的 Meeting App 已经正式推出了一段时间,相应的文档也已经较为完善了,我接下来会写一系列的文章,来介绍如何开发一个自己的Meeting app。这篇文章作为这个系列的第一篇,将介绍 meeting app 是如何被使用的,有哪些可以扩展的点。 那我们先来看一下它如何被安装和使用,我们先创建一个会议。创建完成后,点开会议进行编辑。在最上面的一排 tab 页的最后有一个加号,我们通过点击这个加号来为这个会议添加 meeting app。 点击加号后就会显示如下界面,是一些支持 me
2021-12-16 18:16:14
9529
原创 在Teams app代码中enable nullable
昨天讲了一下如何把代码升级到 net6,今天我优化了好几个小时更新代码,enable了nullable。 c#的nullable我一直非常喜欢,它可以帮助开发人员,让开发人员去思考,哪些地方需要可以为null,哪些地方不需要。它并不是万能的灵丹妙药,但是它的确可以大大的提高代码质量。我自己通过在LuckyDraw里enable了nullable,从而发现了好几个潜在的bug。现在一些其他语言,比如typescript也有类似功能,所以我觉得这个会是以后开发语言的一种趋势。 这篇文章我来分享一下我遇到的一
2021-12-14 17:42:15
5452
原创 将Teams app升级到net6
net6 发布已经有一个多月了,因为我的LuckyDraw app是使用Azure app service,当时我查了一下app service还没有ready,昨天我又查看了一下,发现app service已经默认装了net6。 那就是时候升级我的LuckyDraw了,如果大家的app也是用c#来开发的话,那这篇文章给大家分享一下我的升级方法。 首先,先更新csproj,把之前的LTS 3.1改成net6.0。同时也把 c# 语言改用版本 9,这样就可以更多的使用一些方便的语法。 <.
2021-12-13 17:23:07
8235
原创 Teams Bot如何解析和发送 at 用户
之前有好些看博客的开发者问我有什么较好的方法来解析 at 信息。用户在channel里发消息给 bot 的时候,通常需要 at bot的名字,当然在消息文字中可能还会 at 其他用户,比如 bot的名字是 MyBot,那 bot 收到的 Activity 里的 Text 值类似于: <at>MyBot</at> 请帮我查看一下 <at>Tom</at> 的明天有空时间。 可以看到 Teams 使用了 at tag 来把用户 at 的信息包含起来。 看
2021-10-14 13:29:10
5600
原创 Teams Bot库的JSON
如果你和我一样,一直使用最新的 asp.net core 来开发teams bot的应用,那么你就会发现当你使用最新的 LTS 3.1版本或者 5.0 版本或者最新的 6.0 版本,asp.net core 默认使用System.Text.Json库,所以当你在处理 Teams 发送来的请求的时候,如果还是使用类似于下面的代码,那很多时候就是发现activity解析不出来,返回的response也不对。 [HttpPost("api/messages")] public Activity GetMess
2021-10-10 10:05:34
3493
原创 Teams App如何选择用户
当我们在开发app的时候,很多时候需要选择一个用户,比如我们开发一个审批的app,就要选择审批人,所以这个app就需要实现选择人的界面,而且需要获取完整的用户列表,但是要获取完整的用户列表又需要app拥有较高的权限。通常企业的IT部门不太愿意把这种权限给到app。 不过,好在Teams已经为我们考虑到这点,Teams提供了一个很好用的功能:People Picker。我们先来看一下代码: const peoplePickerInputs: PeoplePickerInputs = { ... };
2021-10-06 17:27:43
6760
原创 Teams App设备的地理位置能力
我们上一篇文章讲了如何在Teams app里扫描二维码,这篇文章我们来看一下如何获取当前设备的地理位置,并且在地图上显示地理位置。 首先,我们先到app studio里,创建一个teams app,然后创建tab,并且确保我们勾选了 “Permission to return the user’s location” 这个选项。 或者我们手动在manifest.json里输入这么一段: { "$schema": "https://developer.microsoft.com/json-sc
2021-10-05 17:05:16
4204
原创 Teams App 扫描二维码
上篇文章我们讲了如何在app的manifest里设置设备的权限,这篇文章我们来实际操作开发一个可以扫描二维码的teams app。 首先,我们先到app studio里,创建一个teams app,然后创建tab,重要的一点是,我们确保manifest.json里含有这么一段: { "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.10/MicrosoftTeams.schema.json", "manifest
2021-09-22 07:02:46
7835
原创 Teams App自定义
当我们开发的 app 被企业安装后,有些企业挺希望能做一些自定义,如果把app的图标改的更加符合企业风格一点,或者把app的名字改成让本企业员工更容易理解一些,或者把app界面的主题色改成个企业风格更加搭配一些,或者对于隐私协议进行一些修改。 Teams作为一个为全球企业提供服务的平台,它当然也为平台上的 app 考虑到这些。这篇文章,我主要介绍如何配置。 首先,我们需要到Developer Portal for Teams: https://dev.teams.microsoft.com/,使用账号.
2021-07-25 16:12:46
6221
原创 Teams App 如何使用设备的能力
我们以前讲到过,Teams有很多中可以扩展的方面,其中有一种是Tab,开发者可以开发一个web page/app,然后以tab的方式嵌入到teams里面。 除了基本的功能,这种tab也可以使用teams客户端设备所带的一些能力,比如: 摄像头 麦克风 相册 扫二维码 地理位置 有些这些能力,我们开发的tab就能完成更多更有趣的功能。这篇文章我们就来看看如何获取这些能力。 首先,每个teams app有一个manifest.json来描述app的一些基本信息,同样,我们需要在manifest里声
2021-07-24 08:25:15
6128
原创 Teams数据统计 - 聊天消息
前两篇文章介绍了如何对用户的在线状态和通话记录进行数据统计。这篇文章我们来看看如何统计用户的聊天消息。 在介绍具体 api 如何调用前,我们可以先看一下 Teams 里对于 Message 的层级结构,在 Teams 里,message有两种,一种是 Team 的 Channel 的 message,一种是对一对聊天或者群聊里的 message。他们的层级设计是不同的。 Channel 里的消息 它的层次结构如下: Team -> Channel -> Message -> Re
2021-07-20 19:56:52
9923
2
原创 Teams数据统计 - 通话记录
上篇文章介绍了如何获取用户的在线状态,这篇文章我们记录介绍如何统计用户通话记录。 首先,Teams为了安全,它要求 app 要有CallRecords.Read.All权限。然后就可以通过这个api来获取 call record。 GET /communications/callRecords/{id} 这个接口会返回类似如下的数据: { "@odata.context": "https://graph.microsoft.com/beta/$metadata#communicat..
2021-07-13 19:14:52
8791
2
原创 Teams数据统计 - 用户在线离线状态
前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计,看上去很有大数据感。 实际上 Teams 也具备的类似的能力,只是它把这个能力开放给了开发人员,我们可以通过强大的 Graph API,获取大量的数据信息(当然,为了保证数据安全,你的app必须获得 tenant 管理员的同意)。 我接下来的几篇文章就集中介绍一下如何获取这些信息,有兴趣的开发者可以轻松使用这些 api 来提供用户的数据统计功能。 我们这篇文章先来介绍一下用户在线离线状...
2021-07-11 14:16:54
12435
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅