複数のカードとボタンを備えた HeroCard カルーセルがあります。カルーセルが表示された直後にこれらのボタンをタップすると、正しくルーティングされます。ただし、ダイアログの後の段階でタップされた場合、ルーティングは機能しません。
ボタンが順不同でタップされた場合 (つまり、カルーセルが表示された直後以外にタップされた場合)、ダイアログを正しくルーティングするボタンを取得するにはどうすればよいですか?
複数のカードとボタンを備えた HeroCard カルーセルがあります。カルーセルが表示された直後にこれらのボタンをタップすると、正しくルーティングされます。ただし、ダイアログの後の段階でタップされた場合、ルーティングは機能しません。
ボタンが順不同でタップされた場合 (つまり、カルーセルが表示された直後以外にタップされた場合)、ダイアログを正しくルーティングするボタンを取得するにはどうすればよいですか?
私はそれを考え出した。Bot Builder のバージョン 3.1 では、正規表現を使用してフレーズの一致をリッスンする機能があります - IntentDialogを参照してください。これを使用すると、ダイアログ フローの任意の場所で、ユーザーは特定のフェーズ (「ヘルプ」など) を文脈から外して入力し、そのルートにリダイレクトできます。
ボタンがタップされたときも同じ方法を使用できます。注意すべき重要なことは、ボタンがタップされたときに返されるメッセージは、ユーザーに表示される文字列ではないということです。代わりに、ボタンが誘導することを望んでいるルートです。
したがって、正規表現を使用してルートをリッスンし、そのルートにリダイレクトできます。例えば:
var intents = new builder.IntentDialog();
bot.dialog('/', intents);
intents.matches(/^theRouteYourButtonIsDirectingTo\//i, [
function (session) {
// Whatever you want to return
},
]);