c# - 从对话框中调用表单

标签 c# botframework

我有一个简单的表格,

 [Serializable]
class CreateNewLeadForm
{
    public string FirstName;
    public string LastName;
    public static IForm<CreateNewLeadForm> BuildForm()
    {

        return new FormBuilder<CreateNewLeadForm>()
            .Message("Lets create a New Lead")
            .Field(nameof(FirstName))
            .Field(nameof(LastName))
            .Build();

    }
};

还有一个简单的对话框,

public class GreetDialog : IDialog<object>
{        
    public async Task StartAsync(IDialogContext context)
    {

        context.Wait(MessageReceivedAsync);
    }
    public   async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> argument)
    {
       context.Wait(MessageReceivedAsync);
    }  
}  

如何从主对话框本身调用 Initiate FormDialog?一般来说,我们如何在对话框中启动新对话框?

最佳答案

为了启动一个 FormDialog,你可以这样做:

var myform = new FormDialog<CreateNewLeadForm>(new CreateNewLeadForm(), CreateNewLeadForm.BuildForm, FormOptions.PromptInStart, null);

context.Call<CreateNewLeadForm>(myform, FormCompleteCallback);

查看 PizzaBot举个例子。

要在 Dialog 中启动新对话,您可以执行以下操作:

  • context.Call 传递新对话框的实例和完成回调(如在表单中)
  • context.Forward,您可以在其中转发消息到子对话框

    context.Forward(new MyChildDialog(), ResumeAfterChildDialog, message, CancellationToken.None);

关于c# - 从对话框中调用表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37522294/

相关文章:

c# - "ASP.NET 4.5 Async Pipeline"是什么意思?

c# - 删除行 ASP.NET MVC ADO.NET 实体模型

c# - 'C# in depth' 中的抽象类实例化

botframework - 无法将 ngrokrequest 生成到 http ://127. 0.0.1 :4041/api/tunnels failed, 原因:读取 ECONNRESET

node.js - 如何在不同 Node 之间持久保存对话数据?

c# - 从 azure 部署的机器人向 MS 团队发送主动消息

c# - 从数据库中删除选定的数据表行

c# - String.Contains() 比在字符串中遍历整个 char 数组快吗?

c# - Bot Framework 对话框中的错误处理

node.js - 如何在 Microsoft bot 框架中为每个用户进行自定义对话更新 - 新用户消息传递?