如何在表单中间调用对话框? 我想调用位置对话框 https://github.com/Microsoft/BotBuilder-Location 以获取地址。 谢谢。
[Serializable]
public class IssueShares
{
[Prompt("Please enter holder name:")]
public string HolderName;
[Prompt("Please enter holder address:")]
**[Call(typeof(AddressDialog))]**
public Address Address;
[Prompt("Enter shares class:")]
public string SharesClass { get; set; }
[Prompt("How many shares your issue?")]
[Describe("Number of shares")]
public int NumberOfShares { get; set; }
}
[Serializable]
public class AddressDialog : IDialog<Address>
{
public Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceived);
return Task.CompletedTask;
}
private async Task MessageReceived(IDialogContext context, IAwaitable<object> result)
{
// some logic
context.Done(address);
}
}
您是否期望基于属性声明的解决方案或常规代码是否可以接受?
Microsoft提供作为序列或堆栈调用的对话框链接。
我认为,以下SO问题中接受的答案回答了您的问题。
从对话框调用窗体
以下是该答案的代码摘录:
var myform = new FormDialog<CreateNewLeadForm>(new CreateNewLeadForm(), CreateNewLeadForm.BuildForm, FormOptions.PromptInStart, null);
context.Call<CreateNewLeadForm>(myform, FormCompleteCallback);
另一个SO问题更一般地讨论了该主题:
在机器人框架中处理多个对话Microsoft