asp.net Web应用程序中的状态控制

时间:2011-02-18 15:19:39

标签: asp.net sharepoint user-presence

我已经设法在我自己定制的应用程序中实现了sharepoint中使用的Name.NameCtrl.1 active x for presence。一切正常,我正在根据Office Comunication Server上的用户状态正确更新状态。但是,我没有像在SharePoint中那样获得在状态控件中提供的用户的任何其他详细信息。我得到的只是电子邮件字段中的SIP地址(而不是AD中的真实默认电子邮件地址)以及安排会议的链接。

任何人都可以告诉我如何让控件填充AD中的详细信息(部门,电子邮件,电话等),就像在sharepoint中一样?此外,我没有像sharepoint那样在控件中获得组织选项卡。

有什么想法吗?

谢谢,

Keeney

2 个答案:

答案 0 :(得分:2)

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

  • Communicator(或Lync)正在客户端上运行,并已登录
  • 您正在呼叫NameCtrl的网页位于浏览器的Intranet或“受信任的站点”区域中

推荐的模式是在调用任何其他方法之前在NameCtrl对象上调用PresenceEnabled - 如果返回false,则上述prereqs中的一个(或两个)为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参考here

答案 1 :(得分:0)

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