Наличие нескольких GoogleResponses подряд без участия пользователя или взаимодействия - PullRequest
0 голосов
/ 23 марта 2020

Я работаю над приложением кулинарных рецептов для Google Home, и мне нужен способ связать несколько GoogleResponses (SimpleResponse et c ..) вместе, не требуя взаимодействия между ними.

Я искал другие ответы, относящиеся к этому, и хотя я нашел несколько похожих на мои вопросы, ответы, как правило, соответствуют линии «система была разработана для диалогов, в чем смысл?».

I Я полностью понимаю эту точку зрения, однако из-за требований к характеру и поведению приложения, которое я разрабатываю, я нуждаюсь в этой конкретной возможности.

Рецепты разделены на этапы (революционные, я знаю. .) и существует примерно 1 к 1 соответствие между шагами и GoogleResponses.

Чтобы дать пример того, как разворачивается типичный рецепт, он обычно выглядит так (это, конечно, упрощение):

main content -> question -> main content -> question -> etc..

С каждым экземпляром " основное содержание «являющееся шагом рецепта» и каждый «вопрос», требующий ввода пользователя.

Если бы все время было так, то не было бы проблемы, я мог бы просто связать каждый раздел "основной контент -> вопрос" в один GoogleResponse и сделать это.

Однако часто бывают случаи, когда рецепт выглядит так:

main content -> main content -> main content -> question

Поскольку каждый «основной контент» является шагом в рецепте, в этом контексте не имеет смысла объединять их вместе в один и тот же ответ (для пользователя существует система перемещения между шагами).

Первоначально я использовал MediaResponses для разделов «основного контента», поскольку для них не требуется ввод данных пользователем для перехода на следующий шаг, но по разным причинам я не буду вдаваться в go, поскольку это уже становится довольно длинным, менеджер проекта решил, что MediaResponses не следует использовать в этом проекте.

В любом случае, извините для длинного вопроса, я просто хотел объяснить свои причины необходимости сделать это. Надеюсь, мои объяснения несколько ясны и понятны.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 25 марта 2020

Короткий ответ - тот, с которым вы уже сталкивались - попытка сделать разговорные действия не такими разговорными, не очень хорошо работает. Однако есть несколько вещей, на которые вы можете посмотреть.

Структурированные данные рецепта

Поскольку вы работаете над действием рецепта, в частности, может быть целесообразно используйте стандартную поддержку recipe , которая поставляется с Помощником.

С другой стороны - люди будут знакомы с ним, и вам не нужно делать много кода, просто предоставьте разметку на webpage.

С другой стороны - если у вас есть другие требования к тому, как вы хотите, чтобы взаимодействие go, это не так гибко. (Например, если вы задаете вопросы в некоторых пунктах рецепта, или если вы хотите предложить корректировки измерений, основанные на количестве обслуживаемых людей.)

Неправильное использование события «Нет ввода»

Вы можете настроить Dynami c Reprompts , чтобы вы получили событие, если пользователь ничего не говорит через несколько секунд. Если они хотят ускорить ответ, они могут специально запросить следующий контекст, или вы можете перехватить событие actions_intent_NO_INPUT в Dialogflow и продвинуться вперед.

Здесь есть несколько недостатков:

  • Не все устройства поддерживают отсутствие ввода. В частности, например, мобильные устройства не будут генерировать это.
  • Это может быть допустимо только для двух событий без ввода подряд. В третьем случае помощник может автоматически закрыть разговор. (Документация по этому вопросу неясна, и точное поведение со временем изменилось.)

Media Response

Вам не ясно, зачем использовать Media Response «не следует использовать», но это один из единственных способов инициировать событие, когда разговор завершен.

Однако есть несколько недостатков:

  • Существует несколько ошибок, связанных с завершением Media Response при выходе
  • На устройствах с экранами есть медиаплеер. Поскольку сам носитель информации не имеет отношения к тому, что вы делаете, проигрыватель не имеет смысла
  • Он не поддерживается на всех поверхностях

Интерактивный холст

Аналогичный подход, однако, будет использовать Интерактивный холст . Это дает вам страницу HTML с JavaScript, которую вы контролируете, включая возможность генерировать ответы на сервер, как если бы пользователь их произносил (или как если бы они касались чипа предложения). Вы также можете прослушивать события, когда законченная сгенерированная речь закончилась.

Однако существует ряд недостатков, которые, вероятно, не позволяют использовать это прямо сейчас:

  • Самый большой является то, что интерактивный холст можно использовать только для игр прямо сейчас. (Но это скорее политическое решение, нежели техническое. Поэтому, возможно, оно будет отменено в будущем.)
  • Это не работает на интеллектуальных колонках - только некоторые устройства с экранами.

Сочетание вышеуказанных подходов

Один из способов обойти ограничения устройства Interactive Canvas и плохое изображение, сопровождающее Media Response, может заключаться в их смешивании. Для устройств, которые поддерживают I C, используйте это. Если нет, попробуйте использовать Media Response. (Вы можете даже wi sh рассмотреть вопрос о повторном вводе без ввода для некоторых платформ.)

Но это все равно не сработает на всех устройствах и имеет ограничение, заключающееся в том, что Interactive Canvas подходит только для игр. сейчас.

Сводка

Нет единого, понятного способа справиться с этим ... и это не та функция, которую они могут добавить, учитывая разговорный характер платформы. Однако могут быть некоторые обходные пути, которые могут работать для вашего сценария.

...