四平网站建设电话,中国建设银行官网站黄金部王毅,苏州外包公司排名,射阳网站设计上个月Teams团队发布了对Teams app/bot调用api的频率的限制。这也从侧面说明Teams app越来越多#xff0c;Teams团队需要优先保证Teams本身的计算资源#xff0c;来提供流畅的用户体验。
具体的每个限制指标在这里#xff1a; https://docs.microsoft.com/en-us/microsoftt…上个月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.95610: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:bf1cbc367561473db0c3fe762c11b508thread.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:bf1cbc367561473db0c3fe762c11b508thread.skype},team: {id: 19:bf1cbc367561473db0c3fe762c11b508thread.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放宽限制。?