Обработка нескольких ответов от IBM Cloud Function в Watson Assistant

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

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

Любые советы о том, как это сделать?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
554
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не вижу простого способа генерировать весь вывод и параметры. Что вы можете сделать, так это:

  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"
      }
    ]
  }
}

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

Привет! Это я уже сделал, и это сработало просто отлично. Но что, если вы не знаете количество входов? Я могу получить размер массива, но как его использовать, чтобы сделать x без кнопок?

GoveeBee 15.05.2019 15:28

У вас будет один ответ для 2 кнопок, один для 3 кнопок и так далее (при условии, что вы придерживаетесь разумных вариантов). Для каждого ответа вам нужно будет проверить (если размер массива == 2/размер массива == 3/...)

data_henrik 15.05.2019 15:41

Хм.. Так что план множественного ответа попробовать. Интересно. Работает для нескольких разных размеров. Определенно обходной путь, но я бы хотел какую-то петлю. Я лучше попробую это. :)

GoveeBee 15.05.2019 15:44

Другие вопросы по теме