Должен ли у нас быть отдельный обработчик функций для всех намерений, если число намерений больше 200 - PullRequest
0 голосов
/ 26 апреля 2020

Что если у меня более 100 намерений, включая последующие. Должны ли мы написать отдельный обработчик для каждого 100 намерений и вызвать общую функцию из функции обработчика. Это правильно?

Здесь мы хотим иметь общую функцию с именем намерения в качестве параметра, потому что все, что мы делаем, это выбираем ответ из базы данных.

Должны ли мы иметь параметризованную функцию в наборе intentmap или иметь Отдельная функция-обработчик для всех этих намерений и вызов общей функции с параметрами изнутри. Пожалуйста, предложите.

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Да, использование параметризованных функций или классов является хорошей практикой. С помощью этой настройки вы можете легко повторно использовать любой необходимый лог c, если два намерения выполняют действия similair в webhook. Если вам требуется другое поведение, вы можете ввести значения в параметры, например, это может быть функция, которая завершает диалог.

    app.intent("Stop Conversation"), (conv) => {
      const message = "Okay, have a nice day";
      endConversation(conv, message);
    });

    app.intent("Cancel Reservation"), (conv) => {
      const message = "Okay, I will cancel your reservation. Have a nice day."

      endConversation(conv, message)
    });

    endConversation(conv, message) {
      conv.close(message);
    }

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


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

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

Если вы используете библиотеки actions-on-google или dialogflow-executeing , то да, иметь обработчик намерений для каждого намерения и эти обработчики вызывать другие функции с помощью параметры, которые вы хотите, - лучший подход.

Однако ... если вы не используете эти библиотеки, у вас наверняка есть другие доступные варианты.

Например, используя multivocal вы можете установить функции компоновщика, которые извлекают параметры в среду запроса и делают вызов базы данных. Если вы установили поле «Действие» в диалоге, вы можете (но не обязаны) использовать его в качестве основы для обработчика действий.

Если вы просто хотите придерживаться своих собственных библиотек, вы можете анализировать JSON сами и выполняйте любые вызовы функций, основываясь на любых значениях, которые вы будете sh.

...