Как сохраненный разговор работает в Dialogflow? - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь понять, как работает conv.data и conv.user.storage. Насколько я понимаю, conv.data используется для временного хранения, а conv.user.storage дольше - для разговоров. Когда я проводил локальное тестирование, я заметил, что conv.data на самом деле не сохраняет для следующего хода, а только тот же. Так это связано с контекстом?

С другой стороны, пользовательское хранилище довольно простое: вы сохраняете данные и храните их в пользователе, и их объем ограничен 10 000 байтов, но это все.

Но что я не понимаю, так это часть:

Когда помощник не может сопоставить личность пользователя, содержимое хранилища пользователя очищается в конце диалога. Примеры случаев, когда помощник не может сопоставить личность пользователя:

  • голосовое сопоставление установлено, и совпадение отсутствует.

  • Пользователь отключил личные данные.

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

TLDR - Связан ли контекст с conv.data, и по истечении срока действия контекста conv.data удаляется? - Данные вашего приложения удаляются, когда другой пользователь пытается общаться в вашей учетной записи?

1 Ответ

0 голосов
/ 15 января 2019

У вас все в основном правильно. Давайте посмотрим на несколько вещей, которые вы говорите или спрашиваете.

Почему 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()).

...