IBM Watson Assistant: проверка временных рамок пользовательского ввода

Я использую IBM Watson Assistant и пытаюсь проверить ввод пользователя на временные рамки/промежутки времени. Какую функцию следует использовать?

Я использовал метод @sys-date.before(now()) для проверки временных рамок между прошлым и настоящим пользовательского ввода, но теперь он работает для меня. Если я ввожу сейчас или сегодня, Watson Assistant все еще думает, что это прошлое...

@sys-date.before(now()):

Looks "like you're trying to make a reservation in the past. Try again." true $day it is

Я ожидаю, что если пользователь введет сейчас или сегодня, чтобы резервирование сработало, и если пользователь введет время в прошлом для ответа как

"like you're trying to make a reservation in the past. Try again."

Рассматриваемый фрагмент кода выглядит следующим образом:

{ "context": 
    { "day": "@sys-date" } }
{ "context": 
    { "time": "<? @sys-time.reformatDateTime('h:mm a') ?>" } }
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
596
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

С помощью IBM Watson Assistant вы можете использовать системные сущности @sys-дата и @sys-время для преобразования пользовательского ввода в значения данных/времени. И вы можете использовать функции языка выражений для даты и времени для оценки и преобразования этих значений. Кажется, вы уже используете оба. Теперь дело за логикой...

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

Для более причудливых проверок вы можете даже использовать функциональность java.util.Дата.

Это должно быть правдой, если это прошлый момент:

now.after(yourInput)

Привет, data_henrik! Код не сравнивает или игнорирует, если я ввожу дату в прошлом. Мой чат-бот не признает, что вчера уже прошло. Так что код, который предлагают разработчики IBM для сравнения Before(now()) в моем случае не работает. Мой чат-бот отлично распознает даты и время, но не понимает, прошло ли оно.

Egor Petrov 29.05.2019 17:09

Добавьте свой код, который вы используете для сравнения, и добавьте примеры значений. Что такое пользовательский ввод, какие распознанные данные/время обрабатываются?

data_henrik 29.05.2019 17:39
@sys-date.before(now()) и $day как значение. и "Похоже, вы пытаетесь сделать бронирование в прошлом. Попробуйте еще раз". как ответ. Ввод, который я тестирую, за день до текущего дня, но в любом случае он делает оговорку, даже если я использую код.
Egor Petrov 29.05.2019 17:57
@sys-date.before(now()) Вы не можете сделать бронирование на день в прошлом. Очистите слот и снова предложите, это то, что говорит учебник IBM, но он не работает должным образом
Egor Petrov 29.05.2019 18:03

Я добавил образец короткого кода. Не могли бы вы добавить к своему вопросу JSON всего узла?

data_henrik 29.05.2019 18:15
now.after(yourInput) что здесь? Вместо вашего ввода что-то другое? Потому что я попробовал это, и это ничего не изменило. возможно, что-то еще не позволяет этому коду работать должным образом, чего я еще не заметил.
Egor Petrov 30.05.2019 07:03

Спасибо кстати. На самом деле я могу добавить весь код узла. { "context": { "day": "@sys-date" } } { "context": { "time": "<? @sys-time.reformatDateTime('h:mm a') ?>" } } Это два основных кода, обрабатывающих ввод времени для бронирования, но это мало что говорит.

Egor Petrov 30.05.2019 07:12

только что попробовал это @sys-date.before($day) и не повезло : На какой день вы хотите запланировать звонок ?? 24-5-2017 Неактуально @sys-number:24 @sys-date:2017-05-24 @sys-number:-5 @sys-number:-2017 2017-05-24 Сколько времени на 2017-05- 24 вы хотите запланировать звонок? как вы можете видеть здесь, он делает оговорку, даже если дата уже прошла.

Egor Petrov 30.05.2019 07:38

Вы не делитесь всем кодом, и трудно судить, что с ним не так.

data_henrik 30.05.2019 07:44

Поэтому я добавил, поделился всем деревом узлов диалога. Есть идеи?

Egor Petrov 31.05.2019 06:07
Ответ принят как подходящий

Я решил это! Что я сделал, так это поставил (сегодня) здесь @sys-date.before(today()) и сейчас здесь @sys-time.before(now())

Другие вопросы по теме