ボットの HTTP 500 内部サービス エラーのトラブルシューティング

この記事の対象: SDK v4

500 エラーを解決するための最初の手順は、Application Insights を有効にすることです。

AppInsights サンプルについては、luis-with-appinsights の C# のサンプルJS のサンプルを参照してください。

Note

Language Understanding (LUIS) は、2025 年 10 月 1 日に廃止されます。 2023 年 4 月 1 日以降は、新しい LUIS リソースを作成することはできません。 より新しいバージョンの言語理解が、現在、Azure AI Language の一部として提供されています。

Azure AI Language の機能である会話言語理解 (CLU) は、LUIS の更新バージョンです。 Bot Framework SDK での言語理解のサポートの詳細については、「自然言語の理解」を参照してください。

Application Insights を既存のボットに追加する方法については、会話分析テレメトリに関する記事を参照してください。

Enable Application Insights for ASP.NET を有効にする

Application Insights の基本的なサポートについては、「Set up Application Insights for your ASP.NET website (ASP.NET Web サイトに合わせて Application Insights を設定する)」を参照してください。 Bot Framework (v4.2 以降) には、追加レベルの Application Insights テレメトリが用意されていますが、HTTP 500 エラーの診断には必要ありません。

Application Insights for Node.js を有効にする

Application Insights の基本的なサポートについては、Application Insights を使用して Node.js サービスとアプリを監視する方法に関する記事を参照してください。 Bot Framework (v4.2 以降) には、追加レベルの Application Insights テレメトリが用意されていますが、HTTP 500 エラーの診断には必要ありません。

例外のクエリ

HTTP 状態コード 500 エラーを分析する最も簡単な方法は、例外から始めることです。

次のクエリで、最新の例外がわかります。

exceptions
| order by timestamp desc
| project timestamp, operation_Id, appName

最初のクエリから、いくつかの操作 ID を選択し、さらに詳しい情報を探します。

let my_operation_id = "d298f1385197fd438b520e617d58f4fb";
let union_all = () {
    union
    (traces | where operation_Id == my_operation_id),
    (customEvents | where operation_Id == my_operation_id),
    (requests | where operation_Id == my_operation_id),
    (dependencies | where operation_Id  == my_operation_id),
    (exceptions | where operation_Id == my_operation_id)
};

union_all
    | order by timestamp desc

exceptions のみの場合は、詳細を分析し、それらがコード内の行に対応しているかどうかを確認します。 Channel Connector (Microsoft.Bot.ChannelConnector) からの例外のみが表示される場合は、「Application Insights イベントがない」を参照して、Application Insights が正しくセットアップされ、コードによってイベントがログに記録されていることを確認します。

Application Insights イベントがない

500 エラーを受け取り、それ以外にボットからの Application Insights 内のイベントがない場合は、以下を確認します。

ローカルでボットが動作することを確認する

まず、Bot Framework Emulator を使用してボットをローカルでテストします。

構成ファイルがコピーされていることを確認する (.NET のみ)

デプロイ プロセス中に、appsettings.json と他の構成ファイルすべてが正しくパッケージ化されていることを確認します。

アプリケーション アセンブリ

デプロイ プロセス中に、Application Insights アセンブリが正しくパッケージ化されていることを確認します。

  • Microsoft.ApplicationInsights
  • Microsoft.ApplicationInsights.TraceListener
  • Microsoft.AI.Web
  • Microsoft.AI.WebServer
  • Microsoft.AI.ServeTelemetryChannel
  • Microsoft.AI.PerfCounterCollector
  • Microsoft.AI.DependencyCollector
  • Microsoft.AI.Agent.Intercept

デプロイ プロセス中に、appsettings.json と他の構成ファイルすべてが正しくパッケージ化されていることを確認します。

appsettings.json

appsettings.json ファイル内で、インストルメンテーション キーが設定されていることを確認します。

{
    "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
            "Default": "Debug",
            "System": "Information",
            "Microsoft": "Information"
        },
        "Console": {
            "IncludeScopes": "true"
        }
    }
}

構成ファイルを確認する

構成ファイルに Application Insights キーが含まれていることを確認します。

{
    "ApplicationInsights": {
        "type": "appInsights",
        "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "resourceGroup": "my resource group",
        "name": "my appinsights name",
        "serviceName": "my service name",
        "instrumentationKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "applicationId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "apiKeys": {},
        "id": ""
    }
},

ログを確認する

Bot ASP.NET と Node からは、検査可能なログがサーバー レベルで発行されます。

ログを監視できるようにブラウザーを設定する

  1. Azure portal でボットを開きます。
  2. [アプリ サービスの設定]/[All App service settings]\(すべてのアプリ サービス設定\) ページを開き、すべてのサービス設定を確認します。
  3. アプリ サービスの [監視]/[診断ログ] ページを開きます。
    • [アプリケーション ログ (ファイル システム)] が有効であることを確認します。 この設定を変更する場合は、必ず [保存] をクリックします。
  4. [監視/ログ ストリーム] ページに切り替えます。
    • [Web サーバー ログ] を選択し、接続されていることを示すメッセージが表示されることを確認します。 次のようになります。

      Connecting...
      2018-11-14T17:24:51  Welcome, you are now connected to log-streaming service.
      

      このウィンドウを開いたままにしておきます。

ボット サービスを再起動するようにブラウザーを設定する

  1. 別のブラウザーを使用して、Azure portal でボットを開きます。
  2. [アプリ サービスの設定]/[All App service settings]\(すべてのアプリ サービス設定\) ページを開き、すべてのサービス設定を確認します。
  3. アプリ サービスの [概要] ページに切り替え、[再起動] をクリックします。
    • 確認を求められたら、[はい] を選択します。
  4. 最初のブラウザー ウィンドウに戻り、ログを確認します。
  5. 新しいログを受け取っていることを確認します。
    • アクティビティがない場合は、ボットを再デプロイします。
    • 次に、[アプリケーション ログ] ページに切り替え、エラーがないか確認します。

次のステップ