2010-10-21 2 views
2

Я работаю над созданием веб-сайта с использованием ASP.NET и C# для интрасети моей компании. Таким образом, можно интегрировать Microsoft Office Communicator 2007 на странице ASP.NET. то есть сайт должен иметь возможность предоставлять текущий статус (доступный, занятый, автономный) всех контактов и когда пользователь нажимает на имя пользователя, откроется окно чата.Интеграция Microsoft Office Communicator 2007 в ASP.NET Страница

ответ

5

Предполагая, что клиентский компьютер работает под управлением Communicator, Office и IE, безусловно, самый простой способ заключается в использовании NameCtrl в клиентском сценарии - пример ниже должен даны основные понятия. Это также даст вам максимальную отдачу от функциональности. Наведите указатель мыши на текст «Ваш контакт», чтобы открыть меню персоны.

Для решения в реальном мире вам просто нужно реализовать изображение, которое изменяется в зависимости от состояния присутствия, которое возвращается (т. Е. Пузыря присутствия рядом с именем каждого пользователя), и коллекции sip uris к изображениям , чтобы вы могли сопоставить входящее изменение статуса с соответствующим изображением.

Следует иметь в виду, что решение Ajax/CWA, упомянутое в другом ответе, скорее всего, не будет работать с Lync Server (я считаю, что Communicator Web Access больше нет), поэтому вам нужно будет изменить решение, если ваша компания обновление до Lync. Я протестировал решение ниже, и он работает с Lync Server RC.

<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> 
+0

Отличное решение, мне это нравится! –

+0

@Paul Nearney Hi, отличное решение. Но у меня проблема. если я хочу отображать всех пользователей в таблице и их статус, возможно ли это через javascript? Здесь в этом примере он отображается для одного пользователя. Я хочу показать всех пользователей. Это возможно с помощью javascript? –

+0

Да, второй параметр в GetStatus - это идентификатор. Если вы убедитесь, что это уникально для каждого пользователя, зарегистрированного через GetStatus, он будет передан вам как параметр ID в OnStatusChange. Вы можете использовать это, например, найти соответствующего пользователя в массиве или найти div, который соответствует статусу пользователя, который только что изменился –