skype for business + bot + graph api
TRANSCRIPT
第19回 Office 365 勉強会2017年6月3日
瀬尾佳隆 (@seosoft)Microsoft MVP for Windows Dev
Skype for Business + Bot
+ Graph API
おことわり
本資料は、2017年6月3日時点の内容です
Slideshare 公開した 2018年1月時点では一部古い内容を含んでいることがありますが、記録・参考として公開します
自己紹介
瀬尾佳隆 (せおよしたか)•MVP for Windows Development• http://yseosoft.wordpress.com/• 乃木坂46 / 欅坂46 と、仏像 / 屏風絵が好き
Cogbot コミュニティ スタッフ
Techfair 主宰
3
今日の内容
Bot Framework の概要
Skype for Business 対応
Bot で Graph API 利用
操作手順、コード例は資料後半に「おまけ」として載せてます
4
この資料の置き場所
http://bit.ly/s4bbot_20170603
“Skype for Business” + “Bot” + 今日の日付
5
今日の皆さんの宿題
Bot Framework がSkype for Business に対応• Preview なので、まだまだ課題があるのは事実
•企業内システムでもChat インターフェイスが増えるはず
今のうちにアイデアを練ってください
6
Build 2017
Bot Framework 関連のアップデート• Channel 追加
• Skype for Business
• Adaptive Card• LUIS 連携の強化• Speech 対応
など
7
Bot Framework の概要
8
Bot とは
ユーザーとシステムとのコミュニケーションはDialog で行われる (Screen ではない)
https://docs.microsoft.com/en-us/bot-framework/bot-design-conversation-flow9
Bot のアーキテクチャー
https://docs.microsoft.com/en-us/bot-framework/overview-how-bot-framework-works10
Bot のアーキテクチャー
https://docs.microsoft.com/en-us/bot-framework/overview-how-bot-framework-works
ユーザーBot サービス 直接通信しているわけではない
11
Bot Framework
https://dev.botframework.com/
Bot 作成のツール、管理ポータルの集合体•開発ツール• Bot 登録管理• Bot Directory•ドキュメント
12
Bot 開発に必要なもの
Bot Builder SDK
Bot Application Template
Bot Framework Emulator
Bot Connector
13
Bot Builder SDK
Bot 開発のためのライブラリ / API セット• Bot Builder SDK for .NET• Bot Builder SDK for Node.js• Azure Bot Service• REST API
14
Bot Application Template
Visual Studio 用のプロジェクトテンプレート• http://aka.ms/bf-bc-vstemplate• ZIP ファイルのままで、“%USERPROFILE%¥Documents¥Visual Studio 2017¥Templates¥ProjectTemplates¥Visual C#¥” にコピー
15
Bot Framework Emulator
Bot のデバッグツール• https://docs.microsoft.com/en-us/bot-framework/debug-bots-emulator
•会話の流れ•会話の生データ (json)•ログ
16
Bot Connector
Bot と Chat アプリとを接続する仕組み• Chat アプリごとに Bot のコードを変更する必要がない• Skype for Business が追加された (Build 2017)
17
Skype for Business 対応
18
現在は Preview
今後に期待 何を言いたいのか察してください・・・
https://msdn.microsoft.com/en-us/skype/Skype-For-Business-Bot-Framework/docs/overview19
Bot Connector (再確認)
Bot と Chat アプリとを接続する仕組み• Chat アプリごとに Bot のコードを変更する必要がない
Chat アプリの種類によらず接続可能
20
Skype for Business + Bot
Bot と Skype for Business との接続もOK• Skype for Business でも Bot を変更する必要ない
Skype for Businessであっても Bot 変更不要
Preview なので、いろいろ課題はあるんですが・・・
21
現在の課題
シングルサインインできない•認証されているのは Skype クライアント• Bot はユーザーが認証されていることを知らない
• Bot では Chat アプリ固有のコードは記述しない
Bot のプレゼンスが取れない•オンラインでないと話しかけづらいかも
22
認証の方法
方法は 2つ•OAuth 認証のコードを自力で書く• AuthBot パッケージを使う
• ただし AuthBot は非公式、かつプレビューなので制約が多い
23
AuthBot
現在 Preview 版、非公式パッケージ
24
AuthBot の注意点
依存関係のある NuGet パッケージのバージョン縛りがある•全パッケージを最新にするとビルドエラーや実行時エラー
• Preview が取れるのを待ちましょう
2017年6月2日現在、最新バージョンにしては
いけないパッケージ25
AuthBot 実行結果 (1/4)
認証情報の要求
26
AuthBot 実行結果 (2/4)
認証
27
AuthBot 実行結果 (3/4)
マジックナンバーを送信
28
AuthBot 実行結果 (4/4)
認証成功
29
Bot で Graph API 利用
30
認証できたら、次は
Graph API 利用•Graph エクスプローラーがあれば、アプリ実装は意外と簡単
31
Graph エクスプローラー
Graph API の呼び出し方を確認するのに便利
https://developer.microsoft.com/ja-jp/graph/graph-explorer 32
Graph API 呼び出し方
Graph API 呼び出しは定石通りGraph エクスプローラーの
クエリをペースト(必要に応じて加工)
33
モデルの例 (1/2)
ユーザー情報の場合
34
モデルの例 (2/2)
カレンダー情報の場合
35
実行例
36
参考
37
情報源
Bot Framework• https://dev.botframework.com/
SecuretaryBot 開発チーム Blog• https://secretarybotja.wordpress.com/
Cogbot コミュニティ• https://www.facebook.com/groups/cogbot/
瀬尾のセッション資料 (Cogbot 関連)• https://docs.com/yoshitaka-seo/2037/cogbot
38
第6回 Cogbot 勉強会
Build 2017, de:code 2017 最新情報
2017年6月16日 (金) 19:30 開始https://cogbot.connpass.com/event/58638/
39
おまけ 1Bot 開発のポイント
40
コーディングのポイント
41
コーディングのポイント (1/5)
IDialog を実装したクラスで、ユーザーとBotとの対話を処理
42
コーディングのポイント (2/5)
ここまでの対話の必要な内容を保持できる
43
コーディングのポイント (3/5)
ユーザーが送信してきたメッセージ
44
コーディングのポイント (4/5)
Bot からユーザーに返すメッセージ
45
コーディングのポイント (5/5)
ユーザーからの次のメッセージを待つ
46
おまけ 2Bot 登録手順
47
Bot 登録手順 (1/8)
Bot を Azure App Service に展開
あとで使います
48
Bot 登録手順 (2/8)
Bot Framework の My bots で[Create a bot]
49
Bot 登録手順 (3/8)
名前、ハンドル、説明を入力
50
Bot 登録手順 (4/8)
Bot のエンドポイントを入力•サイト URL を “https” にして、末尾に “api/messages”
正確には Bot のController名
51
Bot 登録手順 (5/8)
[Create Microsoft App ID and password]でアプリ ID とパスワードを自動生成• ID とパスワードはあとで使うので、メモ帳などに貼り付け
52
Bot 登録手順 (6/8)
管理者のメールアドレスを入力して、登録
53
Bot 登録手順 (7/8)
Visual Studio に戻って、web.config を編集• AppID, Password を入力•最後にもう一度デプロイして、config を反映させる
54
Bot 登録手順 (8/8)
My bot 画面の [Test] で動作確認
55
おまけ 3Skype for Business の Channel 登録手順
56
Channel 登録手順
「Preview だから」ということもあってか・・・
登録手順がちょっと面倒
時間がかかる(テナントの設定反映 8時間!)
57
Channel 登録手順 (1/7)
My bot の [Add a channel] でSkype for Business を選択
58
Channel 登録手順 (2/7)
[Learn how] をクリック
59
Channel 登録手順 (3/7)
あとは、このページの通り
60
Channel 登録手順 (4/7)
PowerShell の Skype for Business Online Connector モジュールをインストール※Skype for Business Bot 登録をする PC ごとに初回の1回だけ
61
Channel 登録手順 (5/7)
管理者権限で PowerShell を開いて以下のコマンドで、Office 365 の管理者でサインイン
62
Channel 登録手順 (6/7)
AppId を使ってエンドポイントを追加•結果が返るまで 2~3分かかることも・・・
63
Channel 登録手順 (7/7)
あとは、ただ 8時間以上待つだけ・・・•テナントへの反映が済むまではエラーメッセージが表示される
•あきらめて Bot 削除しないように
64
AuthBot の使い方 (1/4)
https://github.com/microsoftdx/AuthBot
65
AuthBot の使い方 (2/4)
web.config にキー 7個を追加
66
AuthBot の使い方 (3/4)
IDialog 実装クラス 1か所目
67
AuthBot の使い方 (4/4)
IDialog 実装クラス 2か所目
68
おまけ 5Azure AD 認証のローカルデバッグ方法
69
AAD ローカルデバッグ
Azure AD 認証するアプリをローカルの IIS でデバッグするためには、
SSL を有効
にする必要があります
70
AAD ローカルデバッグ方法 (1/3)
プロジェクトを選択して、プロパティペインで[SSL 有効] を “True” にする•ポート番号が自動的に決まるのでメモ
71
AAD ローカルデバッグ方法 (2/3)
プロジェクトのプロパティ – [Web] で[プロジェクトの URL] に先ほど決まった URL を指定
72
AAD ローカルデバッグ方法 (3/3)
F5 キーで Bot を起動すると、指定のポートでSSL 有効な状態で起動• PC ごとに初めての SSL 有効化の際には、証明書インストールを求められる
73