20

Azure + Bot Framework + LUIS (LuisDialog 経由) で実行されるボットがあります。

ユーザーが (ボットが応答する前に) 2 つのメッセージを立て続けに送信すると、Facebook Messenger または Web 埋め込みに次のエラー メッセージが表示されます。

申し訳ありませんが、ボット コードに問題があります。

ボット チャネル エミュレーターを使用してデバッグすると、次のようなエラーが表示されます。

"text": "エラー: 応答ステータス コードが成功を示していません: 429 (要求が多すぎます)。System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) でMicrosoft.Bot.Builder.Luis.LuisService.d__4.MoveNext()

スタック トレースの最後は、エラーが MessageController.cs の次の行で発生したことを示しています。

await Conversation.SendAsync(activity, () => new LuisRootDialogEnglish());

1 秒あたり最大 10 回の呼び出しが可能な LUIS の有料バージョンを使用しているため、これは奇妙です。

いずれにせよ、MessageController.cs のコード全体をtry/catchブロックにラップし、例外に関係なくこの値を返すようにしました。

return Request.CreateResponse(HttpStatusCode.OK);

それでも、ユーザーには「申し訳ありませんが、ボット コードに問題があります」というエラー メッセージが表示されます。これは、基本的に未処理の例外があることを意味します。

このメッセージがユーザーに表示されないようにする、または例外をキャッチするにはどうすればよいですか?

4

3 に答える 3

14

メッセージがユーザーに送信されるのはPostUnhandledExceptionToUserTask、例外がルート ダイアログ A をエスケープしたためだけです。未処理の例外がルート ダイアログ A をエスケープしないようにすることで、この状況を回避できます。

IAwaitable<R>1 つのオプションは、単にダイアログ A を呼び出し、コールバックに渡された結果を単純に無視する別のルート ダイアログ B を追加することResumeAfter<R>です。

Chain.DefaultIfExceptionダイアログ B の実装を提供します。

于 2016-09-28T17:27:29.237 に答える
0

403 または 429 を取得した場合、それぞれ "クォータ不足" または "要求が多すぎます" である可能性があります。最初のケースでは、キーを再度作成して LUIS アプリに割り当てる必要があります。毎月更新されます。賢く使用するか、有料層を使用する必要があります。

リクエストに制限がある 2 番目のケースについては、境界のドキュメントを参照してください。

ここでは、これに関する Microsoftのドキュメントを参照できます。

于 2019-03-21T21:04:03.740 に答える