エミュレーターを使用したテストとデバッグ

適用対象: SDK v4

Bot Framework Emulatorは、ボット開発者がボットをローカルまたはリモートでテストおよびデバッグできるようにするデスクトップ アプリケーションです。 Emulator を使用すると、ボットとチャットしたり、ボットが送受信するメッセージを検査したりできます。 Emulator では、Web チャット UI に表示されるようにメッセージが表示され、ボットとメッセージを交換すると、JSON の要求と応答がログに記録されます。 ボットをクラウドにデプロイする前に、Emulator を使用してローカルで実行し、テストします。 エミュレーターは、Azure Bot Service でまだ作成していない場合や、任意のチャネルで実行するように構成されている場合でも、エミュレーターを使用してテストできます。

前提条件

ボットをローカルで実行する

ボットを Bot Framework Emulator に接続する前に、ボットをローカルで実行する必要があります。 ボットを実行するには、Visual Studio または Visual Studio Code を使用するか、コマンド ラインを使用できます。 コマンド ラインを使用してボットを実行するには、次の操作を行います。

  • コマンド プロンプトにアクセスし、ボットのプロジェクト ディレクトリに移動します。

  • 次のコマンドを実行して、ボットを起動します。

    dotnet run
    
  • 次の記述の前の行のポート番号をコピーします: Application started.Press Ctrl+C to shut down. (アプリケーションが開始しました。シャットダウンするには Ctrl + C キーを押してください。)

    C# ポート番号

この時点では、ボットはローカルで実行されています。

localhost で実行されているボットに接続する

プロキシ設定の構成

企業プロキシの背後で開発している場合、エミュレーターは構成された環境変数 HTTP_PROXY を使用し、HTTP 要求と HTTPS_PROXYHTTPs 要求のプロキシ URL ルートをそれぞれ指定します。

実行中のボットに localhost接続している場合、エミュレーターは、接続する前 localhostに最初にプロキシ経由でルーティングを試みます。 通常、プロキシは、接続をバイパスする必要があることを指定しない限り、接続をブロックします localhost

設定をHTTP_PROXYHTTPS_PROXYバイパスし、エミュレーターが接続localhostできるようにするには、ローカル コンピューターで次の環境変数を定義する必要があります。

NO_PROXY=localhost

エミュレーターを認証用に構成する

ボットで認証が必要な場合は、ログイン ダイアログを表示し、次に示すようにエミュレーターを構成する必要があります。

サインイン確認コードの使用

  1. エミュレーターを起動します。
  2. エミュレーターで、左側のウィンドウで [設定] (歯車アイコン) を選択します。
  3. ローカル アドレスの ngrok のバイパスを有効にします。
  4. [ OAuthCards のサインイン確認コードを使用する] を有効にします。
  5. [保存] を選択します。

ボットによって表示されるログイン ボタンを選択すると、検証コードが生成されます。 認証を行うためにボット入力チャット ボックスにコードを入力します。 その後、許可されている操作を実行できます。

または、以下で説明されている手順を実行することもできます。

認証トークンを使用する

  1. エミュレーターを起動します。
  2. エミュレーターで、左側のウィンドウで [設定] (歯車アイコン) を選択します。
  3. ngrok へのローカル パスを入力します。 ngrok の詳細については、 ngrok を参照してください。
  4. エミュレーターの起動時に ngrok の実行を有効にします。
  5. [バージョン 1.0 認証トークンの使用] を有効にします。
  6. [保存] を選択します。

ボットによって表示されるログイン ボタンを選択すると、資格情報の入力を求められます。 認証トークンが生成されます。 その後、許可されている操作を実行できます。

エミュレーターの起動ウィンドウ

ローカルで実行されているボットに接続するには、[ ボットを開く] を選択します。 先ほどコピーしたポート番号を次の URL に追加し、その更新した URL を [Bot URL]\(ボットの URL\) バーに貼り付けます。

http://localhost:<port number>/api/messages

エミュレーターの [ボットを開く] ダイアログ

お使いのボットが Microsoft アカウント (MSA) の資格情報で実行されている場合は、その資格情報も入力します。

ボットの資格情報を使用

