現在、ボットと LUIS をいじっています。だから私は実行中のボットを持っています。RootDialog では、LUIS から取得したすべての意図を処理します。ここで、インテントに対してエンティティが欠落しているかどうかを確認したいと思います。
if (result.Entities.Count == 0) {
var ct = new CancellationToken();
await context.Forward(new ParameterDialog(), ResumeAfterParameterDialog, message, ct);
エンティティがない場合は、新しい子ダイアログを作成しています。
public class ParameterDialog : IDialog<object> {
public async Task StartAsync(IDialogContext context) {
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument) {
argument = new PromptDialog.PromptString("Please enter a parameter", "please try again", 2);
var prompt = await argument;
await context.PostAsync($"Your Parameter is: {prompt}");
context.Done(prompt);
}
}
ユーザー入力を取得できたら、それを親ダイアログに戻します。
ボットを停止してユーザーの入力を待つ方法がよくわかりません。誰かが私がそれを達成する方法を説明できますか? ありがとうございました!