2016年9月2日(金曜)
※ 2016.09.13 MS Bot Framework システム図を追加
きょうの横浜は、晴れて、日中は26℃になり、暑さもやわらぎました。
― ― ― ― ― ― ― ― ― ―
[MS Bot Framework とは]
Lineや、Slackのような、スマホなどのモバイルデバイスから利用できるチャットを思い浮かべてください。
チャットの相手は人間ですが、AI botだったら、AppleのSiriや、MicrosoftのCotanaのように、べんりなアシスタントにできるかもしれません。
こういった botを、簡単に開発し、使えるようにするには、従来はスクラッチ開発であったものが、2016年4月に、Microsoftがbeta版を公開した、Microsoft Bot Framework 3.0 を利用することにより、簡単に開発することが可能になりました。
MS Bot Frameworkが何であるかは、詳しいblog記事を書かれている方が多くいらっしゃいますので重複する内容は割愛しますが、齟齬があるといけませんので、Microsoftの公式ドキュメントをリファレンスにしてください。(ただし、英語です)
↓
https://docs.botframework.com/en-us/
― ― ― ― ― ― ― ― ― ―
[きょうのblogのゴールと前提条件]
Microsot Bot Frameworkを使って、Visual Studio 2015上に、bot開発環境を構築し、新規にbotを作成して、そのbotの動作をテストするところまでを、きょうのゴールとします。
最短でゴールをめざすこととし、目標時間は、 2時間以内とします。
開発用に使うPCは、Windows 10(Core i7、16GB)です。
前提条件として、Visual Studio 2015がインストールされており、C#での開発が可能な環境とスキルがあることとします。
ちなみに、自分は、Visual Studio Community 2015(無償)を使用しています。
― ― ― ― ― ― ― ― ― ―
[Bot Builder SDKと Bot Application template]
Microsoft Bot Frameworkには、SkypeやSlackなどのチャットと接続するための Connectorと呼ばれているコンポーネントは便利ではあるが、いきなりインターネットごしに試すには、認証など、若干敷居が高いのと、未完成のbotを公開することになるのは好ましくありません。
このため、Bot Builder SDK、Bot Application template、Bot Framework Emulator を使ってbot開発をスモールスタートすることにします。
本来ならば、以下のGitHubで公開されいるBot Builder SDKをダウンロードしてきて、Visual Studio 2015にインストールしておいて、コマンドラインでのチャットでサンプルの動作確認をすておきたいが、自分がやってみたところ、きょうのゴールでは無くても動くので、きょうのところは割愛させていただきます。
↓ (きょうのゴールではまだ不要)
https://github.com/Microsoft/BotBuilder
Visual Studio 2015上で 新しい bot開発を始めるには、Bot Application templateが必要です。
・・・URLをここに貼ろうとしたら、いきなりダウンロードが始まるため、冒頭に記述した公式ドキュメントからひURLを拾ってください。
Bot Application templateは、ZIPファイルなので展開すると、、Bot Applicationフォルダができます。
これを、
“%USERPROFILE%\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C#\”
へ、コピーします。
%USERPROFILE% の部分は、Windowsへログインしているアカウント(Administratorなど)に置き換えてください。
― ― ― ― ― ― ― ― ― ―
[新しい botプロジェクトを作成]
Visual Studio 2015を起動し、「ファイル」 – 「新規作成」 – 「プロジェクト」で、「新しいプロジェクトダイアログボックスを表示すると、「Bot Application」というテンプレートが追加されていますので、これをクリックして選択します。
しばらくすると、Visual Studio 2015上に、C#で新規にbotを開発するためのプロジェクトが作成されます。
blogだと、文字が細かくて見づらいですが、チャット応答するソースコードは、「MessageController.cs」ですので、少し拡大しますと、チャットで入力された文字列の文字数を数えて、応答するコードになっています。
※文字が小さくて申し訳ないですが、雰囲気を紹介する記事なのでご容赦ください
いきなり、高機能をもつbotを作るのではなく、まずは、Hello Worldからです。
― ― ― ― ― ― ― ― ― ―
[Bot Framework Emulator]
できあがった botの動作を確認するためには、Azureで提供されているBot Framework Developer Portalへ登録すれば、Skype, Slack, Facebook Messenger, Kik, Office 365メールなどと連携できるのですが、Hello Worldレベルですので、以下で公開されている「Bot Framework Emulator」でテストします。
↓
https://download.botframework.com/bf-v3/tools/emulator/publish.htm
― ― ― ― ― ― ― ― ― ―
[botを動かしてみる]
まず、Bot Framework Emulatorを起動します。(これが、Skypeや Slackの代わりと考えてください)
次に、Visual Studio 2015から、デバッグモードで、botアプリケーションを起動します。
すると、Webブラウザが起動し、以下のような画面が表示されますが、ここで、この botの 「bot URL」が分かります。
※ポート番号が、Bot Framework Emulatorのデフォルトと異なるので注意
とりあえず、Bot Framework Emulatorから、「Hello Kuroneko」と、送ってみます。
すると、botが、おくられてきたメッセージを解析し、文字数を応答文にして返します。
さらに続けて、「I am Naoko」と入力すると、同様に文字数を応答文にして返します。
※応答のJSONはわざと見キレさせています
※Exceptionがスローされる場合は、「bot URL」が、さきほど表示されたWeb画面と同じか比較してみてください。(特にポート番号)
テンプレートで自動生成されるコードは、英語表記ですが、Bot Frameworkは国際化対応されていますので、ソースコードを書き換えて実行すると、日本語が通ります。
Twitterの botみたいなものに近いですが、ちゃんとした AIを実装することもできます。
とりあえず、きょうのゴールは、ここまでです。
朝の 出勤前の 1時間半で達成です。
いい勉強になりました。
つまらないかもしれませんが、Bot Builder SDKをインストールすれば、botのロジックから、外部サイトのWeb APIへRESTでアクセスして、情報を調べて、チャットの会話で応答する、とか、LUISもどきのAI「的」な応答などが、簡単に作れます。
良いものができたら、Azureで運用されているBot Frameworkサイトへ配置して、スマホやタブレットの各種チャットアプリから利用できます。
※本日は、都合により、コメント欄を閉じさせていただいております。