У вас все в основном правильно. Давайте посмотрим на несколько вещей, которые вы говорите или спрашиваете.
Почему conv.data
не сохраняет для следующего хода?
Это зависит от того, что вы подразумеваете под «поворотом». conv.data
сохраняется во время одного разговора - с момента, когда ваше Действие вызывается, пока ваше действие не «закроет микрофон» с помощью conv.close()
или его эквивалента. AoG поддерживает это как последовательную модель разговора.
(Есть некоторые ошибки, когда вы используете медиа-ответ и воспроизводите очень длинный аудиофайл. Но это исключения.)
Реализован ли conv.data
с использованием контекстов Dialogflow?
Если вы используете AoG с Dialogflow - да.
Вы можете использовать conv.data
с Action SDK, и он не использует контексты Dialogflow.
Но тогда не истечет ли он, когда контекст истечет?
Да и нет. Контекст для conv.data
создается как длительный контекст (срок службы 99), поэтому пройдет некоторое время, прежде чем контекст истечет. Библиотека также обновляет контекст каждый ход, поэтому сохраняет срок жизни на уровне 99 и сбрасывает 20-минутный таймер для контекста.
Для conv.user.storage
, если пользователь сейчас использует приложение, а затем кто-то в том же разговоре заходит, чтобы проверить его, очищает ли оно данные?
Нет. Идентификация пользователя определяется, когда пользователь произносит горячее слово - «ОК, Google» или «Привет, Google». После этого несколько пользователей могут говорить во время разговора, и устройство рассматривает его как одну и ту же учетную запись.
Помощник не пытается выяснить, кто что говорит во время разговора - только на начальном этапе.
Таким образом, если он идентифицирует пользователя в начале разговора, он использует объект storage
. Если это не так, он создает новый объект storage
, который удаляется по окончании разговора (когда он закрывает микрофон после conv.close()
).