私はボットフレームワークテクノロジーに取り組んでいます。最近、マイクロソフトはボットの新しいバージョン(V3)を発表しました。私はすでに古いバージョンを使用してボットを開発していましたが、今はボットを新しいバージョンにアップグレードしようとしています。そのため、すべてが正常に機能していますが、ボットをAzureに公開した後、公開URLを使用して、ボットフレームワークチャネルエミュレーター(3.0.0.54)でテストしようとすると、常に「500、内部サーバーエラー」が発生します。しかし、ボットにSkypeチャネルを追加すると、正常に機能します。
唯一の問題は、ボットアプリケーションの公開URLを使用してボットフレームワークチャネルエミュレーターでテストしているときに、「内部サーバーエラー」としてエラーが発生したことだけです。
最新バージョンのボットフレームワークチャネルエミュレーターに問題があると思います
https://ngrok.com/download からファイルをダウンロードしてください
ファイルを解凍し、コマンドプロンプトを使用して以下のコマンドを実行します
ngrok http -Host-header = rewrite 9000
注:ngrokは実行状態になっている必要があります。次回の試行中に同じ500エラーが発生する場合は、手順1から開始してください。詳細については、.https // docs.botframework.com/en-us/tools/bot-framework-emulator/#navtitle
コントローラーのPost以外の単一のpublicメソッドにより、BotFrameworkが500InternalServerErrorをスローすることを発見しました。コントローラにprivateとpublic Postメソッドのみを保持するだけで、修正されるはずです。
ngrokソリューションは私には機能しませんでした。 botAuthenticationにコメントしたところ、ローカルで機能しました。
//[BotAuthentication]
public class MessagesController : ApiController
{
デバッグ中は、appidとパスワードを無効にせず、空白にして同じものを再構築します。エミュレーターを介してデバッグできます。以下のように保持します。
BotId、AppID、Passwordを無効にするだけでなく、以下のように空白にします。
<add key="BotId" value="" />
<add key="MicrosoftAppId" value="" />
<add key="MicrosoftAppPassword" value="" />
ボットをクラウドにデプロイし、エミュレーターからテストしようとすると、このエラーが発生するようです。エミュレータは2つのケースで機能するようでした:
1-セキュリティが無効になっているローカルホスト(appidとapp passwordを削除します)
2-セキュリティが有効になっているローカルホスト(appidとapp passwordを追加)
ローカルホストであるという理由だけで、http経由の両方のエンドポイント。クラウドにデプロイする場合は、ボットポータルで利用可能なエミュレーターでテストできます。ホストされているボットのエンドポイントがhttps対応になっていることを確認してください。
このトラブルシューティングガイドの手順に従って、修正しました: https://docs.Microsoft.com/en-us/bot-framework/troubleshoot-authentication-problems
しかし、実際に何が問題を引き起こしたのか理解できませんでした。私が気付いたのは、デスクトップエミュレーターはローカルホストでのみ機能するということでした。
開発者は このスレッド に回答を投稿しました。
基本的に、「disable」と入力してAppId/AppPasswordを無効にすることができます