BotFramework、アダプティブ カード、LUIS、FormFlow を使用して、C# でボットを作成しました。チームで会議を管理する責任があります。
return new FormBuilder<MeetingRequestInput>()
...
.Field(
nameof(MeetingRequestInput.RequestedDate),
"What date would you like to meet?"
)
...
.Build();
テスト中に、ユーザーが目的の会議の日付/時刻を入力することになっているときに問題が発生したことに気付きました (人々は、、、、のみdd/mm/yy
、などと入力します)。そのため、解析の問題と保持を回避するために、フォーマットされた入力である種の「フォーム」を使用したいと考えています。使いやすさ。mm/dd/yy
dd-mm-yy
dd
少なくとも BotFramework を使用して、必要なキーボードの種類を変更したり (キーボードに数字のみが表示されたり、DateTime ピッカーが表示されたりするモバイルのようなもの)、パターンのオートコンプリートを適用することはできないと思います。
これを解決するには、少なくとも次のように、ユーザーが要求された日付を入力するように求められたときに、FormFlow プロンプトで日付と時刻のピッカーを備えた AdaptiveCard を使用したいと思います。
この例では、ユーザーは AdaptiveDateInput と AdaptiveTimeInput を入力し、確認ボタンを押します。そうすることで、入力内の値を取得し、特定のテンプレートで目的の DateTime をユーザーに「入力して送信」し、以前の解析の問題を回避します。
問題は、「通常の」FormFlow カード (プロンプト パラメータとして単純な文字列を期待している) をアダプティブ カード全体に置き換えることができないことです。この問題を解決するにはどうすればよいですか? AdaptiveCards が最良の答えですか、それとも代替手段はありますか?
現在、次のように手動でカードを表示しています。
AdaptiveCard card = new AdaptiveCard();
card.Body = new List<AdaptiveElement>()
{
new AdaptiveTextBlock()
{
Text = "What date would you like to meet?"
},
new AdaptiveDateInput()
{
Value = DateTime.Now.ToShortDateString(),
Id = "dateInp"
},
new AdaptiveTimeInput()
{
Value = DateTime.Now.ToShortTimeString(),
Id = "timeInp"
}
};
card.Actions = new List<AdaptiveAction>()
{
new AdaptiveSubmitAction()
{
Type = "Action.Submit",
Title = "Confirm"
}
};
var msg = context.MakeMessage();
msg.Attachments.Add(
new Attachment()
{
Content = card,
ContentType = "application/vnd.microsoft.card.adaptive",
Name = "Requested Date Adaptive Card"
}
);
await context.PostAsync(msg);
この質問を読みましたが、まったく同じ問題があるかどうかはわかりません。そして、彼らの解決策は私には当てはまりません。上記の例を英語で作成したとしても、ボットは実際には他の言語での入力を期待するので、Recognizer を使用して「February 2th」を解析できますが、同じものはありません。 「2 de Fevereiro」でも「2 Fevralya」でも運がいい。