Как записать несколько значений одного объекта в IBM watson assistant после запроса слота?

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

  • Пользователь: Я хочу лететь из Торонто в Бостон

И Ватсон правильно определяет:

intent: 'booking', @city:'Toronto', @city:'Boston'

Теперь у меня есть слот, который запрашивает класс бронирования:

  • Уотсон (Слот): Какой класс вы хотели бы?
  • Пользователь: Эконом

На данный момент контекст имеет только первое значение для сущности @city, т. Е. Торонто. Из моего поискового запроса я понимаю, что могу получить доступ к @city[0] и @city 1. И я попытался отразить это в контексте, выполнив следующее, но ценность, которую я получаю, - Нет.

Как я могу правильно захватить оба города @city:Toronto, @city:Boston и одновременно сущность @class:economy?

3 ответа

Возвращаясь к этому, поскольку в Watson Assistant были внесены изменения, чтобы сделать это проще.

1. Создайте две сущности. @fromCity а также toCity,

2. Заполните каждую сущность одинаковыми значениями. Названия локаций.

3. Создайте свое намерение с помощью вопросов, как показано ниже.

I want to fly from Toronto to Boston
I have to get to Boston from Toronto ASAP. 
I want to get a flight to New York
I'm in Texas and need to fly to San Diego

4. На странице намерений выберите каждый город и отметьте его как @fromCity или же @toCity, Это создает контекстные объекты.

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

Более подробный пример здесь.

Интеллектуальные слоты - когда есть несколько объектов одного типа и больше слотов, которые соответствуют объекту одного типа, тогда, когда слот соответствует первому объекту, он будет "съеден" и недоступен для другого слота - следовательно, следующий слот соответствие с тем же типом объекта будет соответствовать любому другому объекту того же типа. Чтобы добиться того, что вы хотите сделать, просто определите слоты следующим образом (чтобы оба они соответствовали просто @city юридическое лицо).

введите описание изображения здесь

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

Вы можете использовать SPEL, язык выражений для watson, чтобы сопоставить все литеральные значения, соответствующие объекту, и поместить их в переменную контекста, например, внутри конфигурации json:

      "context": {
    "ReferenceNumber": "@ReferenceNumber.literal",
    "ReferenceNumbersRunAdd": "<?$ReferenceNumbersMultiple.addAll(entities['ReferenceNumber'].![literal]) ?>"
  }
Другие вопросы по тегам