Выполнение диалогового потока выбрано среди вариантов

Пишу вам, чтобы задать вопрос по исполнениям Dialogflow.

Я пытаюсь создать агент для Google Home, и мой бэкэнд в основном представляет собой веб-перехватчик, реализованный на TypeScript.

В разговоре, который я разработал, пользователь запрашивает у агента выполнение действия, указав в качестве параметра категорию. Теперь набор возможных категорий может меняться со временем, поэтому я использую тип объекта @ sys.any для определения параметра.

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

Например. разговор мог быть таким:

Agent: 'Welcome.'
User:  'Do action on **category**'
Agent: 'I have found **categoryA**, **categoryB** and **categoryC**. Please specify which one you want to select.'
User:  'Select the second || Select **categoryB**'
Agent: 'Great, action performed on **categoryB**'

Теперь я смог построить этот диалог, используя последующие события и контексты: например, я создал два последующих события, одно из которых определяет числа, а другое - текст, поэтому пользователь ориентируется на то или иное, в зависимости от того, что он говорит ( если пользователь говорит «Первый», число обнаруживается, и в бэкэнде я чередую категории, выбирая ту, которая связана с этим индексом. Я делаю аналогичную операцию, если пользователь говорит «categoryX», но с другим намерением) .

Я хочу понять: как правильно вести такой диалог с помощью API выполнения Node.js?

Спасибо за любую помощь.


person Andrea Ialenti    schedule 09.12.2018    source источник
comment
Проверяли ли вы dialogflow.com/docs/reference/agent/userentities с помощью POST service вы можете сохранять объекты, когда пользователь подключается к боту, и используя фильтр намерений и слотов, вы можете иметь любую категорию по отношению к текущему сеансу. При создании фильтрации слотов для намерения создайте настраиваемый тип данных, определяемый пользователем. Выполните действие с категорией, создайте запись с именем user_category и сделайте свое высказывание категорией как user_category. Пока пользователь подключается к боту, сохраните все возможные категории, связанные с пользователем, использующим API.   -  person Abhik Chakraborty    schedule 09.12.2018


Ответы (1)


Судя по вашему описанию - вы сделали именно то, что нужно (хотя вам не нужны последующие намерения).

Когда вы отвечаете с вариантами, которые есть у пользователя, вы включаете Context, который может содержать массив возможных результатов. Затем вы создаете намерения, которые имеют это в качестве входного контекста, совпадающего либо с индексом массива (давайте назовем это намерением match.index), либо по имени (намерение match.name).

В вашем веб-перехватчике намерение match.index будет определять, какая категория действительно выбрана, а затем вызывать функцию, которая заботится об этой категории. Точно так же веб-перехватчик для match.name примет параметр с именем и вызовет ту же функцию для работы с этой категорией.

person Prisoner    schedule 15.12.2018