Skype for Businessでは、Outlookで設定した予定表を取得し、プレゼンス情報(連絡可能、取り込み中など)を変化させる。
とはいっても、クライアントで動作しているOutlookとSkypeが連携しているわけではなくて、SkypeクライアントはEWS接続でExchangeサーバに接続し、予定表をSIP通信で取得する流れになるよ。
Skypeサーバ側のPowershellを使って、「Start-CsClsLogging -Scenario alwayson」を実行して、集中管理ログを取得する。
使い方は、Start-CsClsLoggingで取得開始、Stop-CsClsLoggingで取得終了、Search-CsClsLoggingでログファイル取得といった感じ。以下のように実行するよ。
PS C:\Users\skypeadmin\Desktop> Start-CsClsLogging -Scenario alwayson
    PoolFqdn: EXSK2016.extest.local
MachineFqdn                  ResponseMessage                AlwaysOn ScenarioName     Remaining ProductVersion
                                                                                      Mins
-----------                  ---------------                -------- ------------     --------- --------------
EXSK2016.extest.local                                       True                      0         6.0.9319.0
PS C:\Users\skypeadmin\Desktop> Show-CsClsLogging
    PoolFqdn: EXSK2016.extest.local
MachineFqdn                  ResponseMessage                AlwaysOn ScenarioName     Remaining ProductVersion
                                                                                      Mins
-----------                  ---------------                -------- ------------     --------- --------------
EXSK2016.extest.local                                       True                      0         6.0.9319.0
PS C:\Users\skypeadmin\Desktop> Stop-CsClsLogging -Scenario alwayson
    PoolFqdn: EXSK2016.extest.local
MachineFqdn                  ResponseMessage                AlwaysOn ScenarioName     Remaining ProductVersion
                                                                                      Mins
-----------                  ---------------                -------- ------------     --------- --------------
EXSK2016.extest.local                                       False                     0         6.0.9319.0
PS C:\Users\skypeadmin\Desktop> Search-CsClsLogging -OutputFilePath "C:\LogFiles\logfile.txt"
開始時刻 2017/07/24 10:50:23 の使用
終了時刻 2017/07/24 11:20:23 の使用
1 台のコンピューターに対して検索を開始します
ResponseMessage  : 1 個のエージェントで正常終了しました
OutputFile       : C:\LogFiles\logfile.txt
StartTime        : 2017/07/24 10:50:23
EndTime          : 2017/07/24 11:20:23
SuccessfulAgents : {EXSK2016.extest.local\EXSK2016.extest.local}
FailedAgents     : {}
次は、Skypeサーバ側でログ取得をしつつ、Skypeクライアントでは、予定表を故意に変化させるよ。なにはともあれ、EWS連携ができていることが前提条件になるので、構成情報をチェック。

Outlookの予定表に適当な予定を設定し、Skypeクライアントを再起動。

ログをStop-CsClsLoggingで止めて解析する。
解析するのは、専用のデバッグツールを使うと分かりやすい。
公式では、Skype for Busieness Server 2015のインストールフォルダに入れましょう。と言われているので、C:\Program Files\Skype for Busieness Server 2015\の下に入れる。
テキストエディタでも見れるけど、デバッグツールではSIP通信のIN/OUTをわかりやすく表示してくれる。
https://www.microsoft.com/en-us/download/details.aspx?id=47263
取得したLogFile.txtをSnooper.exeで読み込むとこんな感じ。
まず、SIP通信の中身を見てみる。availabilityの6500は取り込み中、meetingSubjectは予定表の名前などやり取りしていることがわかる。
※MSDNブログのでは、Out→inの順番だったが、逆になっちゃった。とりあえず、プレゼンスの動きは分かったからいいかな?
ただ、流れとしては、以下っぽい。
1.ExchangeのGetUserAvailabilityでSkypeサーバにプレゼンス情報を送信
2.Skypeサーバは送られてきたプレゼンス情報を連絡先リストに登録しているユーザへ送信


プレゼンスの対応表は以下の通り。
| Value | Availability | 
|---|---|
| 3500 | Available | 
| 6500 | Busy | 
| 9500 | Do Not Disturb | 
| 12500 | Be Right Back | 
| 15500 | Away | 
| 18500 | Offline | 
うーん、奥が深いね。
参考サイト
https://blogs.msdn.microsoft.com/lync_support_team_blog_japan/2017/02/06/sfb-presencecalendar/
https://msdn.microsoft.com/ja-jp/library/dd253506(v=office.13).aspx
https://technet.microsoft.com/ja-jp/library/jj687958(v=ocs.15).aspx


