Проблема с диалоговыми узлами и намерениями в Watson Assistant - PullRequest
0 голосов
/ 29 декабря 2018

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

  1. Я создал две интенсивности: #how_are_you с примером "Как дела?"и намерение #feeling_good с примером "Я хороший".Конечно, у меня есть гораздо больше примеров для этих двух целей.В этом диалоге у меня теперь есть родительский узел, ищущий #feeling_good, и дочерний узел, ищущий #how_are_you (пропускающий пользовательский ввод между ними).Когда пользователь вводит предложение «Я хорошо. Как дела?»тогда срабатывает только #feeling_good, но не #how_are_you.Как я могу запустить оба намерения только с одним пользовательским вводом?

  2. Я хотел бы иметь один узел в диалоговом окне, который ожидает, скажем, 100 с, а затем отправляет другое сообщение пользователю.Ожидание не проблема (с использованием паузы), но как я могу сделать так, чтобы после 100-х годов отправлялось только сообщение, если пользователь не отправил другое сообщение в течение периода ожидания?Это означает, что когда пользователь отправляет сообщение, ожидающий узел должен быть отменен.

  3. У меня есть узел, который проверяет определенное намерение.Когда намерение не совпадает, я возвращаюсь к родительскому узлу.Проблема в том, что текст из родительского узла повторяется каждый раз.Как я могу предотвратить это повторение при прыжке назад?

  4. Последний вопрос, возможно, немного сложнее.Я хотел бы определить массив чисел [1,2,3,4,5].Затем один узел должен выбрать случайное число без замены из этого массива (например, 2), то есть оставшийся массив будет равен [1,3,4,5].Через некоторое время другой узел должен выбрать другое число случайным образом из массива (скажем, 4).И так далее.Как это можно реализовать?Я знаю о переменных (например, $ var), но не знаю, как представлять массивы и выбирать случайные числа.

Большое спасибо за ваши ответы заранее.И всем счастливого Нового года.

1 Ответ

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

1) В Watson Assistant всегда сначала используется цель с наибольшей достоверностью.Следовательно, обработка нескольких намерений, инициируемых одним предложением, является сложной задачей.«Лучшее» решение - использовать составное намерение - #HELLO_HOW_ARE_YOU.В качестве альтернативы вы можете создать условия, которые бы проверяли, являются ли первые два возвращенных намерения комбинацией #HELLO и # HOW_ARE_YOU

2) Ожидание и отправка сообщений из-за неактивности должны в идеале обрабатываться клиентом, реализующим консоль чата вваш интерфейсWA не очень подходит для этих типов операций, хотя есть некоторая поддержка, лучший способ их обработки - это заставить ваше клиентское приложение - при обнаружении неактивности - отправлять что-то, что будет сопоставлено с #INACTIVITY_INTENT, и WA ответит вашим сообщением.в сочетании с этим намерением.

3) Не переходите к узлу, а переходите к первому дочернему элементу этого узла и используйте wait for user input.

4) Это возможно.Язык выражений WA поддерживает получение случайных чисел, получение размера массива и удаление элементов из массива.Например <? $array.remove(new Random().nextInt(3))?>

...