Bot框架 - 从json模式

时间:2017-07-07 23:54:27

标签: c# json json.net botframework formflow

我正在使用BuildJsonForm函数到define a form using a JSON schema。我使用一些参数生成JObject,bot在运行时询问用户。

我发送给函数BuildJsonForm的JObject / JSON示例是这样的:

`

  {
    "References": [
      "Microsoft.Bot.Connector.dll",
      "System.dll",
      "mscorlib.dll",
      "System.Net.Http.dll"
    ],
    "Imports": [
      "Microsoft.Bot.Connector.ThumbnailCard",
      "Microsoft.Bot.Connector.StateClient",
      "System.Net.Mail",
      "System",
      "System.Text.RegularExpressions",
      "System.Net.Http",
      "System.Net",
      "System.Text"
    ],
    "type": "object",
    "required": [
      "username",
      "password"
    ],
    "Templates": {
      "NotUnderstood": {
        "Patterns": [
          "I do not understand, Please rephrase that"
        ]
      },
      "EnumSelectOne": {
        "Patterns": [
          "Choose one please"
        ],
        "ChoiceStyle": "Auto"
      }
    },
    "properties": {
      "username": {
        "Prompt": {
          "Patterns": [
            "Tell me the {&}, please",
            "I need you to especify a {&}, please"
          ]
        },
        "type": [
          "string",
          "null"
        ],
        "Templates": {
          "NotUnderstood": {
            "Patterns": [
              "That is not a valid input"
            ]
          }
        }
      },
      "password": {
        "Prompt": {
          "Patterns": [
            "Tell me the {&}, please",
            "I need you to especify a {&}, please"
          ]
        },
        "type": [
          "string",
          "null"
        ],
        "Templates": {
          "NotUnderstood": {
            "Patterns": [
              "That is not a valid input"
            ]
          }
        }
      }
    },
    "OnCompletion": "await context.PostAsync(\"Thank you!\"); string files = \"\"; context.PrivateConversationData.TryGetValue<string>(\"Files\", out files); [more code...]"

}

`

我需要向数据库发送用户对生成的JObject / JSON表单问题的答案,但到目前为止,我还没有找到一种方法。

我也尝试使用此行context.PrivateConversationData.TryGetValue<string>("Files", out files);访问BotData,因此我可以直接从JSON的“OnCompletion”部分将用户的答案发送到数据库,但我仍然可以似乎无法访问OnCompletion部分的botdata或上下文。

在用户回答表单中的最后一个问题后,有没有其他方法可以成功检索用户对JObject / JSON生成表单的响应?

1 个答案:

答案 0 :(得分:0)

在我的项目中出现问题的原因似乎是将这些参数发送到函数:

GeneratedForm.BuildJsonForm(channel, user, convers);

因为我编辑了没有这些参数的函数,所以我停止了问题中指定的异常。我将查找这些参数导致问题的原因,但我在这种情况下找到的解决方案是以这种方式定义这个方法:

GeneratedForm.BuildJsonForm();