私はボット内でIDialogContext.Call()を使用して単純な子ダイアログ呼び出しを行っています。ユーザーが「新しいプロジェクト」以下のコードが呼び出された場合:Microsoft Bot Framework IDlenogContext.Call()がスラックを使用していると動作しない
...
context.Call(new NewProjectDialog(), NewProjectConfirmed);
...
NewProjectDialog()だけでプロジェクト名を尋ね、その後、ボットは
[Serializable]
public class NewProjectDialog : IDialog<Project>
{
public async Task StartAsync(IDialogContext context)
{
await context.PostAsync("What is the name of the project?");
context.Wait(this.MessageReceivedAsync);
}
public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{
var message = await result;
Project p = new Project();
//Saving project here...
await context.PostAsync($"OK. Your project '{message.Text}' was created.");
context.Done(p);
}
}
あるNewProjectConfirmed()に戻る前に保存しますエミュレータ、SkypeまたはWebchatから呼び出されたものはすべて期待どおりに動作します。ユーザーは "new project"と入力して新しいプロジェクトを尋ねると、botが名前を尋ね、それが待ち状態になり、ユーザーが入力したプロジェクト名が新しいプロジェクトの作成を確認します。私は、ユーザーがテキストを「新しいプロジェクト」を入力して新しいプロジェクトを求める場合には、スラックから同じことを呼び出すとき
しかし、「新しいプロジェクトは、」NewProjectDialogに渡されます。それはプロジェクト名を尋ねますが、待たずに「新しいプロジェクト」をさらに通過させ、プロジェクトの名前として保存します。
そうでもない私が行方不明です何を確認してください。 iDialogContext.Wait()はSlackとは違って動作するか、Call()関数はForward()のように子ダイアログにメッセージを投稿するようです。
は私だけのFacebook Messengerで同じコードをテストしているし、それがSkypeとエミュレータのように正常に動作します。私は不思議な設定問題ですか? – gabics
BotBuilderのどのバージョンを使用していますか? –
最新のナゲットパッケージを使用するMicrosoft.Bot.Builder v3.9.0 – gabics