Рекурсивный ответ Alexa с помощью DynamoDB - PullRequest
0 голосов
/ 21 сентября 2018

так что я в основном пытаюсь рассказать интерактивную историю с Alexa.Тем не менее, я не уверен, как отредактировать намеренный ответ, когда его произносит Alexa.Это должно происходить таким образом, чтобы оно постоянно обновлялось, пока Алекса рассказывает историю.

В моем сценарии Alexa - это только один демон, извлекающий строки из DynamoDB, и, пока генерируются новые сюжетные линии, она должна прочитать, а затем сообщить им, как только они будут обработаны.Похоже, что Alexa нуждается в заполненных строках в качестве возвращаемого значения для своего ответа.Вот пример:

Пользователь: Алекса, расскажите мне историю.

Алекса: (проверяет таблицу DynamoDB на новое предложение, если найдено) говорит предложение

Другое устройство: история обновлений

Alexa: (проверяет таблицу DynamoDBдля нового предложения, если оно найдено) говорит предложение

...

Это будет продолжаться до тех пор, пока другое устройство не поставит конецзначение для таблицы DynamoDB, заставляющее Alexa реагировать на окончательное Так заканчивается история вывод.

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

Я думаю о решении, где я «подделал бы» намерения пользователя, просто создавая строки JSON и проталкивая их через речьзапрашивание новых историй-предложений, скрытых от пользователя ... Во всяком случае, я не уверен, что можно даже не думать о грязном решении, которое было бы ..: D

Спасибо в связи!:)

1 Ответ

0 голосов
/ 22 сентября 2018

Модель программирования навыков Alexa определенно не была разработана для этого.Как вы можете сказать, по умению невозможно узнать, когда закончилось высказывание из текста в речь, чтобы можно было определить, когда отправить следующее.

Alexa также накладывает ограничение насколько времени может занять навык, чтобы ответить, который я считаю где-то в диапазоне 5-8 секунд.Так что это тоже сложность.

Единственный способ, которым я могу думать о достижении того, чего вы хотите достичь, - это использовать интерфейс GameEngine и использовать обработчики ввода для обратного вызова вашего навыка после отправки каждого TTS.Единственный улов в том, что вам нужно рассчитывать время ответов и надеяться, что никаких дополнительных задержек не произойдет.

Сегодня интерфейс GameEngine требует от вас объявить поддержку кнопок Echo, но это только для целей метаданных.Конечно, вы можете использовать навыки на основе GameEngine без кнопок.

Посмотрите: интерфейс GameEngine docs и распознаватель времени ожидания для обработки времени ожидания отобработчик ввода.

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

Возможно, вы захотите поэкспериментировать с установкой playBehavior в значение ENQUEUE.

...