2

我已经设法在我自己的自定义构建应用程序中实现了 Sharepoint 中使用的 Name.NameCtrl.1 active x 以进行存在。一切正常,我正在根据 Office 通信服务器上的用户状态正确更新在线状态。但是,我没有像在 SharePoint 中那样在状态控件中获得有关用户的任何其他详细信息。我得到的只是电子邮件字段中的 sip 地址(而不是 AD 中真正的默认电子邮件地址)和一个安排会议的链接。

谁能告诉我如何让控件填充来自 AD(部门、电子邮件、电话等)的详细信息,就像在 sharepoint 中一样?此外,我也没有像 sharepoint 这样的控件中的组织选项卡。

有任何想法吗?

谢谢,

基尼

4

2 回答 2

2

NameCtrl 从客户端计算机上正在运行的 Communicator(或 Lync,如果您正在使用它)实例获取其大部分数据。没有数据直接从 SharePoint 拉回。要让 NameCtrl 在您的网页上正常工作,您需要确保:

  • Communicator(或 Lync)正在客户端上运行,并且已登录
  • 您调用 NameCtrl 的网页位于浏览器的 Intranet 或 Trusted Sites 区域中

推荐的模式是在调用任何其他方法之前在 NameCtrl 对象上调用 PresenceEnabled - 如果返回 false,则上述先决条件之一(或两者)为 false。下面的代码通常对我有用

<script>

var sipUri = "your.contact@your.domain.com";

var nameCtrl = new ActiveXObject('Name.NameCtrl.1');
if (nameCtrl.PresenceEnabled)
{
  nameCtrl.OnStatusChange = onStatusChange;
  nameCtrl.GetStatus(sipUri, "1");
}


function onStatusChange(name, status, id)
{
  // This function is fired when the contacts presence status changes.
  // In a real world solution, you would want to update an image to reflect the users presence
  alert(name + ", " + status + ", " + id);
}

function ShowOOUI()
{
  nameCtrl.ShowOOUI(sipUri, 0, 15, 15);
}

function HideOOUI()
{
  nameCtrl.HideOOUI();
}

</script>

<span onmouseover="ShowOOUI()" onmouseout="HideOOUI()" style="border-style:solid">Your Contact</span>

如果您还没有看过它,这里有一个很好的(ish)NameCtrl参考

于 2011-02-19T08:22:36.157 回答
0

我认为在 SharePoint 中,控件填充了用户配置文件服务中存在的数据。如果您希望在非共享点 ASP.NET Web 应用程序中使用此功能,则必须从 AD 构建用户配置文件详细信息的存储库(并将其缓存!),您的控件将查看该存储库以显示该信息。

于 2011-02-18T17:24:55.020 回答