ngrok を使用して任意のチャネルからボットをデバッグする

この記事の対象: SDK v4

ボットの開発中は、IDE と Bot Framework Emulator を使用してボットとローカルでチャットし、ボットが送受信するメッセージを調べることができます。 ボットが運用環境にある場合は、ngrok を使用して任意のチャネルからボットをデバッグできます。 ボットを複数のチャネルにシームレスに接続することは、Bot Framework で利用できる重要な機能です。

この記事では、ボットに接続されているチャネルで ngrok と C# EchoBot を使用して、ボットをローカルでデバッグする方法について説明します。 この記事では、チャネルの例として Microsoft Teams を使用します。

Note

Bot Framework Emulator と ngrok は、ユーザー割り当てマネージド ID またはシングルテナント ボットをサポートしていません。

前提条件

ngrok を実行する

ngrok は、トンネリングまたは転送 URL を作成できるクロスプラットフォーム アプリケーションであり、インターネット要求がローカル コンピューターに到達できるようになります。 Azure portal で構成されている標準メッセージング エンドポイントではなく、ngrok を使用して Web 上の外部チャネルからローカル コンピューターに直接メッセージを転送し、デバッグを許可します。

  1. ターミナルを開き、ngrok 実行可能ファイルを含むフォルダーに移動します。

  2. 次のコマンドを使用して ngrok を実行して、新しいトンネルを作成します。

    ngrok http 3978 --host-header rewrite
    

    Note

    指定されたポートは、ボットが実行されているポートです。 任意の localhost ポートを使用できます。

  3. ngrok が起動したら、後のためにパブリック転送 URL をコピーして保存します。

    ngrok forwarding URL

Azure Portal での構成

ngrok の実行中に、Azure portal にサインインし、ボットの設定を表示して構成を行います。

  1. ローカル ボットに接続されているボット リソースを選択します。

  2. [構成] まで下にスクロールします。 ngrok 転送 URL をコピーし、[メッセージング エンドポイント] フィールドに貼り付けます。 URL の末尾に "/api/messages" が維持されていることを確認します。

    Messaging endpoint

  3. 上にスクロールして、[保存] を選択します。

テスト

この時点で、外部チャンネルからボットへの受信メッセージがローカル ボットに送信されるようになります。 これを示すために使用するサンプル ボットは、Microsoft Teams 用に既にライブ構成されています。 ローカル ボットと Microsoft Teams チャンネルの接続については、「ボットを Microsoft Teams に接続する」を参照してください。

Teams channel

ローカルでは、Visual Studio でブレークポイントを設定できます。 受信アクティビティ オブジェクトから text プロパティを展開すると、チームからボットを送信したメッセージがローカルで傍受され、デバッグが行われていることがわかります。

Set breakpoints

ここからは、通常どおりにデバッグし、コードをステップ バイ ステップで実行できます。 これを使用して、任意のチャネルからボットをデバッグします。

追加情報