Страница 12 из 13
Тоже самое сделайте для других узлов.
Для узла #thank_you. введите что-то вроде:
Пожалуйста, дайте мне знать, если вам нужно что-нибудь еще.
С удовольствием.
Нет проблем. Дайте мне знать, если есть что-то еще, с чем я могу помочь.
Для узла #goodbyes.
Приятно с вами поговорить.
Хорошего дня.
Прощай.
Теперь, ранее мы определили намерение #hours_info для людей, спрашивающих о часах работы и адресах нашей сети магазинов, и даже создали сущность @location, чтобы иметь возможность предоставлять ответы, специфичные для конкретного места.
Теперь, нам нужно создать узлы диалога для ответа клиенту.
И мы начнем с создания узла для запроса часов работы.
На узле Welcom нажмем на три вертикальные точки и выберем команду Add node below, которая создаст пустой узел ниже первого узла в диалоге.
Здесь введем имя узла и укажем намерение #hours_info в качестве условия узла.
Это обеспечит выполнение этого узла, когда пользователь запросит часы работы магазина.
В качестве ответа введите:
Наши часы работы указаны на нашей странице.
И обратите внимание, что здесь используется HTML-код в ответе.
Затем перейдите в панель Try it и проверьте, работает ли узел, спросив:
When is your Vancouver store open?
Когда ваш магазин в Ванкувере открыт?
Теперь, мы можем улучшить этот ответ, рассмотрев три возможных сценария.
Один, когда указано местоположение, второй, когда указан город, но у нас нет местоположения, и третий, когда пользователь просто запрашивает часы работы в целом, не указывая город.
Это классический вариант использования дочерних узлов.
Мы будем использовать наш текущий узел для захвата запроса часов работы, а затем перейдем к дочерним узлам, чтобы решить, как обрабатывать запрос на основе конкретной информации о местоположении, которая была предоставлена.
Поэтому удалим ответ из нашего узла «Часы работы», щелкнув значок удалить.
Мы это сделаем, потому что не хотим, чтобы этот родительский узел давал ответ.
Так как мы позволим дочерним узлам решать, каков правильный ответ.
Далее на узле «Часы работы», нажмем «Добавить дочерний узел».
Это создает первый дочерний узел.
Мы будем использовать его для случая, когда пользователь предоставит нам город, в котором у нас есть цветочный магазин.
Мы назовем этот узел Наши места.
И мы установим условие @location с оператором any для выполнения этого узла.
Это означает, что для пользовательского ввода будут выполняться два условия: намерение #hours_info и ввод будет содержать сущность @location.
И нам нужен способ предложить разные ответы для разных городов, поэтому мы включим опцию Multiple conditioned responses.
Для этого мы нажмем вверху Customize.
И включим Multiple responses и нажмем Apply.
Теперь у нас есть возможность прикрепить условие к каждому ответу.
Здесь мы создадим серию ответов, по одному для каждого города.
Например, для условия @location: Toronto наш ответ будет -
Наш магазин в Торонто открыт с понедельника по субботу с 9 утра до 18.00, кроме выходных.
Стоит отметить, что, если часы работы одинаковые для всех местоположений, мы могли бы просто включить @location в наш ответ.
Например, наш магазин @location открыт с понедельника по субботу с 9 до 18 часов, кроме выходных.
Это автоматически выведет обнаруженное значение сущности обратно пользователю в ответе.
Теперь, создадим дочерний узел «Нет такого местоположения».
Это случай, когда пользователь указывает город, но у нас нет магазина в этом городе.
Здесь укажем сущность @sys-location с оператором any в качестве условия для этого узла.
В качестве ответа введем -
К сожалению, у нас нет магазина в @sys-location. На сегодняшний день у нас есть магазины в Торонто, Монреале, Калгари и Ванкувере.
И обратите внимание, что @sys-location будет вставлять местоположения, однако этот узел никогда не будет выполняться для наших собственных местоположений, так как он идет после узла Our Locations.
При организации вашего диалога всегда размещайте узлы с определенными условиями вверху и узлы с более общими условиями внизу.
Теперь, создадим дочерний узел «Расположение не указано» для обработки случая, когда пользователь не указал местоположение.
И установим условие для этого узла true.
И так как условие для этого узла имеет значение true, этот узел будет выполнен автоматически если не будут выполнены два других узла.
Если бы мы оставили условие пустым, мы получили бы ошибку, потому что ни один дочерний узел не мог бы соответствовать запросу пользователя без местоположения.
И здесь нам нужен общий ответ, поэтому наш ответ будет -
Наши часы работы перечислены на нашей странице.
Прежде чем мы сможем все это протестировать, нам необходимо убедиться, что родительский узел передает управление дочерним узлам.
Для этого откроем родительский узел, и в разделе And finally изменим Ожидание ввода пользователя на пропустить ввод пользователя.
Это передаст выполнение дочерним узлам, которые мы только что создали.
Теперь, откроем панель Try it и попробуем вводы:
Какие у вас часы работы в Торонто?
Какие часы работы в Калгари?
Какие часы работы в Сиэтле?
Какие у вас часы работы?
И вы должны увидеть правильный ответ для каждого из этих вводов.
Теперь нам нужно обработать запросы адреса местоположения.
Для этого мы продублируем часы работы и в новых родительских и дочерних узлах для обработки адреса запроса потребуется изменить условие на #location_info вместо #hours_info и изменить ответы с часов работы на адреса.
Например, Our Toronto store is located at 123 Warden Avenue.
Our store locations are listed on our site on the <a href="https://example.org/stores">stores page</a>.
Попробуйте ввести в панели Try it -
hello
where are you stores located?
what are your hours of operations in Montreal?
thank you
bye
Технически говоря, нам не нужны дочерние узлы для обработки сценариев, которые мы реализовали.
Мы могли бы просто добавить несколько условных ответов в родительские узлы для каждого из городов, все в одном узле.
Однако здесь мы увидели, как работать с дочерними узлами.
И в любом случае неплохо иметь выделенный дочерний узел для обработки запроса пользователя.
В некоторых сложных чат-ботах у вас могут быть дочерние узлы, которые имеют свои собственные дочерние узлы.
Таким образом, мы создали простой, но работающий чатбот.
Проблема в том, что в настоящее время он доступен только в панели Try it после входа в систему.
И нам нужно развернуть нашего чат-бота где-нибудь на сайте.
В панели IBM Watson Assistant есть вкладка помощников Assistants.