C# 从Json调用子对话框

C# 从Json调用子对话框,c#,json,botframework,C#,Json,Botframework,我想从JSON模式对话框调用子对话框: 对话1 { "References": [ "my .dll", "Newtonsoft.Json.dll" ], "Imports": [ "my class", "Newtonsoft.Json.Linq" ], "type": "object", "required": [ "Question 1" ], "Templates": { "NotUnderstood": { "Patterns": [ "I do

我想从JSON模式对话框调用子对话框:

对话1

{

  "References": [ "my .dll", "Newtonsoft.Json.dll" ],  
  "Imports": [ "my class", "Newtonsoft.Json.Linq" ],
  "type": "object",
  "required": [
   "Question 1"

   ],
"Templates": {
"NotUnderstood": {
  "Patterns": [ "I do not understand \"{0}\".", "Try again, I don't get \"{0}\"." ]
},
"EnumSelectOne": {
  "Patterns": [ "Please let me know the {&}: {||}" ],
  "ChoiceStyle": "PerLine"
}
},
 "properties": {
 "Question 1": {
  "Prompt": {
    "Patterns": [ "my Question 1 ? {||}" ]
  },
  "type": [
    "string",
    "null"
  ],
  "enum": [
    "Info",
    "Submit an Issue",
    "Track Cases",
    "Finish"
  ]

},
 "OnCompletion": "context.Call(FormDialog.FromForm<JObject>(()=>BuildJsonForm(\"another.json\"),FormOptions.PromptInStart), (con, res) =>CompletedQ1AndQ2(con, res));"

}
{
“引用”:[“my.dll”,“Newtonsoft.Json.dll”],
“导入”:[“我的类”,“Newtonsoft.Json.Linq”],
“类型”:“对象”,
“必需”:[
“问题1”
],
“模板”:{
“未理解”:{
“模式”:[“我不懂\“{0}\”,“再试一次,我不懂\“{0}\”]
},
“EnumSelectOne”:{
“模式”:[“请让我知道{&}:{|}”],
“ChoiceStyle”:“PerLine”
}
},
“财产”:{
“问题1”:{
“提示”:{
“模式”:[“我的问题1”{|}]
},
“类型”:[
“字符串”,
“空”
],
“枚举”:[
“信息”,
“提交问题”,
“追踪案件”,
“完成”
]
},
“OnCompletion”:“context.Call(FormDialog.FromForm(()=>BuildJsonForm(\'other.json\”),FormOptions.prompinstart),(con,res)=>completedQ1和Q2(con,res))
}
对话2

{

  "References": [ "my .dll", "Newtonsoft.Json.dll" ],  
  "Imports": [ "my class2", "Newtonsoft.Json.Linq" ],
  "type": "object",
  "required": [
   "Question 1"

   ],
"Templates": {
"NotUnderstood": {
  "Patterns": [ "I do not understand \"{0}\".", "Try again, I don't get \"{0}\"." ]
},
"EnumSelectOne": {
  "Patterns": [ "Please let me know the {&}: {||}" ],
  "ChoiceStyle": "PerLine"
}
},
 "properties": {
 "Question 2": {
  "Prompt": {
    "Patterns": [ "my Question 2 ? {||}" ]
  },
  "type": [
    "string",
    "null"
  ],
  "enum": [
    "support ",
    "sales ",
    "marketing"
  ]

},
 "OnCompletion": "context.Done<bool>(true);"

}
{
“引用”:[“my.dll”,“Newtonsoft.Json.dll”],
“导入”:[“我的类2”,“Newtonsoft.Json.Linq”],
“类型”:“对象”,
“必需”:[
“问题1”
],
“模板”:{
“未理解”:{
“模式”:[“我不懂\“{0}\”,“再试一次,我不懂\“{0}\”]
},
“EnumSelectOne”:{
“模式”:[“请让我知道{&}:{|}”],
“ChoiceStyle”:“PerLine”
}
},
“财产”:{
“问题2”:{
“提示”:{
“模式”:[“我的问题2”{|}]
},
“类型”:[
“字符串”,
“空”
],
“枚举”:[
“支持”,
“销售”,
“市场营销”
]
},
“OnCompletion”:“context.Done(true);”
}
c#代码:

public async Task MessageReceivedAsync(IDialogContext上下文,IAwaitable参数)
{
上下文。呼叫(
FormDialog.FromForm(()=>BuildJsonForm(“Q1.json”),
FormOptions.prompinstart),(con,res)=>已完成案例提交(con,res));
}
CompletedCaseSubmission在填充Q1后调用,但Q2对话框根本没有执行。我可以从CompletedCaseSubmission调用对话框2,但我想从JSON调用。
第二个问题是如何获取c#?

中对话框Q1和Q2的详细信息目前无法中断表单对话框来调用另一个对话框。但是,您可以将表单拆分为较小的部分,并在这些部分之间调用其他对话框。有关详细信息,请参阅下面的链接:



当前无法中断表单对话框来调用另一个对话框。但是,您可以将表单拆分为较小的部分,并调用这些部分之间的其他对话框。有关详细信息,请参阅下面的链接:



事实上,正如我之前所说,我可以从对话框1调用对话框2:在CompletedCaseSubmission中,我可以通过第二个对话框调用context.call。我的问题是如何从JSON模式对话框中调用它?@VladimirB FormFlow不提供在流程中调用其他对话框的功能。在cod中使用FormFlow并不重要e、 或者来自json的FormFlow。目前没有从流中向堆栈添加对话框的机制。实际上,正如我之前所说的,我可以从对话框1调用对话框2:在CompletedCaseSubmission中,我可以使用第二个对话框调用context.call。我的问题是如何从json模式对话框中执行此操作?@VladimirB FormFlow不提供c所有其他对话框都在流中进行。无论您是在代码中使用FormFlow,还是在json中使用FormFlow,都无关紧要。目前没有从流中向堆栈添加对话框的机制。
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
       context.Call(
           FormDialog.FromForm<JObject>(() => BuildJsonForm("Q1.json"),
               FormOptions.PromptInStart), (con, res) => CompletedCaseSubmission(con, res));
}