NameCtrl получает большую часть своих данных из запущенного экземпляра Communicator (или Lync, если вы его используете) на клиентском компьютере. Данные не извлекаются напрямую из SharePoint. Чтобы NameCtrl правильно работал на ваших веб-страницах, вам необходимо убедиться, что:
- Коммуникатор (или Lync) работает на клиенте и вошел в систему
- Веб-страница, с которой вы вызываете NameCtrl, находится в зоне интрасети или доверенных сайтов в вашем браузере
Рекомендуемый шаблон - вызывать PresenceEnabled для объекта NameCtrl перед вызовом любых других методов - если это возвращает 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 здесь