Teams bot的调用限制

上个月Teams团队发布了对Teams app/bot调用api的频率的限制。这也从侧面说明Teams app越来越多,Teams团队需要优先保证Teams本身的计算资源,来提供流畅的用户体验。

具体的每个限制指标在这里: https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/bots/rate-limit

我解释一下目前的做法,teams app需要注意的地方,以及一些容易混淆的概念:

  • Teams会对大家的api服务返回HTTP 429错误,可能大家之前很少遇到这个status code。429是Too Many Requests,就是请求数太多。服务器无法处理。当达到一些限制条件后,teams就会返回这个code

  • 大家的api服务当遇到这个429时不要惊慌,这个是很平常的预料中的错误,需要做的是稍微等待一会儿,然后再次发送相同的请求给到Teams,如果你的api服务中已经有了retry机制,那就比较简单。如果没有,可以使用这段代码来重试。

public class MyRetryStrategy : ITransientErrorDetectionStrategy
{public bool IsTransient(Exception ex){var httpOperationException = ex as HttpOperationException;if (httpOperationException != null){return httpOperationException.Response != null && (int)httpOperationException.Response.StatusCode == 429);}return false;}
}var exponentialBackoffRetryStrategy = new ExponentialBackoff(5, TimeSpan.FromSeconds(2),TimeSpan.FromSeconds(8), TimeSpan.FromSeconds(16), TimeSpan.FromSeconds(32));// Setup Retry Policy
var retryPolicy = new RetryPolicy(new MyRetryStrategy(), fixedIntervalRetryStrategy);await retryPolicy.ExecuteAsync(() => connector.Conversations.ReplyToActivityAsync((Activity)reply)).ConfigureAwait(false);

