2010-10-21 96 views
2

我正在使用ASP.NET和C#爲我公司的Intranet構建網站。因此,是否可以將Microsoft Office Communicator 2007集成到ASP.NET頁面中。即站點應該能夠提供所有聯繫人的當前狀態(可用,忙碌,離線),並且當用戶點擊用戶名時,應該打開聊天窗口。在ASP.NET中集成Microsoft Office Communicator 2007頁面

回答

5

假設客戶端機器運行Communicator,辦公室和IE,目前爲止最簡單的方法是在客戶端腳本使用NameCtrl - 下面的例子應該給人的基本概念。這也將爲您提供功能性方面最大的優勢。將鼠標懸停在「您的聯繫人」文本上即可看到彈出的角色菜單。

對於真實世界的解決方案,您只需實現一個圖像,該圖像根據返回的呈現狀態(即呈現泡泡與每個用戶名稱一起顯示)而變化,以及將圖像集合顯示給圖像,以確保您可以將傳入狀態更改映射到相關圖像。

值得注意的是,其他答案中提到的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

偉大的解決方案,我喜歡這個! – 2011-06-13 21:05:28

+0

@Paul Nearney嗨,很好的解決方案。但我在這裏有一個問題。如果我想顯示錶中的所有用戶和他們的狀態,是否有可能通過JavaScript?在這個例子中,它顯示給單個用戶。我想顯示所有用戶。是否有可能通過JavaScript? – 2013-12-24 03:14:12

+0

是的,GetStatus中的第二個參數是一個ID。如果確保對於通過GetStatus註冊的每個用戶都是唯一的,它將作爲OnStatusChange中的ID參數傳回給您。你可以用它來例如查找數組中的相關用戶,或查找與狀態剛更改的用戶對應的div – 2014-01-02 10:04:41

相關問題