エミュレータのための .bot ファイル
Bot Framework Emulator は、自分自身(チャットクライアント)が接続するボットサーバのアドレスを .bot ファイルから取得します。

.bot ファイルの中には、"type": "endpoint" というエンドポイント定義が 1 つ以上記述されており、ここにはボットプログラムのアドレスが記述されています。
エミュレータの設定で、どのエンドポイント設定を使用するかを切り替えることで、実際に接続するボットを使い分けることができます。
典型的には、開発時にローカルホスト上で動作させたボットサーバに接続するための development と、実稼働用に Azure 上で動作させたボットサーバに接続するための production というエンドポイントを定義します。

ボットプログラムのための .bot ファイル
.bot ファイルは、ボットプログラムからも利用されます(こちらの方がメイン)。

.bot ファイルには、LUIS や QnA Maker のサービスを利用するためのエンドポイント情報(アドレスやエンドポイントキー)が定義されており、ボットプログラムはこれらの情報を使って各サービスの API を利用します。
こららの情報は、ボット自体がローカルホスト上で動作していても、Azure 上で動作していても同様に利用されます。
また、ここでもボット自体の endpoint エントリが参照され、各種チャンネル(チャットクライアント)がボットにアクセスするときの認証処理のために使用されます。 このあたりの処理は、Bot Builder SDK を使ってボット実装を行っていれば、Adapter クラスとして抽象化されるため、特に意識せずに実装することができます。
.bot ファイルに LUIS や QnA Maker の接続設定を記述する
.bot ファイルは XML ファイルなので、フォーマットさえ理解すればテキストエディタなどで編集してしまうことはできますが、エンドポイントキー部分の復号化・暗号化が必要だったりして面倒です。
Bot Framework Emulator には、.bot ファイルの内容を GUI で編集する機能が付いているのでこの機能を使うのがよいでしょう。
LUIS/QnA Maker サービスへの接続情報を設定する
.bot ファイルをダブルクリックしてエミュレータを起動したら、左上の SERVICES の + ボタンを押すことで各サービスの接続設定を行うことができます。

Azure portal にログインしていない状態だと、ログインを求められるので、そのまま指示にしたがって Azure portal にログインします。
手順に従って LUIS/QnA Maker の接続情報を自動取得 or 手動入力します。
無事設定ができると、.bot ファイルの中に、次のような感じで LUIS/QnA Maker 接続のためのエンドポイント情報が保存されるはずです。
{
    "services": [
        {
            "type": "luis",
            "appId": "c5514855-fa6b-8f4c-c695-9ac7d3519412",
            "authoringKey": "Z5JHftI7h6CqW19iorgMeQ==!qmpIv7UyWR5KizeKQ/P5WotwnIw6LXYdhsSfRXbAjwMYoGTXVNd9uw/r8II5ph2B",
            "id": "c5514855-fa6b-8f4c-c695-9ac7d3519412",
            "name": "maku-luis-sample",
            "region": "westus",
            "subscriptionKey": "wGtV6dpEVwVRSn/1jiuqUw==!0KjfCqHek8hruxRyGdG9cMhYJqEpPp5hY/2or4vfoIRi2fvBNZavAvz6odDdG64Y",
            "version": "0.1"
        },
        {
            "type": "qna",
            "endpointKey": "etu4UQESnuvypEFZe+i+Qw==!ETEcbh/FkXtnQRjnHJlNXbYtD7Yha7WboqBX6skYAeXVh07qLO53UeqBPtohVZFQ",
            "hostname": "https://maku-qna-resource.azurewebsites.net",
            "kbId": "c78ec3e7-a58d-ca44-dbb6-e7805d8130c6",
            "name": "maku-qna-sample",
            "subscriptionKey": "LiFCYQxahtplAwEFQvLEWg==!QHxCEIby0NjXr4jsFbuDhGSzdvBslfWxDlfomiGiyHIa+T4keDRvTpxdtseddvmt",
            "id": "231"
        }
    ],
}エンドポイントキーの暗号化について
LUIS の authoringKey/subscriptionKey、QnA Maker の endpointKey/subscriptionKey の部分は暗号化されていますが、この暗号化処理はエミュレータが自動でやってくれます。
.bot ファイルの内容を手動で書き換えた場合は、botbuilder-tools に付属している msbot コマンドを使って暗号化できます。
$ msbot secret -b maku-bot.bot --secret XXXXXXボットプログラムから .bot ファイルを読み込む
ボットプログラムから .bot ファイルを読み込んで、LUIS や QnA Maker への接続情報を取得することができます。 .bot ファイルの読み込み方に関しては下記の記事を参照してください。
関連記事
- チャットボット: Azure ポータルで生成されるボットのテンプレートコードを解読&リファクタしてみる
- チャットボット (2-2) Web App Bot で生成されたボットのコードを編集する
- チャットボット (2-3) Azure の Web App Bot リソースにボットをデプロイする
- チャットボット (2-1) Azure でボットをホストするための Web App Bot リソースを作成する
- チャットボット (1-1) Bot Builder SDK とは
- チャットボット (1-2) Bot Builder SDK で Echo ボットを作成する
- チャットボット: Chatdown(.chat ファイル)を使ってボットの会話をデザインする