Bot Framework V4 を触る際に最初に「ふぁ?」となりがちな .bot ファイルの複合化と暗号化の方法のお話です。
Cogbot アドベントカレンダー 12/3のエントリーです♪
bot ファイルとは
Bot Framework V4 のチャットボットのプロジェクトを作成すると生成される、拡張子が「.bot」のファイルです。
Azure で Bot Serivce を作ってソースをダウンロードしてみると、どんなものが記載されているか雰囲気がつかめます。
ソースのダウンロードは、(雑な説明になりますが)Azure Portal で Bot Service のリソースを開き、「ビルド」を開くとダウンロードのボタンからできます。
ダウンロードしだソースの bot ファイルを開くと、Json フォーマットで以下の内容が設定されています。
- Azure Bot Service のリソース情報
- blob の接続先
- development環境のエンドポイント(デバッグ時のエンドポイント)
- production 環境のエンドポイント(Azure Bot Service のリソースのエンドポイント)
- Application Insights のキー情報
接続文字列やキー情報のみが暗号化されており、そうでないものは暗号化されていません。
複合化の方法
2種類あります。
- MSBot コマンドで複合化
- Bot Emulator で複合化
Bot Emulator での複合化は、たぶん Cogbot Advent Calendar 2018 で @seosoft さん が書いています♪
ということで、 MSBot Command Line tool を使った方法を書いていきます。
MSBot Command Line tool のインストール
npm でのインストールになります。コマンドプロンプトで以下のコマンドをたたけば完了です。
npm install -g msbot
複合化のキー取得
Azure Bot Service のリソースを作ってソースをダウンロードした場合は、既に生成されています。
Azure ポータルから Bot Service のリソースを開き、アプリケーション設定 > BotFileSecret の値になります。コピーしてどこかに保持しておきましょう。
複合化
コマンドプロンプトで、,bot のファイルのパスを開きましょう。(コマンドのオプション -b
でファイルのパスを指定することもできます。)
ここでは以下の情報を例にします。
複合化は以下のコマンドでできます。
msbot secret -b cogbot18-echo-cs.bot --secret 43yYuv98A83Ak8w6qgIwCUaRGq+/6Wszj5k2hg9cDPk= --clear
正常に複合化されると「Your bot file and keys are now unencrypted」と表示されます。
あとは、必要な情報を編集したりします。
暗号化
編集をした場合、再度暗号化が必要です。先ほどのコマンドの最後を --new
にするだけです。
msbot secret -b cogbot18-echo-cs.bot --secret 43yYuv98A83Ak8w6qgIwCUaRGq+/6Wszj5k2hg9cDPk= --new
以下のように、新しいキーが生成されます。
ここで留意しなければならないのは、新しいキーが生成されるということです。 キーは、Azure Bot Service ならアプリケーション設定に保存されていたり、Azure Key Vault に保存したりが一般的ですが、それを再配布しないとならないのでめんどいです。
dev / staging / production で環境があればすべてに設定したり、開発者全員にも設定しなおしが必要になります。
Bot Emulator からアクセスする際、このファイルのエンドポイント情報は便利に使えますが、変更があったときの手間を考えると、このファイルで何を保存すべきかは多少検討した方がよさそうですね。