понедельник, 28 ноября 2011 г.

Lync and fortunes

lync1

“Продаю параошют. Использовался только один раз, ни разу не открывался. Небольшие кровоподтеки.”

“Жизнь – крутая штука. Купи шлем.”

“Не могу придумать умную фразу, чтобы поделиться ей.”

Некоторые люди очень любят помещать забавные предложения вроде этих в свой мессенджер. Я-то точно люблю. В случае с OCS это можно было сделать вручную (как, впрочем, и в Lync). Но только одно такое сообщение всё время… Скууучно. Особенно, если Вы накопили множество таких фраз. Менять их вручную – почти такое же скучное занятие, как не менять их. Вот потратить кучу (пусть даже и небольшую) времени, чтобы  создать маленькую програмку, которая будет это делать за нас – это наш метод! 

Как бы то ни было, я пробовал в своё время сделать это с OCS клиентом, но мне это не удалось. То ли я плохо пытался, то ли решение не было достаточно простым для меня… В любом случае, обычно в “следующей версии” всё лучше, чем в предыдущей (если по началу у Вас ничего не получается, назовите это “версия 1.0”) и в Lync мы получили новый SDK, с несомненными улучшениями, такими, как возможность менять строку статуса программно Подмигивающая рожица

Вкратце: Вы можете прочитать о той части SDK, которая помогла мне построить мой скрипт, потом прочитать о написании скриптов на PowerShell для Lync c помощью extencibility API и наконец прочитать о том, как управлять именно нужным параметром. Ещё один шаг, который нужно предпринять: скачать и установить SDK. После этого можно будет написать и использовать собственные скрипты для любых задач, связанных с Lync.

Или можно просто использовать этот скрипт:

 

#Load Assembly

$assemblyPath = "C:\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.Lync.Model.DLL"

Import-Module $assemblyPath

 

#Initialize objects

$client = [Microsoft.Lync.Model.LyncClient]::GetClient()

$self = $client.Self;

 

#Get a fortune

$Fortunes = Get-Content c:\temp\fortunes.txt

$linesNumber = $Fortunes.Length

$todaysFortuneNumber = Get-Random -Maximum $linesNumber -Minimum 1

$todaysFortune = $Fortunes[$todaysFortuneNumber -1]

 

#Publish personal note of the local user

$contactInfo = new-object 'System.Collections.Generic.Dictionary[Microsoft.Lync.Model.PublishableContactInformationType, object]'

$contactInfo.Add([Microsoft.Lync.Model.PublishableContactInformationType]::PersonalNote $todaysFortune)

$ar = $self.BeginPublishContactInformation($contactInfo, $null, $null)

$self.EndPublishContactInformation($ar)

 

Он явно не идеален и не делает всех тех вещей, которые нужно бы делать (например, не проверяет, а подключен ли клиент Lync к серверу), но его можно рассматривать как рабочий прототип. =)

Комментариев нет: