Этот репозиторий не будет обновляться. Репозиторий будет доступен только для чтения.
В этом шаблоне кода мы будем использовать функцию Watson Assistant Slots для создания чат-бота, который принимает заказ на пиццу. Вся необходимая информация, такая как размер, тип и выбор ингредиентов, может быть введена в одном узле помощника, в отличие от предыдущих версий помощника.
Когда читатель завершит изучение этого шаблона кода, он поймет, как:
ПРИМЕЧАНИЕ . Этот шаблон кода был обновлен и теперь включает инструкции по доступу к Watson Assistant, работающему в IBM Cloud Pak for Data. Эти обновления можно найти в конкретных инструкциях по локальному развертыванию вашего приложения или по развертыванию вашего приложения в OpenShift в IBM Cloud. Основное необходимое изменение заключается в том, что вашему приложению потребуются дополнительные учетные данные для доступа к кластеру IBM Cloud Pak for Data, на котором размещена служба Watson Assistant.
Нажмите здесь, чтобы получить дополнительную информацию о IBM Cloud Pak for Data.
ПРИМЕЧАНИЕ . В этом шаблоне кода используется опыт Watson Assistant. После 8 октября 2021 г. все экземпляры (нестандартные) смогут переключаться между классическим и новым интерфейсом Watson Assistant, перейдя в правый верхний угол экрана Watson Assistant и щелкнув значок «Управление» . расположен в правом верхнем углу экрана Ассистента. Нажмите «Переключиться на классический интерфейс» или нажмите «Переключиться на новый интерфейс», чтобы переключиться между ними.
Использование Cloud Foundry в IBM Cloud | Использование службы Kubernetes IBM Cloud |
---|---|
Нажмите на один из вариантов ниже, чтобы получить инструкции по развертыванию приложения.
Преимущество слотов в том, что они сокращают количество узлов, необходимых для реализации логики в диалоговом окне Watson Assistant. Вот частичный диалог разговора с использованием старого метода:
А вот более полный диалог с использованием слотов, который помещает всю логику в узел Pizza ordering
.
Откройте Диалог, и мы посмотрим:
Каждый слот представляет собой поле, которое необходимо заполнить в чат-боте: pizza_size
, pizza_type
и pizza_topings
. Если они отсутствуют, пользователю будет предложено, начиная сверху, пока все они не будут заполнены через связанную переменную ( $pizza_size
, $pizza_type
и т. д.).
Нажмите Настроить чтобы добавить больше функциональности:
Здесь мы можем добавить ответ, когда этот слот заполнен (найден). Логику можно использовать для одного ингредиента:
или если добавлено более одного ингредиента:
Мы добавили логику для ответа «да» или «нет» на вопрос «Есть ли дополнительные начинки?»:
Нажмите на 3 круга и выберите Open JSON editor
чтобы напрямую редактировать json:
Здесь мы установили пустое значение для поля context: {"pizza_topings"}, чтобы мы могли выйти из цикла, заполнив этот слот.
Наконец, мы добавляем ответы, когда все слоты заполнены:
Мы начнем со случая, когда у нас есть «pizza_toppings», обнаружив, что размер массива>0. Здесь мы сначала обрабатываем случай, когда необязательный слот «pizza_place» заполнен, а затем обрабатываем случай, когда это не так.
Наконец, мы добавляем обработчик на случай, если ответы пользователя на запрос не найдены. Мы добавили обработчик намерения «помощь».
У нас есть узел диалога для обработки намерения #reset
, которое сбрасывает все поля в null
:
Давайте посмотрим на пример разговора и связанный с ним json. Запустив пиццерию Watson, запустите диалоговое окно и сообщите пиццерии-боту, что вы хотите большую пиццу:
«Пользовательский ввод» показывает поле «ввод» {»текст»}, а также «контекст», который в основном используется Ассистентом для отслеживания внутреннего состояния. Прокрутите вниз до Watson Understands
и просмотрите intents
:
Обратите внимание, что намерение «заказать» обнаружено. Объект «pizza_size» теперь представляет собой заполненный слот. У нас еще есть два обязательных слота: «pizza_type» и «pizza_toppings». Пользователю будет предложено заполнить следующие поля:
Теперь мы видим, что все необходимые слоты заполнены:
Что, если мы захотим сказать пиццерии Watson, что хотим съесть пиццу там, в ресторане? Слишком поздно! слот для «pizza_place» является необязательным, поэтому пользователю его не запрашивают, и как только необходимые слоты заполнены, мы выходим из диалогового узла «Заказ пиццы». Пользователю необходимо сначала заполнить дополнительные слоты. Введите «reset», чтобы начать заново, и проверьте это, добавив фразу «поесть там...»:
cf push
дает: FAILED Could not find service
Если вы назовете свой сервис wcsi-conversation-service
, это должно сработать. Когда вы используете cf push
, он пытается подключиться к службам, перечисленным в manifest.yml
.
Итак, есть 2 способа заставить это работать:
ПРИМЕЧАНИЕ. Кнопка
Deploy to IBM Cloud
решает эту проблему, создавая службы «на лету» (с правильными именами).
Этот шаблон кода лицензируется по лицензии Apache Software License, версия 2. Отдельные объекты стороннего кода, вызываемые в этом шаблоне кода, лицензируются соответствующими поставщиками в соответствии с их собственными отдельными лицензиями. На вклад распространяется действие Сертификата происхождения разработчика версии 1.1 (DCO) и лицензии на программное обеспечение Apache версии 2.
Лицензия на программное обеспечение Apache (ASL): часто задаваемые вопросы