ボットを開いたときに、ボットが資格情報を使用して実行されている場合は、Microsoft アプリ ID および Microsoft アプリ パスワードを設定します。 Azure Bot Serviceを使用してボットを作成した場合、資格情報はボットのApp Serviceの [設定 -> 構成] セクションで使用できます。 値がわからない場合は、ローカルで実行されているボットの構成ファイルからそれを削除してから、ボットをエミュレーターで実行できます。 これらの設定でボットが実行されていない場合は、エミュレーターを設定で実行する必要もありません。

AD ID プロバイダー アプリケーションを作成する場合は次の点に注意してください。

  • サポートされているアカウントの種類が単一テナントに設定されている場合、Microsoft アカウントではなく個人用サブスクリプションを使用すると、エミュレーターでエラーが発生します。 ボットの Microsoft アプリ ID または Microsoft アプリ パスワードが正しくありません。
  • この場合、サポートされているアカウントの種類を [Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Xbox)]\(任意の組織ディレクトリ内のアカウント (任意の Azure AD ディレクトリ - マルチテナント) と個人用の Microsoft アカウント (Xbox など)\) に設定する必要があります。

詳細については、「Azure AD ID プロバイダー アプリケーションを作成する」と「Azure portalを使用して新しいアプリケーションを登録する」を参照してください。

インスペクターを使用して詳細なメッセージ アクティビティを表示する

ボットにメッセージを送信すると、ボットが応答を返すはずです。 会話ウィンドウ内でメッセージ吹き出しを選択し、ウィンドウの右側にある "インスペクター" 機能を使用して、未加工の JSON アクティビティを検査できます。 メッセージ吹き出しは選択すると黄色になり、アクティビティ JSON オブジェクトがチャット ウィンドウの左に表示されます。 この JSON 情報には、チャネル ID、アクティビティの種類、会話 ID、テキスト メッセージ、エンドポイント URL など、重要なメタデータが含まれます。 ユーザーから送信されたアクティビティやボットの応答アクティビティを検査できます。

エミュレーター メッセージ アクティビティ JSON

ヒント

検査ミドルウェアをボットに追加することで、チャネルに接続されているボットの状態の変化をデバッグできます。

サービスの検査

v4 エミュレーターを使用すると、LUIS と QnA Maker からの JSON 応答を検査することもできます。 ボットと言語サービスが接続されているとき、右下の LOG ウィンドウにある [trace] を選択できます。 この新しいツールには、エミュレーターから直接言語サービスを更新する機能も用意されています。

LUIS インスペクター

LUIS サービスに接続しているとき、トレース リンクに Luis Trace と指定されていることに気付きます。 これが選択されると、意図、エンティティ、指定スコアなど、LUIS サービスからの raw 応答が表示されます。 ユーザー発話の意図を再割り当てすることもできます。

QnA インスペクター

接続された QnA Maker サービスでは、ログに QnA トレースが表示されます。 選択すると、そのアクティビティに関連付けられている質問と回答のペアと信頼度スコアをプレビューできます。 ここから、ある回答に対する質問に別の言い回しを追加できます。

Azure にログインする

エミュレーターを使用して、Azure アカウントにサインインできます。 これは、ご自身のボットが依存するサービスを追加および管理するときに特に役に立ちます。 次の手順に従って、Azure にログインします。

  1. [ ファイル] を選択し、 Azure でサインインします。

    エミュレーターで Azure でサインインする

  2. [ ようこそ ] 画面で、[ Azure アカウントでサインイン] を選択します。 必要に応じて、エミュレーター アプリケーションを再起動しても、エミュレーターにサインインしたままにすることができます。

    エミュレーターの Azure サインインの成功

データ収集の無効化

Emulator による使用状況データの収集を許可する必要がなくなった場合は、次の手順に従って、データ収集を簡単に無効にできます。

  1. エミュレーターで、左側のウィンドウの [設定] (歯車アイコン) を選択します。

    [エミュレーターの設定] ボタン

  2. [ データ収集] で、[ 使用状況データの収集を許可することでエミュレーターを改善する] の選択を解除します。

  3. [保存] を選択します。

気が変わると、後でデータ収集を再び可能にすることができます。

その他のリソース

Bot Framework Emulator はオープン ソースです。 開発に貢献したり、バグや提案を送信したりできます。

トラブルシューティングについては、一般的な問題のトラブルシューティングに関する記事、およびそのセクションに示されているトラブルシューティングに関するその他の記事をご覧ください。

次のステップ

検査ミドルウェアを使用して、チャネルに接続されているボットをデバッグします。