Ответы пользователя по тегу Delphi
  • Как отправлять сообщения в Lync из программы на Delphi?

    artymail
    @artymail Автор вопроса
    По наводке Александр Лукьянов написал (скопипастил :)) скрипт на PowerShell:
    $assemblyPath = “C:\Program Files\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.Lync.Model.DLL”
    
    Import-Module $assemblyPath
     
    $IMType = 1
    $PlainText = 0
    
    $cl = [Microsoft.Lync.Model.LyncClient]::GetClient() 
    $conv = $cl.ConversationManager.AddConversation()
    $gs = $cl.ContactManager.Groups
    
    $i = 0
    
    #search for user in contacts list
    $callbackAddContact = [AsyncCallback]{
        param($asyncResult)
    
        # callback code
        if ($asyncResult.isCompleted)
        {
            $mygroup.EndAddContact($asyncResult)
        }
    }  
    
    foreach ($g in $gs)
    {
        foreach ($contact in $g)
        {
            if ($contact.GetContactInformation("PrimaryEmailAddress") -eq “email@domain”)
            {
                $i++                   
             
                break
            }
        }
    
        if ($i -eq 0)
        {
            $g = $gs[0]
            $contact = $cl.ContactManager.GetContactByUri(“email@domain”)
            $g.BeginAddContact($contact,$callbackAddContact,$state)
        }
    }
    
    #prepare conversation participant
    foreach ($g in $gs)
    {
        foreach ($contact in $g)
        {
            if ($contact.GetContactInformation("PrimaryEmailAddress") -eq “email@domain”)
            {
                $i++
           
                $null= $conv.AddParticipant($contact)
             
                break
            }
        }
    
        if ($i -gt 0) {break}
    }
     
    #send message
    $d = New-Object “System.Collections.Generic.Dictionary[Microsoft.Lync.Model.Conversation.InstantMessageContentType,String]”
    $d.Add($PlainText, “текст сообщения”) 
    $m = $conv.Modalities[$IMType]
    
    $myCallback = [AsyncCallback]{
        param( $asyncResult)
        
        # callback code
        if ($asyncResult.isCompleted)
        {
            Write-Host "Message Sent"
        }
    }
    
    [void]$m.BeginSendMessage($d, $myCallback, $d)


    Это первая итерация, еще нужно добавить всяких проверок и прочего. Но этот вариант уже работает. Проверяет есть ли контакт в списке, если нет, то добавляет и отправляет сообщение.

    Сам скрипт запускаю из Delphi с помощью ShellExecute.

    В качестве источника использовал информацию отсюда
    Ответ написан
    Комментировать