bot
文章平均质量分 69
Tony.X
这个作者很懒,什么都没留下…
展开
-
TeamsApp升级之路 - 大用户并发的 Teams http 请求优化
大用户并发的 Teams http 请求优化原创 2023-01-23 19:28:08 · 10703 阅读 · 0 评论 -
Teams app LukcyDraw 的升级之路
配置 Teams App LuckyDraw 的 CI/CD原创 2022-12-15 19:42:52 · 9410 阅读 · 0 评论 -
Teams app 的 SSO 机制
我们来继续我们的 Teams sample 之旅,上一个讲了 Tab app,那我们这里再深入一步,看一下如何使用 sso 机制。原创 2022-11-29 17:30:41 · 12987 阅读 · 0 评论 -
Teams Tab App 分析
深入解析 Teams Tab app原创 2022-10-30 08:49:05 · 11977 阅读 · 0 评论 -
Teams Bot App 代码解析
Teams Bot App 代码解析原创 2022-09-25 21:21:37 · 10451 阅读 · 1 评论 -
Teams Bot App 初探
Teams bot app原创 2022-09-24 13:29:05 · 10452 阅读 · 1 评论 -
入门 Teams Toolkit
学习使用 teams toolkit原创 2022-09-18 09:54:07 · 10355 阅读 · 0 评论 -
使用环境变量来配置 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 · 4895 阅读 · 0 评论 -
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 · 9517 阅读 · 0 评论 -
如何获取Teams Meeting 详情
最近有一些朋友问我,有没有可能获取到会议的详情,我搜索了目前所有的 teams 文档,发现有一个api可以获取,不过在我写这篇文章的时候,这个 api 还在 preview 阶段,可能在正式发布前,还会有一些变化,但是按照之前的经验,这个变化基本不会有。 :)我们来看看如果在 c# 代码里调用这个 apiMeetingInfo meetingInfo = await TeamsInfo.GetMeetingInfoAsync(turnContext);如果大家喜欢直接使用 http requ原创 2022-01-30 16:19:15 · 8635 阅读 · 0 评论 -
会议中的Meeting App
接着我们上两篇博客文章,我们说了如何开发会议前和会议后的 meeting app,那如何开发一个会议中的 app 呢,实际上比较简单,我们只需要在 tab 的配置项中勾选下面这两个选项即可。勾选后,我们安装app到我们的一个会议中,然后开始会议,在会议的工具条上就可以看到我们的app的图标,点击后就会出现侧边栏。如下图:在侧边栏的上方有一个向上的小箭头。这个图标和共享桌面的图标类似,点击后实际上就是共享我们的app给所有用参与会议的人所有参与会议的用户都会在会议窗口的正中间显示出我们原创 2021-12-28 08:23:39 · 7903 阅读 · 0 评论 -
在Teams app代码中enable nullable
昨天讲了一下如何把代码升级到 net6,今天我优化了好几个小时更新代码,enable了nullable。c#的nullable我一直非常喜欢,它可以帮助开发人员,让开发人员去思考,哪些地方需要可以为null,哪些地方不需要。它并不是万能的灵丹妙药,但是它的确可以大大的提高代码质量。我自己通过在LuckyDraw里enable了nullable,从而发现了好几个潜在的bug。现在一些其他语言,比如typescript也有类似功能,所以我觉得这个会是以后开发语言的一种趋势。这篇文章我来分享一下我遇到的一原创 2021-12-14 17:42:15 · 5321 阅读 · 0 评论 -
将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 · 8094 阅读 · 0 评论 -
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 · 5406 阅读 · 0 评论 -
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 · 3388 阅读 · 0 评论 -
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 · 6973 阅读 · 0 评论 -
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 · 8530 阅读 · 2 评论 -
用AzureFunction开发最简单的Teams Bot
之前我有一篇文章讲了如何在azure function上开发最简单的outgoing webhook,收到一些反馈,建议我介绍一下如果在azure function上开发teams bot,那这篇文章就来讲一下如何用function来快速开发bot。我们先创建一个azure function资源,然后创建一个由http触发的Function。具体步骤和上次outgoing webhook的步骤类似,我就不再重复。为了调试方便,我这里允许匿名访问这个function。创建完function原创 2021-05-23 19:21:02 · 8313 阅读 · 1 评论 -
Teams AppId, InstallationId 和 ExternalId 的区别
大家如果看teams的 graph api 开发文档,可能会把 app id, installation id 和 external id 搞混,我自己一开始的时候就有点被搞晕了,再加上app manifest里面的 id 和 bot id,基本就彻底晕掉了。那我们今天这篇文章就来讲讲这几种 id 。首先当我们开发一个 team app 的时候,都需要编写一个 manifest json 文件,在这个文件里就有必须要指定一个 id,还有一个 bot id,bot id就是你创建的 microsoft原创 2021-01-03 07:00:57 · 3690 阅读 · 0 评论 -
LuckyDraw app使用CosmosDB的成本分析
我在以前的博客里说过我的LuckyDraw app在数据存储方面使用的是 Azure Table Storage,当时选择这个的原因是成本考虑,因为它实在是便宜,对于我这种个人开发维护的免费的teams app来说,成本是一个很重要的考量点。当然,我也为这个运营成本的节省,付出了很多开发成本。因为针对Table Storage,在代码开发,业务逻辑处理,开源库的支持度等方面,比传统的数据库复杂很多。最简单的一个例子是,当需要保存一个大的json的时候,在SQL,我们可以简单的使用nvarchar(max原创 2021-01-01 16:04:01 · 1908 阅读 · 0 评论 -
如何获取租户中所有的Team
大家在使用Graph API开发Teams App的时候,有时候会需要获取某个租户Tenant的所有team,在写这篇文章的时候Graph API并没有提供这么一个功能,没有一个类似于”GET /teams”的api。在Micorsoft Graph官方文档的已知问题中,也提到了目前不支持这么一个api。https://docs.microsoft.com/en-us/graph/known-issues?view=graph-rest-beta#get-teams-is-not-supported原创 2020-10-18 12:22:09 · 2112 阅读 · 0 评论 -
Teams Bot开发系列:Middleware
middleware是目前一些framework比较流行的概念,通常一个开发框架需要提供一些可扩展可定制化的功能。所以middleware这种pattern就很实用。熟悉asp.net core的开发可能第一个想到的就是asp.net core的middleware,如下图:当一个http request进入到处理的pipeline后,先被一个个middleware嵌套的执行,完成后在一个个推出。如果我们需要一些定制化功能,比如想把每个request要做一个统计记录,那开发可以自己写个middl原创 2020-10-17 11:49:32 · 3378 阅读 · 0 评论 -
Teams Bot开发系列:Bot验证
我们今天来说一下authentication,authentication一直是一个复杂的问题。bot里的authentication也不简单。我们先来看一个概念:Bot Framework Token Service,根据官方定义,这个token service主要是:Facilitating the use of the OAuth protocol with a wide variety of external services. Securely storing tokens for a p原创 2020-10-10 15:25:28 · 3956 阅读 · 0 评论 -
Teams Bot开发系列:Teams的Activity处理
上一篇文章讲了activity处理的流程,我们bot的核心处理逻辑放在ActivityHandler的子类里,通过重载OnMessageActivityAsync()方法来实现。这篇文章我来讲一下对于Teams的bot来说,整个处理的逻辑会有哪些不同点。通过之前的文章,大家应该已经知道,Teams bot是Azure bot service支持的众多bot聊天平台里的一种channel(注意:这里的channel指bot service里的channel,和Teams里的channel是完全不同的概原创 2020-10-05 14:02:28 · 3813 阅读 · 0 评论 -
Teams Bot开发系列:Activity处理流程
上篇文章介绍了什么是Activity,Turn,TurnContext和BotAdapter,这篇文章我们看看这些东西是如何窜起来的,他们是如何处理用户发给bot的消息的。我们以一个最简单的bot,echo bot为例子,所谓的echo bot就是用户发什么消息,它就照样回复一条消息。为了简单起见,大家可以先安装VS2019的一个扩展插件BotBuilderVSIX.vsix template,然后创建一个NET core 3.1的Echo bot。可以看到这个模板为什么创建了一个项目,我.原创 2020-09-13 17:45:57 · 3200 阅读 · 0 评论 -
Teams Bot开发系列:Activity和Turn
这篇文章我们来说一下Activity和Turn这两个bot framework中最重要的两个概念,同时也介绍一下TurnContext和BotAdapterActivity一个activity是聊天双方的一个信息载体,它可以是一条消息,也可以是一个动作。比如用户给bot发送一条文字消息,这就是一个activity,bot给用户回复一张图片,那这是另一个activity。Activity是bot framework里最重要的概念,让我们来一起看一下c# sdk里对activity的定义。真实感受一原创 2020-09-06 15:55:03 · 3527 阅读 · 0 评论 -
Teams Bot开发系列:初识Bot
上次我们讲了Teams Bot开发的概述,讲了Azure Bot Service,Bot Framework SDK和我们自己的bot服务的概念,这篇文章就带大家看看Azure Bot Service和我们的bot是如何发生关系的。我们自己开发的bot服务实际上就是一个api service,需要提供一个支持 POST 请求的endpoint。然后把这个endpoint的url注册到Azure Bot Service,这样当有人和你的bot进行聊天的时候,这个endpoint就会被Azure Bot S原创 2020-08-16 12:52:36 · 3871 阅读 · 0 评论 -
在VSCode Remote环境下开发Teams Bot
我使用VS Code开发已经有蛮长一段时间了,时间长了,越来越喜欢VS Code,虽然有些时候会没有传统的VS方便,比如开发Azure Function时你需要编写一下launch.json,而且你需要手动启动StorageEmulator,但是也正是由于缺少VS的自动配置,需要你自己手动把环境一步步搭建出来,也让自己更加理解一些框架和技术。最近练习做一个简单的docker image,并且想做一个windows上的image,但是下载一个server core的image让我崩溃了,虽然能够下载,但是原创 2020-07-25 09:42:28 · 1695 阅读 · 0 评论 -
如何开发Teams Bot
很多朋友问我如何开发一个成功的Teams Bot,他们说Bot Framework SDK看起来简单,但是真要的去开发一款成熟的bot,很多地方还是不知道如何使用。我从最早的bot framework还在beta的时候开始用,后来framework经历了多次大的改动,目前版本是v4,我想通过一系列的文章来系统的介绍如何使用bot framework来开发一个功能齐全的teams bot。这篇文章我先给大家一个总体的介绍,让大家理解Teams,Azure Bot Service,Bot Framework原创 2020-07-19 08:47:47 · 2557 阅读 · 0 评论 -
新的Teams API权限控制
这篇继续介绍BUILD大会里的内容:新的Teams API权限。这些新的权限让开发者可以更加细粒度的设置权限。之前有些开发人员有问过我,为什么Graph API的权限这么多,为什么不针对Teams弄一个总的权限,这样不是更加简单吗?是,这样可以简化开发人员的工作,但是我们需要考虑到当一个企业IT安装teams app的时候,他/她会仔细审核你这个app所需要的权限,如果你app可以删除teams里的消息,甚至是可以删除一个team或者channel,我相信很多IT管理员就会很犹豫。所以我们作为一个tea原创 2020-07-11 15:27:19 · 3618 阅读 · 0 评论 -
将Teams Template升级到dotnet core 3.1
为了方便开发者开发Teams应用,我在2018年做了dotnet c#的一套模板,这套模块一共有三种类型,一个是Teams OutgoingWebhook,一个是MessagingExtension,还有一个就是Tab。今天特地去nuget上看了一下,下载量还很不错,达到了将近9k的下载。看起来的确帮到了不少Teams的开发人员。 :)当年做的时候的版本是对应dotnet core 2.1,去年年底dotnet团队又出了继2.1 LTS后的新一个LTS:3.1,经过半年的稳定,修补和改进,.原创 2020-06-21 13:43:01 · 2515 阅读 · 0 评论 -
Teams Bot 如何使用新的 System.Text.Json 库
我最近把 LuckyDraw的代码升级到了 .net core 3.1,当然我也很想使用最新的微软json库,System.Text.Json这个库的性能比之前Newtonsoft.Json速度更快,而且就我本人爱好来说,更加喜欢System.Text.Json的命名,之前一直觉得 JObject, JArray, JToken 这些名字不够符合 c# 的 naming guideline。微软这篇文章很好的告诉大家如何将 Newtonsoft.Json 迁移到 System.Text.Json,但..原创 2020-06-13 08:36:57 · 3149 阅读 · 0 评论 -
Java版本的Bot Framework SDK
微软为了鼓励Java开发人员开发bot,在上个月推出了Java的Bot SDK v4.6版本,目前还在Preview版本,相信不用多久就可以赶上其他版本了。我的java还停留在 n 年前的水平,但是处于好奇,决定玩一下这套sdk。这套sdk目前建议的java版本是 1.8或者以上,我们打开最简单的EchoBot,可以看到入口的application如下:public class Application extends BotDependencyConfiguration { publ原创 2020-06-08 20:57:37 · 1928 阅读 · 0 评论 -
Teams Bot如何做全球化
Office365在全球有大量的用户,可以说是拥有最多用户的商业SaaS平台。Teams最近在发展迅猛,有1300万日活用户,已经超越了Slack。原创 2019-08-04 19:45:59 · 14137 阅读 · 1 评论