Ibm cloud 在Watson Assistant中处理来自IBM云功能的多个答案

Ibm cloud 在Watson Assistant中处理来自IBM云功能的多个答案,ibm-cloud,ibm-watson,watson-assistant,ibm-cloud-functions,Ibm Cloud,Ibm Watson,Watson Assistant,Ibm Cloud Functions,我需要在Watson Assistant对话节点中显示未知数量的按钮。按钮的数据来自IBM Cloud函数 如果我在节点中手动设置响应类型“option”应答,JSON对象如下所示: { "output": { "generic": [ { "title": "Välj mötestyp", "options": [ { "label": "Rådgivning familjerätt 30 mi

我需要在Watson Assistant对话节点中显示未知数量的按钮。按钮的数据来自IBM Cloud函数

如果我在节点中手动设置响应类型“option”应答,JSON对象如下所示:

{
  "output": {
    "generic": [
      {
        "title": "Välj mötestyp",
        "options": [
          {
            "label": "Rådgivning familjerätt 30 min",
            "value": {
              "input": {
                "text": "447472"
              }
            }
          },
          {
            "label": "Rådgivning familjerätt 60 min",
            "value": {
              "input": {
                "text": "448032"
              }
            }
          }
        ],
        "description": "Välj typ av möte du vill boka",
        "response_type": "option",
        "preference": "dropdown"
      }
    ]
  }
}
{
  $context.output"
}
My cloud函数可以使用x个选项创建此JSON。但是我如何在助手中使用这些数据呢

最简单的方法是让云函数生成完整的JSON,然后输出返回的JSON,如下所示:

{
  "output": {
    "generic": [
      {
        "title": "Välj mötestyp",
        "options": [
          {
            "label": "Rådgivning familjerätt 30 min",
            "value": {
              "input": {
                "text": "447472"
              }
            }
          },
          {
            "label": "Rådgivning familjerätt 60 min",
            "value": {
              "input": {
                "text": "448032"
              }
            }
          }
        ],
        "description": "Välj typ av möte du vill boka",
        "response_type": "option",
        "preference": "dropdown"
      }
    ]
  }
}
{
  $context.output"
}
但这是不允许的

从我的函数生成的输出对象:

[{"serviceId":447472,"serviceName":"Rådgivning Familjerätt 30 min"},{"serviceId":448032,"serviceName":"Rådgivning Familjerätt 60 min"}]

有什么建议吗?

我看不到生成整个输出和选项的简单方法。你能做的是:

  • 生成选项标签和值
  • 将它们传递到通用输出节点,该节点具有1、2、3等选项的预定义结构。根据要填充的预定义响应结构的上下文变量的数组大小进行检查
  • 我测试了以下内容:

      {
      "context": {"my": [ {
                "label": "First option",
                "value": "one" 
              },
              {
                "label": "Second",
                "value": "two" }]},
    
    
      "output": {
        "generic": [
          {
            "title": "This is a test",
            "options": [{"label": "<? $my[0].label ?>", 
                         "value": {
                  "input": {
                    "text": "my[0].value"
                  }
                }
    },{"label": "<? $my[1].label ?>",             "value": {
                  "input": {
                    "text": "<? $my[1].value ?>"
                  }
                }
    }],
            "response_type": "option"
          }
        ]
      }
    }
    
    {
    “上下文”:{“我的”:[{
    “标签”:“第一选项”,
    “值”:“一”
    },
    {
    “标签”:“第二”,
    “值”:“两个”}]},
    “产出”:{
    “通用”:[
    {
    “标题”:“这是一次测试”,
    “选项”:[{“标签”:”“,
    “价值”:{
    “输入”:{
    “文本”:“我的[0]。值”
    }
    }
    },{“标签”:“”“值”:{
    “输入”:{
    “文本”:”
    }
    }
    }],
    “响应类型”:“选项”
    }
    ]
    }
    }
    

    它使用选项定义了一个上下文变量,类似于选项结构。在输出中,访问标签和值,稍后修改以证明它们已被使用并且可以修改。

    Hi!我已经做过了,效果很好。但是如果你不知道输入的数量呢?我可以得到数组的大小,但是如何使用它来生成x个按钮?对于2个按钮,您会有一个响应,对于3个按钮,等等(假设您保持选项的合理性)。对于每个响应,您需要检查(如果数组大小==2/数组大小==3/…)Hmm。。因此,我们需要尝试一个多重响应计划。有趣。适用于几种不同的尺寸。当然是一个解决办法,但我想舒尔需要一些循环。我最好试试这个