Выполнение диалога выбрано среди опций - PullRequest
0 голосов
/ 09 декабря 2018

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

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

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

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

Например, разговор может быть следующим:

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**'

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

Что я хочу понять, так это то, как правильно вести такой разговор через API выполнения Node.js?

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

1 Ответ

0 голосов
/ 15 декабря 2018

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

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

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

...