0

ActiveXObject を使用して、lync ステータスの変更を処理し、以下の JavaScript を介してプレゼンスを表示しています

var Instant = {

sipUri: "name@address.com", // Change this to the user's SIP URI you want to chat with
nameCtl: new ActiveXObject('Name.NameCtrl.1'),

onStatusChange: function (name, status, id) {
    alert(name + " " + status + " " +id);
},

showOOUI: function () {

var oouiX = 0, oouiY = 0;

oouiX += pawn_icon.offsetLeft + pawn_icon.clientLeft - pawn_icon.scrollLeft;
oouiY += pawn_icon.offsetTop + pawn_icon.clientTop - pawn_icon.scrollTop;

Instant.nameCtl.ShowOOUI(Instant.sipUri, 0, oouiX, oouiY);
},

hideOOUI: function () {
    Instant.nameCtl.HideOOUI();
}
}

そして、実際にイベント ハンドラーをイベントに登録するためのこの html/javascript:

<head>
    <title>Lync Presence Test</title>

    <!-- le JS -->
    <script type="text/javascript">
        if (Instant.nameCtl.PresenceEnabled) {
            Instant.nameCtl.OnStatusChange = Instant.onStatusChange;
            Instant.nameCtl.GetStatus(Instant.sipUri, "1");
        }
    </script>
</head>
<body>
<div id="presence" onmouseover="Instant.showOOUI()" onmouseout="Instant.hideOOUI()">Name<img id="pawn" name="pawn_icon"  src="Styles/images/LyncStatus/imnon.png" alt="Available"> </div>
</body>
</html>

タイトルが示すように、ページをロードすると、イベントが発生し、期待どおりのステータス コードが返されます。ただし、ステータスを変更すると、2 つのイベントが発生します。1 番目には正しいステータス コードが含まれ、2 番目には古いステータス コードが含まれます。ここでの問題は、新しいステータスに変更したいということですが、古いステータスは最後に発生するイベントであるため、新しい変更が上書きされます。人の名前の上にマウスを置くと、イベントも 6 回発生します。

Microsoft の Name.NameCtrl オブジェクトのドキュメントはかなりまばらですが、getstatus メソッドと onstatuschange プロパティを理解しているので、まさに私が探しているものです。

では、statuschange イベントが 2 回発生する理由はありますか?また、これを先取りするか、返されるイベントの順序を切り替える方法はありますか? また、ステータスの変更が発生していないのに、名前にマウスを合わせるとイベントが発生するのはなぜですか? 特定のステータス変更イベントについて詳しく知りたいのですが、何も見つかりません。また、Lync サーバーにアクセスできないため、クライアント側のセットアップを行う必要があります。

Name.NameCtrl ドキュメント: http://msdn.microsoft.com/en-us/library/bb802706(v=office.14).aspx

プレゼンス機能のコードを入手した場所: http://blog.instant-tech.com/2012/05/web-client-for-microsoft-lync-2010.html

4

1 に答える 1

0

多くのイベントが発生します。ただし、アラートでは、最後に発生したイベントを正確に把握することはできません。イベントは正しい順序で発生していました。画像ベースの変更を処理するために、コードにswitchステートメントを追加しました

于 2012-12-19T08:22:36.047 に答える