ngrok を使用して任意のチャネルからボットをデバッグする
この記事の対象: SDK v4
ボットの開発中は、IDE と Bot Framework Emulator を使用してボットとローカルでチャットし、ボットが送受信するメッセージを調べることができます。 ボットが運用環境にある場合は、ngrok を使用して任意のチャネルからボットをデバッグできます。 ボットを複数のチャネルにシームレスに接続することは、Bot Framework で利用できる重要な機能です。
この記事では、ボットに接続されているチャネルで ngrok と C# EchoBot を使用して、ボットをローカルでデバッグする方法について説明します。 この記事では、チャネルの例として Microsoft Teams を使用します。
Note
Bot Framework Emulator と ngrok は、ユーザー割り当てマネージド ID またはシングルテナント ボットをサポートしていません。
前提条件
- Microsoft Azure サブスクリプション。
- ngrok をインストールします。
- マルチテナント アプリとして構成され、任意のチャンネルに接続された C# Echo ボット。
ngrok を実行する
ngrok は、トンネリングまたは転送 URL を作成できるクロスプラットフォーム アプリケーションであり、インターネット要求がローカル コンピューターに到達できるようになります。 Azure portal で構成されている標準メッセージング エンドポイントではなく、ngrok を使用して Web 上の外部チャネルからローカル コンピューターに直接メッセージを転送し、デバッグを許可します。
ターミナルを開き、ngrok 実行可能ファイルを含むフォルダーに移動します。
次のコマンドを使用して ngrok を実行して、新しいトンネルを作成します。
ngrok http 3978 --host-header rewrite
Note
指定されたポートは、ボットが実行されているポートです。 任意の localhost ポートを使用できます。
ngrok が起動したら、後のためにパブリック転送 URL をコピーして保存します。
Azure Portal での構成
ngrok の実行中に、Azure portal にサインインし、ボットの設定を表示して構成を行います。
ローカル ボットに接続されているボット リソースを選択します。
[構成] まで下にスクロールします。 ngrok 転送 URL をコピーし、[メッセージング エンドポイント] フィールドに貼り付けます。 URL の末尾に "/api/messages" が維持されていることを確認します。
上にスクロールして、[保存] を選択します。
テスト
この時点で、外部チャンネルからボットへの受信メッセージがローカル ボットに送信されるようになります。 これを示すために使用するサンプル ボットは、Microsoft Teams 用に既にライブ構成されています。 ローカル ボットと Microsoft Teams チャンネルの接続については、「ボットを Microsoft Teams に接続する」を参照してください。
ローカルでは、Visual Studio でブレークポイントを設定できます。 受信アクティビティ オブジェクトから text プロパティを展開すると、チームからボットを送信したメッセージがローカルで傍受され、デバッグが行われていることがわかります。
ここからは、通常どおりにデバッグし、コードをステップ バイ ステップで実行できます。 これを使用して、任意のチャネルからボットをデバッグします。