上面是C#的代码,对于其他语言,做法也类似,当接收到429代码时,等待一段时间,然后重试,再不行再等待一段时间,再重试。

  • 这次的限制分为三个等级:
    • 第一级:你的bot对于一个聊天,这个聊天可以是:一个1对1的聊天,用户和bot的聊天,团队中一个频道的聊天
    • 第二级:所有bot对于一个聊天的限制,也就是说如果这个频道中有很多bot,大家共享这个限制。如果一个bot非常频繁的往频道中发送消息,那意味着其他bot会很大概率收到429出错代码
    • 第三级:你的bot针对datacenter的限制。这个大家可能不好理解。实际上Teams整个系统部署Azure上,但是并不是全部覆盖了所有的Azure数据中心,我们的bot在收到一个message payload时可以看到有一个字段。
{"name": "composeExtension/fetchTask","type": "invoke","timestamp": "2019-06-17T14:32:04.956Z","localTimestamp": "2019-06-18T00:32:04.956+10:00","id": "f:1361493733941541435","channelId": "msteams","serviceUrl": "https://smba.trafficmanager.net/apac/","from": {"id": "29:1l8B9m9SOOdHTqLDgmXvSrJyHfwd2ihooa7cxgtzJ8QjQ4WFC4mA_8K2Sa7jL-xUh7g4yh8sZIiDOX6vTtoaz6w","name": "Tony Xia","aadObjectId": "56c6599d-9216-4078-a8cf-3f039d36e1fd"},"conversation": {"isGroup": true,"conversationType": "channel","tenantId": "aece5000-341d-493a-841d-f67e417f1447","id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"recipient": {"id": "28:89e9cdd8-f500-4696-a701-7c2323f62a86","name": "TestMsgExt"},"entities": [{"locale": "en-US","country": "US","platform": "Windows","type": "clientInfo"}],"channelData": {"channel": {"id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"team": {"id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"tenant": {"id": "aece5000-341d-493a-841d-f67e417f1447"},"source": {"name": "compose"}},"value": {"commandId": "start","commandContext": "compose","context": {"theme": "default"}},"locale": "en-US"
}

大家又看到serviceUrl这个字段吗?

https://smba.trafficmanager.net/apac/

上面这个是表明这个是从哪个数据中心传来的数据,APAC就是亚洲太平洋地区。

所以这个条调用限制的意思就是你的bot往一个数据中心的调用次数有限制。大家可能会问:那如果我的teams bot很流行,这个数据中心的很多企业在用这个bot,这个限制有点不公平啊。

放心,首先你的bot很难达到这个限制,如果达到了,你可以向teams团队提申请,我相信他们肯定很愿意看到这种超级teams app,肯定愿意为你的bot放宽限制。?

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

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

相关文章

Array的sort方法

作为一个刚开始学习的前端,小结一下:sort方法: 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元…

如何使用ARM创建Teams Bot所需要的Azure资源

相信很多devops已经全面开始使用ARM来创建azure资源了,ARM有很多方便的地方,比如简单易学,Infrastructure as Code,但是深入使用ARM开始会发现一些有待改进的方面。这篇文章主要是分享一下我在做Teams app的时候使用ARM来创建资源…

Bot Service自带的数据分析统计功能

每个产品上线后都希望自己能实时看到多少用户在使用我的产品,我的服务,有多少使用量,有没有遇到问题。市面上做用户数据、行为分析的公司也不少,但是大多数都需要我们修改一些代码来集成第三方的sdk库。 我的teams app上线后也急…

LuckyDraw bot有幸被提名为微软2019的People's Choice app

上个月微软进行了一个全世界提名活动,目标是选出微软2019年度People’s Choice app。 很幸运,我的LuckyDraw bot得到了来自世界各地使用者的投票,其中也包含Teams中国社区和很多朋友的支持。 https://developer.microsoft.com/en-us/microso…

图灵社区 和 大家网

http://www.ituring.com.cn/ http://club.topsage.com/ 大家论坛 http://www.topsage.com/ http://www.dxbbba.com/ 大学生必备吧 转载于:https://www.cnblogs.com/onelikeone/p/9023267.html

Teams内嵌的卡片image的限制

我的LuckyDraw上线后收到了不少有价值的反馈,其中有一部分是针对图片的,有一些用户说他们填写了image的url,但是图片显示不出来。 实际上这个问题在我提交这个应用到微软审核团队的时候,审核团队也提出了类似问题。但这个是Teams本…

Python 面向对象编程(进阶部分)

静态方法: 通过 staticmethod 装饰器即可把其装饰的方法变为一个静态方法。普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访…

分享实录|争议不断地EOS,我们如何才能理性看待?

1 EOS基本介绍 EOS是Block.One公司正在研发的一个区块链底层公链系统,目的是解决现有的区块链应用性能低、安全性差、开发难度高以及过度依赖手续费的问题,实现分布式应用的性能扩展。EOS提供帐户,身份验证,数据库,异步…

Teams的Incoming Webhook

我在去年的一篇文章里介绍过Teams的outgoing webhook,这个可以用来实现一个简单的用户和service对话机制。 Teams除了outgoing webhook以外,还有一个incoming webhook,从名字上我们也可以立刻知道,这个webhook是用来处理进入Team…

Comet OJ - Contest #0题解

传送门 菜爆了……总共只有一道题会做的……而且也没有短裙好难过 为啥必须得有手机才能注册账号啊喂……歧视么…… \(A\) 解方程 推一下柿子大概就是 \[x-\sqrt{n}yz2\sqrt{yz}\] 如果\(\sqrt{n}\)是无理数,那么就是 \[xyz,{n\over 4}yz\] 那么要满足\(n\)必须是\…

tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册

tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册 引言 #在数据库,所谓表关系,只是人为认为的添加上去的表与表之间的关系,只是逻辑上认为的关系,实际上数据库里面的表之间并没有所谓的表关系 一、一对一表关系 Module #需…

Teams的manifest文件开始支持多语言

Teams发展速度飞快,Teams app的manifest文件schema也迎来了版本1.5,在这个版本里,很大的一个改进是支持多语言。 让我们一起来看看,如何在manifest文件里配置多语言。 1,我们需要先把manifest文件设置成v1.5 {"…

白白的(baibaide)

白白的(baibaide) 有一个长度为 $n$ 的序列 $a_1, a_2, \dots, a_n$,一开始每个位置都是白色。如果一个区间中每个位置都是白色,则称这是一个白白的区间。如果一个白白的区间向左或向右延长后都不是白白的区间了,则称这…

如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入。一、代码实现1、修改Scrapy项目中的items.py文件。我们需要获取的数…

使用Adaptive cards来构建Teams app的界面

Teams app的task module十分好用,当用户点击了一个卡片上的按钮是可以在Teams里弹出一个对话框,对话框的内容可以是开发人员自己的一个网页页面,或者是adaptive card。 在我的LuckyDraw bot里,我比较了这两种的优势和劣势&#xf…

Boosting(提升方法)之GBDT

一、GBDT的通俗理解 提升方法采用的是加法模型和前向分步算法来解决分类和回归问题,而以决策树作为基函数的提升方法称为提升树(boosting tree)。GBDT(Gradient Boosting Decision Tree)就是提升树算法的一种,它使用的基学习器是C…

CC攻击原理及防范方法

一、 CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数特别多的时候&#xff0c…

Team photo的新api

Graph API的更新速度真是快,今年9月中旬又增加了关于Team photo的两个新的api。 https://docs.microsoft.com/en-us/graph/api/team-get-photohttps://docs.microsoft.com/en-us/graph/api/team-update-photo 今天就给大家介绍一下如何使用这两个新的api。 实际上说…

BZOJ 1047: [HAOI2007]理想的正方形 单调队列瞎搞

题意很简明吧? 枚举的矩形下边界和右端点即右下角,来确定矩形位置; 每一个纵列开一个单调队列,记录从 i-n1 行到 i 行每列的最大值和最小值,矩形下边界向下推移的时候维护一下; 然后在记录的每一列的最大值…

分享到Teams

在今年三月份末,Teams的官方文档推出了一个新功能:将网页(一个URL)分享到Teams里。 也就是说开发人员现在可以很方便的开发一个页面,页面里有一个Teams的图标,当访问此页面的最终用户点击这个图标后可以将…