Обработка нескольких ответов из IBM Cloud Function в Watson Assistant - PullRequest
2 голосов
/ 15 мая 2019

Мне нужно показать неизвестное количество кнопок в диалоговом узле Watson Assistant. Данные для кнопок поступают из облачной функции IBM.

Если я вручную установлю ответ типа "опция" в моем узле, 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"
      }
    ]
  }
}

Моя облачная функция может создать этот JSON без x опций. Но как я могу использовать эти данные в Ассистенте?

Проще всего было бы позволить облачной функции сгенерировать полный JSON, а затем просто вывести возвращенный JSON следующим образом:

{
  $context.output"
}

.. но это не разрешено.

Сгенерированный выходной объект из моей функции:

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

Какой-нибудь совет, как это сделать?

1 Ответ

0 голосов
/ 15 мая 2019

Я не вижу простого способа генерировать весь вывод и параметры.Вы можете сделать следующее:

  1. Сгенерировать метки опций и значения
  2. Передать их в общий выходной узел, который имеет предопределенные структуры для опций 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"
      }
    ]
  }
}

Он определил контекстную переменную с параметрами, аналогичнымик структуре опций.В выходных данных получите доступ к меткам и значениям, позже изменив их, чтобы доказать, что они используются и могут быть изменены.

...