Прежде всего, привет!
Ваша первоначальная мысль о сохранении данных в UserStorage может быть правильной в зависимости от вашего варианта использования.Позвольте мне уточнить:
Два способа сохранения данных с действиями в клиентской библиотеке Google Node.JS
Хранение данных в разговоре
Вы можете использовать conv.data.name = 'Joel'
для сохраненияданные между поворотами разговора.Но эти данные не будут доступны в следующий раз, когда пользователь вернется.
Постоянное хранение данных (пока пользователь позволяет это)
Именно здесь userStorage вступает в игру.Вы можете использовать conv.user.storage.name = 'Joel'
, чтобы помнить имя пользователя каждый раз, когда он возвращается.Помните, что для этого типа постоянного хранилища может потребоваться согласие пользователя в зависимости от того, где он живет.
Юридическое примечание: Получение согласия до доступа к userStorage.В некоторых странах действуют правила, согласно которым разработчики должны получить согласие пользователя, прежде чем он сможет получить доступ или сохранить определенную информацию (например, личную информацию) в хранилище пользователя.Если вы работаете в одной из этих стран и хотите получить доступ к этой информации или сохранить ее в userStorage, вы должны использовать помощник по подтверждению, чтобы запросить согласие у пользователя и получить согласие, прежде чем вы сможете начать хранить такую информацию в userStorage.
Вам также необходимо объяснить данные, которые вы сохраняете, в своей Политике конфиденциальности.
Что касается вашего конкретного случая использования, хранение данных, которые не изменятся (например, имя), вuserStorage - гораздо лучший метод.Поскольку, если вы сохраните его только для одного разговора, вам нужно будет снова запросить разрешение в следующий раз.
Это должно охватывать ваши основные потребности сохранения данных на платформе.Однако, если вам нужно более сложное решение для управления состоянием, вы можете проверить Контексты диалогового окна .
РЕДАКТИРОВАТЬ: Я упустил из виду, что вы ужеиспользуя контексты.Но ответ остается в силе: вам не нужно использовать контексты, если все, что вы хотите сделать, это сохранить данные во время разговора.
Но я думаю, что причина вашей проблемы в том, что вы не устанавливаете или не получаете параметры контекста правильно.Взгляните на примеры здесь и здесь :
Метод context.set()
получает три параметра;имя, продолжительность жизни и параметры.Вы передаете только имя контекста в своем коде.
И, использование только метода contexts.get()
недостаточно для чтения параметров контекста.Вам нужно прочитать их так:
app.intent('Tell Greeting', conv => {
const context1 = conv.contexts.get('context1')
const { color, num } = context1.parameters
})
Но я повторяю свою первоначальную мысль.Вы не должны делать вещи настолько сложными для себя, если вам действительно не нужно.Попробуйте использовать conv.data
и conv.user.storage
, если это возможно.