Уведомление Lync об отключенных от сети людях, использующих VBA

У меня есть VBA, добавленный в мой внешний вид, который отправляет сообщение через Lync. Сценарий приведен ниже.


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 пользователей, то он отправляет сообщение всем как «Группа».

Что я хочу, так это то, что если есть пользователь, который не в сети, я хотел бы получить уведомление о том, что этот человек не в сети. Messenger отображает «Ошибка», говоря: «Невозможно пригласить «n» людей присоединиться к собранию».

Могу ли я получить какой-то статус, который возвращает мне данные обо всех пользователях, которым сообщение не было отправлено?


person hari    schedule 07.01.2013    source источник


Ответы (1)


Вы делаете это неправильно... Вместо того, чтобы создавать свой список рассылки и затем искать исключения, посмотрите, кто находится в сети, и отправьте сообщение только этим людям.

Следующие две функции вернут массив всех ваших контактов 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
person FillsTubs    schedule 06.01.2014