私は、MSボットフレームワークでビルドされ、ライブラリ構造を使用しています。ルーティングされる前にダイアログ名をキャッチ - ミドルウェア
私はメッセージのダイアログ名+ライブラリをキャッチしようとしていますが、それはの前にダイアログにルーティングされています。 (分析目的のため)
これを行うのに役立つミドルウェアはありますか?
UniversalBot
のrouting
ミドルウェアを試しましたが、ダイアログが選択される直前に実行されているようです。
私は、MSボットフレームワークでビルドされ、ライブラリ構造を使用しています。ルーティングされる前にダイアログ名をキャッチ - ミドルウェア
私はメッセージのダイアログ名+ライブラリをキャッチしようとしていますが、それはの前にダイアログにルーティングされています。 (分析目的のため)
これを行うのに役立つミドルウェアはありますか?
UniversalBot
のrouting
ミドルウェアを試しましたが、ダイアログが選択される直前に実行されているようです。
bot.onDisambiguateRoute
が解決策だと思われます。
この場合、ルートにはルート名/ライブラリが含まれており、そのほかにダイアログの引数もあります。 see the docs for more info
コード例:
bot.onDisambiguateRoute(function (session, routes) { // Route message as normal var route = builder.Library.bestRouteResult(routes, session.dialogStack(), bot.name); // *** log route if (route) { bot.library(route.libraryName).selectRoute(session, route); } else { // Just let the active dialog process the message session.routeToActiveDialog(); } } });
1つの可能なオプションは、ISessionMiddlewareを使用している可能性があります。
botbuilder: function (session, next) {
console.log(session.message.text);
next();
}
これにより、セッションにアクセスできるようになります。これは、メッセージが特定のセッションにバインドされた後に実行され、メッセージとセッションの状態(ユーザーが使用可能なダイアログなど)を見て、続行する方法を決定するオプションを提供します。
@Ezequiel Jadibねえ、それはにルーティングされているダイアログが含まれていないセッションがどのようにしようとしている –
を(おそらくそれが選ばれたの前に実行されます)ようですダイアログを表示するには? –
私の答えを見てください –