Я работаю над созданием веб-сайта с использованием ASP.NET и C# для интрасети моей компании. Таким образом, можно интегрировать Microsoft Office Communicator 2007 на странице ASP.NET. то есть сайт должен иметь возможность предоставлять текущий статус (доступный, занятый, автономный) всех контактов и когда пользователь нажимает на имя пользователя, откроется окно чата.Интеграция Microsoft Office Communicator 2007 в ASP.NET Страница
ответ
Предполагая, что клиентский компьютер работает под управлением 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>
Отличное решение, мне это нравится! –
@Paul Nearney Hi, отличное решение. Но у меня проблема. если я хочу отображать всех пользователей в таблице и их статус, возможно ли это через javascript? Здесь в этом примере он отображается для одного пользователя. Я хочу показать всех пользователей. Это возможно с помощью javascript? –
Да, второй параметр в GetStatus - это идентификатор. Если вы убедитесь, что это уникально для каждого пользователя, зарегистрированного через GetStatus, он будет передан вам как параметр ID в OnStatusChange. Вы можете использовать это, например, найти соответствующего пользователя в массиве или найти div, который соответствует статусу пользователя, который только что изменился –