По наводке
Александр Лукьянов написал (скопипастил :)) скрипт на 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.
В качестве источника использовал информацию
отсюда