Microsoft Bot Framework と LINE を連携して賢いボットを開発

Microsoft はボット開発フレームワークとして Bot Framework (https://dev.botframework.com) を提供しています。主な機能としては

  • 一度書けば様々なプラットフォームに展開が可能。(skype, facebook, skype for business, slack, sms, email, など)
  • コンテキスト自動制御による、複雑な会話を実現するダイアログ機能
  • C#/Node.js SDK
  • Visual Studio 用テンプレートやエミュレーター
  • Microsoft コグニティブサービスとのシームレスな連携

個人的にはダイアログのサポートが最高です。もし一問一答ボット作るだけなら不要ですが、前回会話の内容を保持するなどスクラッチでダイアログ機能を作ることを考えると気が遠くなります。

では何が問題かというと、LINE を連携先として現時点でサポートしていないという点です。

解決策

Bot Framework では汎用的に使えるダイレクトラインという接続方法を提供しているため、こちらを使えばどんなプラットフォームとも連携が可能です。また既に C# でコネクタを開発済です。

対象者

既に Bot Framework でボット開発をしていて、 LINE にもつなげたい開発者

LINE ボット開発者で Bot Framework を使いたい開発者

前提

  • Microsoft Bot Framework bot アプリケーション。この記事では GitHub にあるサンプルを使います。
  • Visual Studio 2017
  • Azure サブスクリプション
  • LINE 開発者アカウントとボット登録

LINE 開発者アカウントとボットアカウントの登録は以前の記事をご覧ください。

セットアップ

Bot Framework

まず Bot Framework 側から設定します。ここではサンプルのサンドウィッチボットを使いました。

1. https://dev.botframework.com から登録済のボットを開き、“Channels” を確認。

image

2. “Direct Line” をクリック。

image

3. “Secret Keys” をコピーして、“Done” をクリック。

image

Azure ストレージ

コネクターとなるアプリでは Azure ストレージを使って情報をトラックしているため、以下の手順でストレージを用意。

1. Azure ポータルにログイン https://portal.azure.com

2. ストレージアカウントを作成、もしくは既にある場合はそちらも利用可能。

3. アクセスキーのメニューより接続文字列をコピー。

LINE ボット

1. LINE 開発者ポータルよりボットアカウントを選択。

2. チャネルシークレットとチャネルアクセストークンを取得。

コネクター

1. Visual Studio 2017 を開いてツール | 拡張機能と更新プログラムを選択。

image

2. オンラインを選択して、“LINE Bot C#” を検索してインストール。必要に応じて Visual Studio を再起動。

image

3. 新しいプロジェクトより “LineWithBotFrameworkApplication” テンプレートを選択してプロジェクトを作成。

image

4. web.config を開いてパラメーターを設定。

image

5. 必要に応じて NuGet のリストアやアップデートを実施。

6. プロジェクトを右クリックして、発行をクリック。

image

7. Azure などに公開してアドレスを確認。

8. LINE 開発者ポータルで Webhook URL を更新。“/api/linebot” を末尾につけ忘れないように。

image

テスト

最後に動作確認です。

1. LINE クライアントから LINE 開発者ポータルにある QR コードを読み込んでボットを登録。

image

2. “hi” と送ってあとは期待通り動くか確認。

IMG_1922

動作原理

基本的に LINE プラットフォームからきたデータを Bot Framework が分かるデータに書き換えて送り、返信はその逆をしているだけです。いくつか制限がありうまくできない場合もありますが、そこは都度調整が必要です。

中村 憲一郎