Доступ к последующим намерениям из основного диалога - PullRequest
0 голосов
/ 11 апреля 2020

Я использую диалоговое окно для создания простого бота. Предположим, у меня есть намерение, как следует. Это нормально работает, если пользователь следует заданному потоку, когда ему нужно сначала ответить как кошка, а затем ответить «да», прежде чем он / она сможет увидеть реакцию изображения кошки.

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

Конечно, я могу скопировать и повторить каждое из последующих намерений. Но это означает, что код повторяется. Как правильно достичь такого сценария?

enter image description here

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Помните, что Intents захватывает то, что говорит пользователь , а не как вы обрабатываете это .

В приведенном вами примере вы можете создать еще один объект верхнего уровня с именем «Запросить изображение кота».

В вашем коде выполнения оба слова «Хотели бы вы видеть изображение кота? - да» и «Запросить изображение кота» могут вызывать тот же обработчик функция. Так что дублирования кода нет - они оба просто вызывают одну и ту же функцию.

0 голосов
/ 11 апреля 2020

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

В вашем случае вы определяете событие (EVENT_ASK_CAT) на странице Intent (после контекстов), а затем запускаете событие, используя выполнение (webhook).

Если вы реализуете Java webhook (используя dialogflow.v2.model)

GoogleCloudDialogflowV2EventInput eventInput = new GoogleCloudDialogflowV2EventInput();
eventInput.setName("EVENT_ASK_CAT");
response.setFollowupEventInput(eventInput);

Это будет соответствующий ответ REST:

 {
  "followupEventInput": {
    "name": "EVENT_ASK_CAT"
   },
  "languageCode": "en-US"
 }

Вы можете также решите использовать встроенный редактор Firebase , если вы не хотите развертывать свой собственный веб-крюк.

Удачи!

...