如何识别非人类用户?

How to recognize non-human users?

列出系统中的所有用户,我注意到其中一些是系统用户并且没有例如工作时间。目前,我只是列出它们并从我的循环中排除我这是一种 Q&D 方法,我更喜欢正确地做。

我没有在 systemuser 实体上找到任何具体信息,这些信息可以告诉我某个人是否是真实的个人资料(即在 Office 365 门户中创建)或默认情况下为我的 MS 提供的一个。

Q&D代码如下

QueryExpression userQuery = new QueryExpression { EntityName = "systemuser", ... };
IEnumerable<Entity> users = service.RetrieveMultiple(userQuery).Entities;

IEnumerable<String> automatics = new[] { "INTEGRATION", "Support User", "SYSTEM" };
  foreach (Entity user in users.Where(element
    => !automatics.Contains(element.GetAttributeValue<String>("fullname")))) { ... }

第二个最佳解决方案,如果没有办法确定谁在自动列表上以及谁是真正的家伙,那就是制作一份详尽的例外列表。我的 google-fu 再一次让我失望,因为我没有在实体 systemuser.

的自动创建实例的完整列表中找到任何文档

一种方法是检查 CreatedBy 字段;对于用户 SYSTEMINTEGRATION,这是 NULL。对于 CRM 管理员用户,此字段也是 NULL,因此如果管理员用户正在被人类主动使用,您应考虑将其排除在外。

FilterExpression humanFilter = new FilterExpression();
humanFilter.AddCondition(new ConditionExpression("createdby", ConditionOperator.NotNull));

if (retrieveAdminUser)
{
  humanFilter.FilterOperator = LogicalOperator.Or;
  humanFilter.AddCondition(
    new ConditionExpression("domainname", ConditionOperator.Equal, "admin@crm"));
}

userQuery.Criteria.AddFilter(humanFilter);