现在这是可能的,我什至已经在 CoffeeScript 和 Node.JS 中为 Hubot 实现了它。我在下面描述的是它在 JavaScript/Node.JS 中的样子。
定义一个环境变量,设置该变量后,将过滤特定租户 ID OFFICE_365_TENANT_FILTER
,. (这样做是在生产中启用此功能的一种方便方法,但在开发期间不一定。)
对于 Microsoft Teams,可以在此处找到 Office 365 租户 ID session.message.sourceEvent.tenant.id
:.
最优雅的方法是检查租户 ID 作为中间件,如果设置了过滤器并且它不匹配,则只需放弃对消息的进一步处理:
// [...]
var connector = new builder.ChatConnector({
appId: process.env.MICROSOFT_APP_ID,
appPassword: process.env.MICROSOFT_APP_PASSWORD
});
var bot = new builder.UniversalBot(connector);
// Middleware to check for OFFICE_365_TENANT_FILTER and only continue processing if it matches.
// If OFFICE_365_TENANT_FILTER is not specified, do nothing.
bot.use({
botbuilder: function(session, next) {
var targetTenant = typeof(process.env.OFFICE_365_TENANT_FILTER) !== "undefined" ? process.env.OFFICE_365_TENANT_FILTER : null;
var currentMsgTenant = typeof(session.message.sourceEvent.tenant) !== "undefined" ? session.message.sourceEvent.tenant.id : null;
if (targetTenant !== null) {
if (targetTenant == currentMsgTenant) {
next();
}
else {
console.log("MS Teams: Attempted access from a different Office 365 tenant (" + currentMsgTenant + "): message rejected");
}
}
else {
next();
}
}
});
// [...]