Вот один общий способ выполнить то, что вы пытаетесь сделать:
Вам нужно будет собрать context variables
, чтобы определить, какую информацию о песне отправить обратно пользователю.Один эффективный способ сделать это с помощью слотов; вот руководство по этому вопросу .
Пример собранных переменных контекста может выглядеть следующим образом:
{
genre: "hiphop",
mood: "upbeat",
instrumental: false
}
Таким образом, бот знает из этой информации, что нужно возвращать хип-хоп песни,в приподнятом темпе это не инструментально.
Я думаю, вы, возможно, уже достигли этого уровня, но следующим шагом будет возврат к вашему набору данных, чтобы запросить его и вернуть список песен.
Есть несколько различных способов сделать это:
Вы можете разместить набор данных в Watson assistant как предустановленные контекстные переменные;это, вероятно, не имеет смысла, потому что это большой набор данных.Это действительно имело бы смысл, если бы было несколько вариантов.
Вы можете запросить набор данных в слое оркестрации.Сообщение будет отправлено обратно из Watson Assistant с действием для запроса набора данных, прежде чем оно будет возвращено конечному пользователю, уровень оркестровки выполнит этот запрос и заполнит возвращаемую информацию.Это немного сложнее, потому что вам нужно создать и управлять этим уровнем оркестровки - хотя есть некоторые сервисы, которые могут помочь с этим.Вот схема слоя оркестрации с помощником Уотсона:
Вы можете сделать запрос к набору данных из Watson Assistant с помощью облачных функций IBM.После того как вы собрали информацию в узле, вы указываете Watson Assistant вызвать облачную функцию, которая запрашивает ваш набор данных.Что хорошо в этом методе, так это то, что все размещено в WA и облачных функциях (нет необходимости в уровне оркестровки), хотя есть некоторые ограничения, такие как тайм-ауты, потому что Watson Assistant как API должен реагировать «немедленно».Вот еще немного информации о совершении программных вызовов из диалогового узла .
Надеюсь, это полезно.