Я создаю приложение для чат-бота с календарем и использую DialogFlow ES для определения того, что они говорят. Я хочу реализовать одну вещь: пользователь может сказать: «Забронируйте встречу до вторника», «Забронируйте встречу до следующей недели», «Забронируйте встречу после следующего месяца» и т. д.
У меня уже есть функция бронирования встречи, а также определения дат и диапазонов дат (вторник, следующий месяц, завтра и т. д.), однако я хочу, чтобы DialogFlow возвращал логическое значение, если он обнаруживает «до» или «после» в предложение или любые синонимы любого слова (например, до: «до» и т. д.).
Некоторые примеры:
«Забронировать встречу до вторника» вернет типичные параметры, но также и beforeAfterFlag: true («до» установит для него значение true)
«Забронировать встречу после вторника» вернет типичные параметры, но также и beforeAfterFlag: false («после» установит для него значение false)
«Забронировать встречу во вторник» вернет типичные параметры, но также и значение beforeAfterFlag: - (ничего не вернулось)
Как я могу реализовать это?
Вы не можете заставить Dialogflow возвращать логические значения вашему серверу. Dialogflow предназначен для понимания и распознавания слов человеческого языка. Он не понимает логических или других значений программирования.
Поэтому, если вы хотите создать аналогичный механизм с Dialogflow для определения того, использовал ли пользователь такие слова, как «до» или «после», вам придется использовать сущности так же, как вы делали это с определением дат.
Вы можете создать сущность moment
и присвоить ей необходимые значения и синонимы:
Затем в своем намерении добавьте несколько примеров фраз, которые включают это намерение. Оставьте необходимый флажок не отмеченным, потому что вы по-прежнему хотите, чтобы ваши пользователи могли записываться на прием, не используя такие слова, как раньше.
Когда ваши пользователи вызывают ваше намерение, вы можете проверить параметр moment
в запросе. Если у него есть значение before
, вы устанавливаете перед переменной значение true в своем вебхуке, то же самое касается after
, и если нет параметра moment
, вы знаете, что ваш пользователь не использовал его, поэтому вы можете оставить оба параметра равными false .