Lync SDK 2013使ってみた。

LyncSDKを使ってみたいと思って1ヶ月ぐらい経ったことでしょう。

やってみよう。
LyncSDKは、MSが提供しているSDKの中ではかなりわかりやすい、面白いと感じました。

開発の概要はSlideShareにいい感じのがありました。

UIの部分はWPFコンポーネントとして提供されているので、ペタペタ貼り付けるだけでそれなりに楽しく動きます。

今回は、IMの送信画面をWPFで作ったアプリから呼び出してみようかと思います。

プロジェクトの作成(VisualStudio2012)

SDKがVisualStudio2012にしか対応していません。VS2012を使用します。
ファイル > 新規作成 > プロジェクト
f:id:orzmakoto:20150612013758p:plain

SDKをインストールしたのでLyncWPFApplicationLyncSilverlightApplicationが増えていますね。

WPFで呼び出し画面作成

なんかいい感じにこんな感じで
f:id:orzmakoto:20150612014640p:plain
(WindowsFormでも良かった気がする)

ボタンを押した時にLyncを呼ぶ実装

usingに追加

using Microsoft.Lync.Model;
using Microsoft.Lync.Model.Extensibility;

呼び出しボタン押下イベント

var 宛先 = text_相手.Text;
var 件名 = text_件名.Text;
var 一言 = text_一言.Text;
// 自動化?オブジェクト取得
var automation = LyncClient.GetAutomation();

// IMを送る相手を設定する。
// 複数人に送る場合にはその人数だけリストに追加
List<string> inviteeList = new List<string>();
inviteeList.Add(宛先);

// IM送信時のオプション設定を構築
var modalitySettings = new Dictionary<AutomationModalitySettings, object>();
modalitySettings.Add(AutomationModalitySettings.FirstInstantMessage, 一言);
modalitySettings.Add(AutomationModalitySettings.SendFirstInstantMessageImmediately, true);
modalitySettings.Add(AutomationModalitySettings.Subject, 件名);

// 呼び出し
IAsyncResult ar = automation.BeginStartConversation(
    AutomationModalities.InstantMessage
    , inviteeList
    , modalitySettings
    , null
    , null);
automation.EndStartConversation(ar);

実行

f:id:orzmakoto:20150612022004p:plain
新しくウィンドが呼ばれました。
(∩´∀`)∩ワーイ

簡単に呼び出せます。
ただし、これはLyncクライアントがローカル環境で起動している必要があります。

上のコードではログイン状態を見ていないので、以下のように状態を見てIM送信の可否を判定する必要があります。

if (LyncClient.GetClient().State != ClientState.SignedIn)
{
  //ログインしていないため送信出来ません
  return;
}

想像より開発のハードルは低く感じましたが、開発環境を揃えるのが超難しいですね。
既に、Lyncを使っているなら簡単ですが・・・
未導入でちょっと試してみたい!ってのは不可能に近いので開発者が少ないのかしら・・・
あと、VS2012にしか対応していないのはかなりのネックですよ( ノ゚Д゚)