literal
— это метод, а не атрибут. entities
содержит поле location
, которое можно программно использовать на уровне приложения для анализа входного текста.
Если вы хотите вытащить их в разговоре, вы можете использовать счетчик, чтобы пройтись по сущностям.
Например:
В узле вашего слота «Тогда ответьте» добавьте следующий бит контекста.
"context": {
"counter": "<? entities.size() ?>",
"literals": ""
},
Затем создайте три дочерних узла.
Узел 1: создайте фиктивный узел, установите для условия значение true. Пусть он перейдет ко второму узлу.
Узел 2. Для второго узла задайте условие $counter > 0
и добавьте следующий код в раздел JSON.
"context": {
"counter": "<? $counter - 1 ?>",
"literals": "<? entities[$counter].literal + ',' + $literals ?>"
},
Сделайте так, чтобы он вернулся к узлу 1. Причина этого в том, что разговор не позволит вам перейти к тому же узлу.
Узел 3: выводит ответ. Например: Literal Values: $literals
Вот пример рабочего пространства.
https://pastebin.com/xwgnLq9n
Предупреждение
Watson Conversation имеет встроенную функцию обнаружения бесконечных циклов. Если узел попадает 50 раз за один запрос, он выдаст следующую ошибку:
Detected recursion when processing the node with id
[node_20_1513835954092]. This node has been already processed [50] times
in this execution step
В этот момент узел выйдет из строя, и вы не получите никакого результата. Поэтому, если вы ожидаете более 50 объектов, вам нужно сделать это на прикладном уровне.
person
Simon O'Doherty
schedule
21.12.2017