Намерение входа в систему в настоящее время не работает, как ясно объяснено в документации, это просто то, что вы можете использовать для тестирования в эмуляторе, но оно недоступно в рабочей среде.
В моем случае я использую привязку учетной записи, и срок действия моего токена истекает через один день, поэтому, если пользователь не взаимодействует с помощником, токен больше не будет действительным. Затем, если токен окажется недействительным на веб-узле, я хочу отправить обратно «пожалуйста, снова свяжите свою учетную запись» помощнику с веб-узла.
Существует метод app.askForSignIn();
, который похож на то, что мне нужно, но похоже, что он недоступен для Dialogflow и доступен только для SDK.
Итак, что я сделал:
- Сделать намерение в Dialogflow с именем
actions.intent.SIGN_IN
и добавить к нему событиеactions_intent_SIGN_IN
- Когда к вебхуку приходит любой запрос, я проверяю токен, затем, если я сталкиваюсь с недопустимым токеном, я вызываю
app.askForSignIn();
Что происходит:
- Приложение только что покинуло беседу, например: тестовое приложение покинуло беседу.
- Когда я снова говорю «поговорите с тестовым приложением», оно ведет себя так, как будто учетная запись связана, и не запрашивает привязку учетной записи, пока я вручную не перезагрузлю все приложение с помощью кнопки сброса из тестовой консоли.
Обновление:
Я попытался использовать фрагмент кода из документа (https://developers.google.com/actions/reference/nodejs/AssistantApp#askForSignIn), и он тоже не работает, вот ответ от симулятора, когда я вызываю app.askForSignIn();
из вебхука
ok google ask my test app to show me attendance
, и он возвращается с4 are present out of
и все все работает нормально в течение одного часа, но через час срок действия токена истекает, и когда и когда я говорюok google ask my test app to show me attendance
, он терпит неудачу, помощник не понимает, что я больше не аутентифицирован, и продолжаю использовать тот же токен, и в результате никогда не отвязать учетную запись - person Inzamam Malik   schedule 24.10.2017