以下のような単純なボットがあります。
[Serializable]
[Template(TemplateUsage.NotUnderstood, "I do not understand \"{0}\".", "Try again, I don't get \"{0}\".")]
class MyOrder
{
public string Subject;
public string Description;
public static IForm<MyOrder> BuildForm()
{
return new FormBuilder<MyOrder>()
.Field(nameof(MyOrder.Subject), "What Subject should I use?")
.Field(nameof(MyOrder.Description), "And what Description?")
.AddRemainingFields()
.OnCompletionAsync(MyFormComplete)
.Build();
}
private static async Task MyFormComplete(IDialogContext context, MyOrder order)
{
if (order != null)
{
await context.PostAsync($"Created. Number is 9833");
}
else
{
await context.PostAsync("Form returned empty response!");
}
}
フォームが完了すると、MyFormComplete コールバックが行われます。
最初の質問 - その関数でクライアントの詳細にアクセスするにはどうすればよいですか? 内部ユーザーにマップできるように、Skype ハンドルを知る必要があります。
第二に、フォームを完成させた後、新しいフォームを開始できません。クライアントに何を入力しても、コールバック関数をトリガーし続けます。Skype クライアントからの次のテキストで新しい会話/フォームが開始されるように、セッション/会話を終了する方法が必要です。うん?