Как сделать длинную паузу в Watson Assistant? - PullRequest
0 голосов
/ 02 января 2019

Я использую IBM Watson Assistant для создания чат-бота.Я использую веб-интерфейс с намерениями, сущностями и диалоговым деревом | дерево (я не знаю, как оно называется, я просто называю его веб-интерфейсом).

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

Более того, у меня есть довольно линейный поток в моем чат-боте (одна большая ветка вдиалоговое дерево).Если разговор с чат-ботом длится более 10 минут, я бы хотел остановить его и выпрыгнуть из ветки.Я мог бы решить эту проблему, сохранив текущее время начала разговора, а затем проверив в каждом узле, больше ли разница во времени, чем 10 минут, и если да, выпрыгнул.Но это опять не хороший стиль.Как я могу решить это более элегантно?

Ответы [ 2 ]

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

С последним помощником Уотсона вы можете сделать что-то вроде этого - { «время»: 5000, «печатать»: правда, "response_type": "pause" },

0 голосов
/ 03 января 2019

К сожалению, Watson Assistant не предоставляет эту функцию. Но у нас есть много способов сделать это, потому что Watson - это один API, и у нас есть весь бэкэнд, например, для создания собственного кода.

Вы можете использовать последний запрос /message и создать один setInterval, добавив некоторое условие, если прошло больше, чем с момента последнего запроса, к /message, как вы хотите, и отправить желаемое сообщение.

if(inputTiming > 100000) { 
  response.output.text = 'Hey, are you there?';
  return response
}
...