4

Lync 経由でメッセージを送信する VBA を Outlook に追加しています。スクリプトは以下のとおりです。


Sub sendIM(toUsers As Variant, message As String)

    Dim msgr As CommunicatorAPI.IMessengerConversationWndAdvanced

   'Open messenger window and send message!!!!!
    Set msgr = messenger.InstantMessage(toUsers)
    msgr.SendText (message)
    Set msgr = Nothing

それは正常に動作します。toUsers 変数に 10 人のユーザーがいる場合、メッセージは「グループ」として全員に送信されます。

私が欲しいのは、オフラインのユーザーがいる場合、その人がオンラインではないという通知を受け取りたいということです。メッセンジャーに「"n" 人を会議に招待できません」というエラー メッセージが表示されます。

メッセージが送信されなかったすべてのユーザーの詳細を返すステータスを取得できますか?

4

1 に答える 1

5

これは間違った方法です... 配布リストを作成してから例外を探すのではなく、誰がオンラインであるかを確認し、それらの人々だけにメッセージを送信します。

次の 2 つの関数は、すべての Lync 連絡先とその現在の状態の配列を返します。配列を使用して、メッセージに含まれる対象を絞り込みます。

Function LyncContactsStatus() As Variant

Dim appLync As CommunicatorAPI.Messenger

Dim LyncDirectory As CommunicatorAPI.IMessengerContacts

Dim LyncContact As CommunicatorAPI.IMessengerContact

Dim arrContacts() As Variant

Dim lngLoopCount As Long

    Set appLync = CreateObject("Communicator.UIAutomation")
        appLync.AutoSignin
    Set LyncDirectory = appLync.MyContacts

    ReDim arrContacts(LyncDirectory.Count - 1, 1)

    For lngLoopCount = 0 To LyncDirectory.Count - 1
        Set LyncContact = LyncDirectory.Item(lngLoopCount)
        arrContacts(lngLoopCount, 0) = LyncContact.FriendlyName
        arrContacts(lngLoopCount, 1) = LyncStatus(LyncContact.Status)

    Next lngLoopCount

    LyncContactsStatus = arrContacts

    Set appLync = Nothing

End Function



Function LyncStatus(IntStatus As Integer) As String

    Select Case IntStatus
        Case 1      'MISTATUS_OFFLINE
            LyncStatus = "Offline"
        Case 2      'MISTATUS_ONLINE
            LyncStatus = "Online"
        Case 6      'MISTATUS_INVISIBLE
            LyncStatus = "Invisible"
        Case 10     'MISTATUS_BUSY
            LyncStatus = "Busy"
        Case 14     'MISTATUS_BE_RIGHT_BACK
            LyncStatus = "Be Right Back"
        Case 18     'MISTATUS_IDLE
            LyncStatus = "Idle"
        Case 34     'MISTATUS_AWAY
            LyncStatus = "Away"
        Case 50     'MISTATUS_ON_THE_PHONE
            LyncStatus = "On the Phone"
        Case 66     'MISTATUS_OUT_TO_LUNCH
            LyncStatus = "Out to Lunch"
        Case 82     'MISTATUS_IN_A_MEETING
            LyncStatus = "In a meeting"
        Case 98     'MISTATUS_OUT_OF_OFFICE
            LyncStatus = "Out of office"
        Case 114    'MISTATUS_OUT_OF_OFFICE
            LyncStatus = "Do not disturb"
        Case 130    'MISTATUS_IN_A_CONFERENCE
            LyncStatus = "In a conference"
        Case Else
            LyncStatus = "Unknown"
    End Select
End Function
于 2014-01-06T17:34:59.013 に答える