Как сохранить навык Alexa открытым?

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

alexa ask grocerylist to add 2 eggs
alexa ask grocerylist to add bread

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

alexa open grocerylist
.... 2 mins later
add 2 eggs
.... 1 min later
add bread

Есть ли способ сделать это без необходимости использовать alexa ask grocerylist каждый раз.


person Vishnu    schedule 04.07.2016    source источник


Ответы (4)


Это невозможно. Это функция безопасности, поэтому третьи стороны не могут создать навык «подслушивать» все, что кто-то говорит. Вы можете ответить, и если вы не установите флаг «endSession», сеанс останется открытым. Но он будет оставаться открытым только около 8 секунд. Если вы установили повторную подсказку, он прочитает им повторную подсказку в этот момент и останется открытым еще 8 секунд. Таким образом, максимальное время, в течение которого вы можете держать линию открытой, составляет 16 или около того секунд.

person Joseph Jaquinta    schedule 05.07.2016
comment
Этот ответ начинается со слов «невозможно», но затем вы точно описываете, как сделать то, что, как я понимаю, хочет спрашивающий. @adamp ниже дает тот же ответ. - person Josep Valls; 05.12.2016
comment
Большинство людей, задающих этот вопрос на форуме и в других местах, хотят постоянно держать навык открытым; прослушивание всего, что пользователь может сказать позже без вызова. Спрашивающий не говорит здесь явно о своем сценарии, поэтому я ответил на вопрос, основываясь на ответе, который будет искать большинство людей, ищущих это. - person Joseph Jaquinta; 05.12.2016
comment
Могу ли я активировать повторяющийся 8-секундный режим прослушивания более 2 раз? - person Sunil; 19.09.2017
comment
Вы можете предоставить только одну повторную подсказку на Alexa, поэтому максимум, что у вас может быть, — это первые 8 секунд (повторная подсказка) и вторые 8 секунд. - person Joseph Jaquinta; 20.09.2017
comment
(Google Home фактически позволяет вам предоставлять более одного повторного запроса, FWIW) - person Joseph Jaquinta; 20.09.2017

Конечно это возможно! (Но может быть ограничено максимум 8 секундами на комментарий @Bill)

В своем ответе при вызове buildSpeechletResponse установите shouldEndSession на false, чтобы сеанс оставался открытым и продолжайте прослушивать другие высказывания без необходимости повторного запуска навыка с помощью alexa ask MyApp...

Различные демонстрации покажут, как это сделать. например См. пример кода здесь: https://github.com/amzn/alexa-skills-kit-js/blob/master/samples/savvyConsumer/src/AlexaSkill.js

person python1981    schedule 28.09.2016
comment
Этот ответ вводит в заблуждение. Время ожидания устройств Amazon Echo истекает примерно через 8 секунд. У вас нет возможности увеличить продолжительность тайм-аута. - person Bill; 15.09.2017

Это возможно, но только в течение ограниченного времени.

В зависимости от используемого вами SDK вы можете установить флаг (должен завершиться сеанс = false). Это уже сделано в ответе на запрос. Если вы добавите повторную подсказку с этим установленным флагом, вы можете оставить сеанс открытым до повторной речи.

Таким образом, всего 8 секунд до повторного запроса и еще 8 секунд после повторного запроса. Всего 16 секунд.

Вам нужно будет помнить, что сеанс и переменные сеанса исчезают после завершения сеанса (когда исчезает синий индикатор Alexa echo). Поэтому, если вы хотите сохранить состояние или список продуктов, я бы порекомендовал иметь хранилище, подобное БД. Если вы используете lambda для размещения конечной точки, у нее есть динамо-база данных, которую вы можете использовать для хранения данных.

person Guru    schedule 01.05.2018

Единственный правильный ответ - это НЕ ВОЗМОЖНО. OP четко определяет продолжительность времени, в течение которого они хотели бы держать сеанс открытым, в минутах. Это на самом деле невозможно. Сказать, что это возможно возможно, но только в течение ограниченного периода времени, что составляет часть времени, которое пытался сделать OP, не очень полезно.

Это невозможно по соображениям безопасности, о которых уже упоминалось.

person Elroy Jetson    schedule 08.05.2019