Это довольно широкий вопрос, поэтому я постараюсь сосредоточиться на особенностях запуска приложения с чат-ботом Dialogflow. Если у вас еще нет чата-робота QiSDK Dialogflow, работающего на Pepper, есть хороший учебник здесь , в котором подробно описан весь процесс. Если у вас уже есть чат-бот, я надеюсь, что приведенные ниже шаги являются достаточно общими, чтобы вы могли применить его к своему проекту.
Этот чат-бот возвращает только текстовые результаты, которые, как сказал Пеппер, вам нужно будет внести некоторые изменения в разрешить запуск определенных действий.
Изменение DialogflowDataSource
Шаг 2 на на этой странице учебного пособия подробно описано, как отправить текстовый запрос в Dialogflow и получить текстовый ответ. Вы захотите изменить его так, чтобы он возвращал объект полного ответа (включая действия), а не только текст. Например, определите новую функцию с именем detectIntentFullResponse
.
// Change this
return response.queryResult.fulfillmentText
// to this
return response.queryResult
Модификация DialogflowChatbot
Шаг 2 на на этой странице показано, как реализовать чатбот QiSDK. Добавьте логи c для проверки действий в функции replyTo
.
var response: DetectIntentResponse? = null
// ...
response = dataSource.detectIntentFullResponse(input, dialogflowSessionId, language)
// ...
return if (reponse.action != null) {
StandardReplyReaction(
ActionReaction(qiContext, response), ReplyPriority.NORMAL
)
} else if (reponse.answer != null) {
StandardReplyReaction(
SimpleSayReaction(qiContext, reponse.answer), ReplyPriority.NORMAL
)
} else {
StandardReplyReaction(
EmptyChatbotReaction(qiContext), ReplyPriority.FALLBACK
)
}
Теперь создайте новый класс ActionReaction
. Обратите внимание, что приведенное ниже неполно, но должно служить примером того, как вы можете определить, какое действие нужно выполнить (если вы хотите, чтобы другие). Смотрите SimpleSayReaction
для более подробной информации о реализации.
class ActionReaction internal constructor(context: QiContext, private val response: DetectIntentResponse) :
BaseChatbotReaction(context) {
override fun runWith(speechEngine: SpeechEngine) {
if (response.action == "launch-app") {
var appID = response.parameters.app.toString()
// launch app at appID
}
}
}
Что касается запуска приложения, различные подходы подробно описаны в других вопросах, таких как здесь . Можно расширить этот подход, чтобы выполнять другие действия, такие как запуск или извлечение онлайн-данных.