Как получить значение намерения в условиях пользовательского интерфейса IBM Watson Assistance?
В разделе Если бот узнает, я могу сказать, intents[1].confidence > 0.4
но я не могу знать, что на самом деле это намерение, так есть ли способ получить это?
Я могу получить все намерения типа и уверенности в разделе Ответ с <? intents ?>
объект, но это не помогает, если бот распознает раздел.
1 ответ
Вы можете получить намерение, просто используя intents[1].intent
, Просто знайте, что вы запрашиваете второй вариант, а не первый. Первый будет intents[0]
,
Если у вас есть сложное дерево, которое вы хотите проанализировать, поиск этого может быть проблемой. Итак, есть два подхода.
Загрузите переменную контекста с именем намерения и проверьте это. Это увеличивает накладные расходы в вашем хранилище объектов, но позволяет вам быть более динамичным.
Если это второй вариант, который вам нужен, и вам нет дела до первого варианта: на главном исполнительном узле установите
intents[0].intent = intents[1].intent
и то же самое дляconfidence
, Это позволит нормальному поиску вступить во владение.
Подробнее об объектах в Watson Assistant можно узнать здесь:
https://console.bluemix.net/docs/services/conversation/expression-language.html
Я получаю уверенность с помощью такого фильтра:
Пример:
<? intents.filter("x", "x.intent == 'name_of_intent'").![confidence].get(0) ?>
Пояснение:
Получим массив намерений:
intents.filter("x", "x.intent == 'name_of_intent'")
, где "x" - временная переменная, аname_of_intent
это намерение, которое вы хотите достичь.Затем вы получаете еще один массив. Затем, чтобы получить значение уверенности, вам нужно
![confidence].get(0)
. И это все.
Метод объясняет:JSONArray.filter(temp, "temp.property operator comparison_value")
Итак.. Как в документах:https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-methods