人员和 Exchange 中的 EWS 中的联系人

了解角色、统一联系人存储,以及如何使用 Exchange 中的 EWS 托管 API 或 EWS 处理联系人。

联系人是 Exchange 中存储有关个人、组或组织的信息的项目。 联系人可以包括姓名和电子邮件地址以及其他信息,包括即时消息地址、物理地址、生日、家庭信息以及代表联系人的照片或图像。

联系信息存储在以下两个位置之一:

  • 如果联系人在组织中,Active Directory 域服务 (AD DS) 。

  • 联系人文件夹或用户邮箱中的另一个文件夹(如果联系人在组织外部)。

多个联系人项目可以代表单个个人。 Exchange 使用角色来帮助将这些不同的联系人项组合在一起。 角色是来自不同来源的同一个人的联系信息的聚合。 除了 Exchange 中的联系人信息外,还可以从邮箱的收件人缓存中的信息、名为 QuickContacts 的 IM 联系人的隐藏文件夹和第三方数据源中聚合角色。 Exchange 中的统一联系人存储使 IM 客户端能够使用此聚合;唯一的区别是统一联系人存储不聚合来自 AD DS 的信息,如图 1 所示。

图 1. 角色和统一联系人存储的联系信息源

显示聚合到角色的源与包含在统一联系人存储中的源的图片。统一联系人存储不会聚合目录服务中的联系人信息。

表 1. 用于处理联系人的 EWS 托管 API 方法和 EWS 操作

若要… 使用此 EWS 托管 API 方法 使用此 EWS 操作
创建新联系人
实例化新的 Contact 对象,并使用 Contact.Save
CreateItem
复制联系人
Contact.Copy
CopyItem
移动联系人
Contact.Move
MoveItem
更新现有联系人
Contact.BindContact.Update
UpdateItem
删除联系人
Contact.BindContact.Delete
DeleteItem
搜索联系人
ExchangeService.FindItems
FindItem
搜索人员
不适用
FindPeople
展开通讯组
ExchangeService.ExpandGroup
ExpandDL
解析不明确的名称
ExchangeService.ResolveName
ResolveNames
获取角色
不适用
GetPersona
处理联系人照片
Contact.SetContactPictureContact.GetContactPictureAttachmentContact.RemoveContactPicture
GetUserPhotoGetAttachment

Personas

直到最近,联系人通常存储在单个位置(通常存储在电子邮件客户端上)。 如今,将联系人存储在许多不同的位置(例如电话、社交网络站点、Exchange 邮箱中的联系人文件夹或组织的目录服务中)越来越常见。 随着联系信息的激增,代表同一人的多个联系人可能包含不同的信息;例如,一个联系人可能包含一个商务电话号码和另一个个人电话号码,或者存储在“联系人”文件夹中的联系人的名称可能与存储在手机上的同一人员的联系人不同。

在 Exchange Online 中,Exchange Online作为Office 365的一部分,以及从 Exchange 2013 开始的本地 Exchange 版本,来自代表同一人员的不同源的联系人彼此关联,类似于通过通用链接 ID 将电子邮件聚合到对话中的方式。 当 Exchange 服务器返回聚合的联系人信息时,它将包括每个联系人的一组属性,例如源文件夹、显示名称、ID 和源 ID。 返回的属性和属性的总和称为角色,返回的属性集称为 角色的形状

由于构成角色的信息不存储在单个位置,并且该信息随时可能更改,因此仅在向 Exchange 服务器发出请求时才创建角色。 使用 FindPeople EWS 操作发出角色搜索请求。 请求可以包含排序顺序,并且可以根据查询字符串进行筛选,以便通过对结果进行排序和筛选来帮助找到正确的角色。 例如,可以从“联系人”文件夹、Hotmail 帐户、LinkedIn帐户和公司的目录服务中检索显示名称和一组与特定联系人关联的所有电子邮件地址,或者可以检索一组具有 IM 地址的所有角色。 根据识别存储在各种设备上的联系人之间的关系的算法,自动将联系人链接到角色。

注意

EWS 托管 API 无法实现此功能。

表 2. 用于处理角色的 EWS 操作

操作名称 说明
FindPeople
返回指定联系人文件夹中的所有可用角色,或检索与指定查询字符串匹配的联系人。
GetPersona
返回与特定角色关联的一组属性,例如指定角色 ID 的所有 IM 地址或显示名称。

可以使用 GetPersonaFindPeople 操作有效地检索来自多个源的联系信息。 由于与角色相关的所有项都与链接 ID 相关联,因此可以在各种使用联系人数据的应用程序中使用这些操作。 下面是一些示例:

  • 一个移动电话应用,当用户呼叫联系人时使用 GetPersona 操作,然后在没有人接听时提供其他电话号码来呼叫。

  • 一个应用程序,它使用 FindPeople 操作扫描收件箱邮件中的电子邮件地址,以确定它们是否在现有角色中找到。 尚未与某个角色关联的地址可用于创建销售潜在顾客或列出与该角色所代表的人员的所有最近通信。

  • Outlook 的一个邮件应用 ,根据信件是正式还是非正式的,提供不同的称呼。 正式称呼由目录服务的显示名称提供,非正式问候语来自源自社交网络联系人的显示名称。

统一联系人存储

角色不仅限于电子邮件客户端。 如果要开发 IM 客户端,可以询问自己以下任一项或所有事项:

  • 如何为 Lync 客户端应用程序预配一组默认的 IM 联系人项目?

  • 如何实现管理 IM 联系人和组列表?

  • 如何实现管理自定义 Lync 客户端对 IM 联系人和 IM 组的访问?

统一联系人存储在 Exchange 中的后台工作,将来自 Exchange 和其他源的联系人数据聚合到单个实体或角色中。 尽管用于访问统一联系人存储的 EWS 操作特定于 IM 联系人,但可以使用 Exchange 中的统一联系人存储来处理所有类型的应用程序中的角色。 请记住,统一联系人存储无法访问联系人数据 AD DS。

IM 联系人存储在名为 QuickContacts 的隐藏文件夹中。 可以使用 AddNewImContactToGroupAddImContactToGroup 操作将联系人添加到存储在此隐藏文件夹中的组。 由于可以使用统一联系人存储对 IM 联系人进行分组,因此可以更轻松地访问和更新联系人组。

注意

EWS 托管 API 无法实现此功能。

表 3. 用于访问统一联系人存储的 EWS 操作

操作名称 说明
AddNewImContactToGroup
将新的 IM 联系人添加到 IM 组,最多 1000 个联系人。
AddImContactToGroup
将现有 IM 联系人添加到 IM 组,最多可添加 1000 个联系人。
AddImGroup
添加新的 IM 组,最多包含 64 个组。
AddDistributionGroupToImList
向 IM 组添加新通讯组,最多包含 64 个组。
GetImItemList
检索 IM 组和 IM 联系人角色的列表。
GetImItems
检索有关特定 IM 组和 IM 联系人角色的信息。
RemoveContactFromImList
从 IM 组中删除联系人。
RemoveImContactFromGroup
从 IM 组中删除 IM 联系人。
RemoveDistributionGroupFromImList
从 IM 组中删除通讯组。
RemoveImGroup
删除 IM 组。
SetImGroup
更改 IM 组的显示名称。

本节内容

另请参阅