我可以在聊天模式下打开办公室通讯器(Lync 2010)吗?

时间:2010-10-14 17:00:26

标签: shellexecute lync lync-2010 office-communicator

在具有正确设置的Win / IE环境中,您可以启动.exe文件。

以下代码可以正常启动Microsoft Lync(Office Communicator的新名称)。

...
    <a href="#" onclick="fnShellExecute();">start chat</a>
</body>
</html>
<script type="text/javascript">
    function fnShellExecute()
    {
        var objShell = new ActiveXObject("shell.Application");
        objShell.ShellExecute("communicator.exe", "", "C:\Program Files (x86)\Microsoft Lync", "open", 10);
    }
</script>

但是我无法计算出参数(或者如果可能的话)来创建一个快捷方式,该快捷方式会打开带有聊天框的Lync客户端,打开另一个可用的用户。基本上我知道谁可用,我希望能够创建(在HTML中)一个简单的链接,可以打开一个聊天窗口给那个人(在WPF或Silverlight或任何内置控件之外)。

是否有人知道如何在javascript中调整此行以打开指定联系人的Lync聊天窗口?

objShell.ShellExecute("communicator.exe", "", "C:\Program Files (x86)\Microsoft Lync", "open", 10);

或者是否有其他方法可以通过某种快捷方式在聊天模式下打开Lync?

提前谢谢。

2 个答案:

答案 0 :(得分:3)

根据您的要求,最简单的方法是使用现有的NameCtrl角色菜单 - 这是在鼠标悬停时显示在SharePoint(以及其他基于Web的应用程序,如Dynamics CRM)中的弹出式菜单用户状态图标。此菜单允许您呼叫用户,开始新的对话等。您需要在正在运行的计算机上安装Office才能使用。

例如,在运行Office 2007/2010和IE的任何客户端计算机上尝试此操作。将鼠标悬停在“您的联系人”文本上以查看角色菜单:

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

答案 1 :(得分:0)

如果NameCtrl答案不符合您的要求,您可以尝试Lync SDK。创建一个使用Automation API打开与给定用户的对话的.NET DLL非常简单。

然后,您需要通过COM公开它,以确保可以从JavaScript调用它。同样,使用.NET的COM Interop功能非常简单。