Невозможно создать объект сеанса с actions-on-google-nodejs - PullRequest
0 голосов
/ 12 февраля 2019

целый день пытался создать объект сеанса для моего намерения с помощью actions-on-google-nodejs .К сожалению, безуспешно.

Я считаю, что эта библиотека никак не поддерживает сущности, что немного печально.Я прав?

Во время моего исследования я обнаружил этот удивительный пост , который объясняет, как создавать и управлять объектами через API, однако они используют nodejs-dialogflow

Рассматривал возможность использования обеих библиотек actions-on-google-nodejs и nodejs-dialogflow , но когда я ловил намерение с помощью actions-on-google-nodejs вторая библиотека ( nodejs-dialogflow ) не будет иметь представления о содержании и т. д.

После дальнейших исследований я обнаружил документацию API для сессий.entityTypes «Попробуйте этот API» прекрасно работает с Google OAuth 2.0, однако я не знаю, как авторизовать мой сервер (express.js) с помощью Google OAuth 2.0.Я пытался использовать ключ API, но все время получаю следующую ошибку:

{
  "error": {
    "code": 401,
    "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
  }

}

Есть предложения, как создать сущность сеанса для своего намерения?

Причина, по которой я пытаюсь использовать сущность сеанса, заключается в том, что сущность будет меняться каждые несколько дней и не хочет обновлять сущность в диалоговом потоке.Моя идея состоит в том, чтобы сохранить его в БД (firebase) и по намерению проверит, если оно совпадет с любым из значений.

1 Ответ

0 голосов
/ 12 февраля 2019

Имейте в виду, что объект Session Entity должен быть установлен на значения, которые вы хотите до , которые, как ожидается, будут сопоставлены в намерении.Вы, вероятно, должны делать это правильно, когда начинается действие, в вашем случае.Поэтому, если у вас есть намерение «Приветствие» и намерение «Опция состояния», где сущность «Опция» входит в намерение «Опция состояния», вы должны обновить «Опцию» в намерении «Добро пожаловать».Вы не можете сделать это в намерении «State Option», потому что оно должно уже соответствовать Entity.

Две библиотеки делают совершенно разные вещи и могут хорошо работать вместе.Вам нужно будет получить путь сеанса из исходного тела запроса, которое вы можете получить из conv.request, используя библиотеку aog, и путь к сущности, который вам нужно каким-либо образом установить.

Библиотека nodejs-dialogflow - это просто оболочка вокруг REST API, которую вы также нашли (на самом деле, вероятно, около эквивалента gRPC, но это не имеет значения).Однако важно то, что он преобразует секретный ключ, полученный от учетной записи службы, в токен доступа, который необходимо отправлять при каждом запросе.Если вы не знакомы с реализацией Google OAuth 2, это может упростить ситуацию, , хотя, безусловно, можно сделать это самостоятельно .

Наконец, пока идея здравая ибудет работать, помните, что это займет некоторое время во время намерения и что пользователь ожидает ответа.Поскольку эти данные будут обновляться нечасто и для всех, вы можете использовать подобный API для периодического изменения сущности.Этот процесс может быть вызван тем, что вы запускаете из запланированного задания (cron), и у вас есть возможность запустить его вручную, если вам нужно.

...