контроль присутствия в веб-приложениях asp.net

Мне удалось реализовать активный x Name.NameCtrl.1, используемый в точке доступа, в моих собственных приложениях, созданных специально для присутствия. Все работает нормально, и я корректно обновляю статус присутствия на основе статуса пользователей на Office Comunication Server. Однако я не получаю никаких других сведений о пользователе, представленных в контроле присутствия, как в SharePoint. Все, что я получаю, это sip-адрес в поле электронной почты (а не реальный адрес электронной почты по умолчанию в AD) и ссылку для планирования встречи.

Может ли кто-нибудь сказать мне, как заставить элемент управления заполнять данные из AD (отдел, электронная почта, телефон и т. Д.), Как это делается в sharepoint ?? Также у меня нет вкладки организации в элементе управления, такой как sharepoint.

Любые идеи?

Спасибо,

Кини


person keeney    schedule 18.02.2011    source источник


Ответы (2)


NameCtrl получает большую часть своих данных от работающего экземпляра Communicator (или Lync, если вы его используете) на клиентской машине. Никакие данные не извлекаются напрямую из SharePoint. Чтобы NameCtrl правильно работал на ваших веб-страницах, вам необходимо убедиться, что:

  • Communicator (или Lync) запущен на клиенте и выполнен вход
  • Веб-страница, с которой вы вызываете NameCtrl, находится в зоне интрасети или надежных сайтов в вашем браузере.

Рекомендуемый шаблон — вызывать PresenceEnabled для объекта NameCtrl перед вызовом любых других методов — если это возвращает false, то одно (или оба) из приведенных выше предварительных требований являются ложными. Код ниже обычно работает для меня

<script>

var sipUri = "[email protected]";

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>

В случае, если вы еще не видели его, есть хорошая ссылка NameCtrl здесь

person Paul Nearney    schedule 19.02.2011
comment
Пол, я оборачиваю все в присутствие [if (nameCtrl.PresenceEnabled) { }] работает, и я могу изменить свой статус в коммуникаторе, и он обновляет мою иконку на веб-странице. Он по-прежнему не будет заполнять какие-либо другие сведения по электронной почте, отделу, телефону и т. Д., И у меня все еще нет вкладки организации. Получаете ли вы эти данные в своих пользовательских приложениях? - person keeney; 22.02.2011
comment
Просто догадка - вы ставите перед sip uri своего контакта префикс sip:? если да, то попробуй удалить, если нет, то попробуй добавить. Я проверю это, когда моя виртуальная машина запустится. - person Paul Nearney; 22.02.2011
comment
Кроме того, в качестве проверки работоспособности убедитесь, что интересующая вас информация действительно извлекается Lync или Communicator (кстати, что вы используете?) — вы сможете сделать это, просмотрев карточку контакта вашего контакта. . Если Lync/Communicator не отображает эту информацию, NameCtrl не сможет - person Paul Nearney; 22.02.2011
comment
Я получаю одинаковую функциональность (присутствие) с префиксом sip: и без. Тем не менее, все еще нет подробностей AD. - person keeney; 22.02.2011
comment
Я использую офисный коммуникатор. Просматривая чью-то карточку контакта, сообщите мне, когда они будут свободны в следующий раз, описание работы, отдел и т. Д. - person keeney; 22.02.2011
comment
Я не вижу, что я делаю иначе, чем Sharepoint (который дает мне полную информацию и вкладку организации). - person keeney; 22.02.2011
comment
Я проверил свою тестовую среду и не могу воспроизвести проблему, с которой вы столкнулись: пока Lync/Communicator показывает информацию, она отображается в NameCtrl. Вот что нужно проверить: 1. В какой зоне IE работает ваше приложение? 2: Присоединена ли ваша машина к домену, и вы вошли в систему на коробке и в коммуникаторе как один и тот же пользователь? 3: Если вы используете Vista/Win7, Communicator и IE работают на одном уровне контроля учетных записей? Кроме этого, я не вижу причин, по которым Sharepoint и ваше приложение отображают разную информацию — может быть, опубликуете свой код здесь? - person Paul Nearney; 23.02.2011

Я думаю, что в SharePoint элемент управления заполняется данными, которые существуют в службе профилей пользователей. Если вы хотите этого в веб-приложении ASP.NET, отличном от SharePoint, вам нужно будет создать репозиторий сведений о профиле пользователя из AD (и кэшировать его!), Который ваш элемент управления будет использовать для отображения этой информации.

person James Love    schedule 18.02.2011
comment
-1, так как данные извлекаются из Lync/Communicator, а не из SharePoint. Сам NameCtrl отвечает за кеширование всех данных, не нужно ничего кешировать самому - person Paul Nearney; 19.02.2011