Signin.status не изменится на «ОК» - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь позволить людям войти в мое действие Google. Нашел пример кода, попробовал, но я не могу заставить его работать. Signin.status не определен в журналах.

Что я делаю не так?

'use strict';

const {dialogflow, Carousel, BrowseCarousel, BrowseCarouselItem, 
Image, SimpleResponse, Confirmation, Option, option, Suggestions, 
SignIn} = require('actions-on-google');
const functions = require('firebase-functions');

const app = dialogflow({
    clientId: '<MYCLIENTID>',
  });





//-----------------------INTENT 0: WELCOME -------------------------------------------
app.intent("Default Welcome Intent", (conv, input) => {

conv.add('Welcome. Sign in? ')
})


//-----------------------INTENT 1: Welcome -> yes  -------------------------------------------
app.intent('actions.intent.MAIN', conv => {
    conv.add(new SignIn('To get your data.'))
  })


//-----------------------INTENT 2: LINKING CHECK -------------------------------------------
app.intent("Linking Check", (conv, params, signin) => {
    console.log(signin + ' ' + signin.status )
    if (signin.status !== 'OK') {
        conv.close('It's not possible to use this app without signing in. Goodbye!');
    } else {
    const payload = conv.user.profile.payload;
    conv.add(`I got your account details, ${payload.name}. What do you want to do next?`);
    }
})


exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

Я бы ожидал нормально работающего потока входа. Но вместо этого помощник не разрешает мне войти в намерение 1, но повторяет намерение 0 после ответа «да» на приветственное намерение.

Если я вызываю намерение 2, оно предоставляет мне: «Невозможно использовать это приложение без входа в систему. До свидания!», Поэтому signin.status не «OK». В логах указывается signin.status, если «undefined».

Изображения:

Обзор Overview

Намерение 0 Intent 0 Intent 0

Намерение 1 Intent 1 Intent 1

Намерение 2 Intent 2

1 Ответ

0 голосов
/ 10 апреля 2019

Вы в основном на правильном пути, но, похоже, есть несколько проблем, которые могут вызывать у вас проблемы:

  • Intent 1 никогда не срабатывает, потому что он ожидает Google Assistant Sign Inсобытие.Это событие вызывается только после , когда пользователь проходит процесс входа в систему.Поскольку предполагается, что код в Intent Handler запускает процесс входа в систему, он никогда не вызывается.
  • Аналогично, в Intent 2 нет этого события.Так что это не срабатывает, когда заканчивается вход.Кроме того, параметр signin не устанавливается для каждого вызова - только для того, когда заканчивается вход.

Если вы переместитесь туда, где обрабатывается событие, вы должны получить результаты, которые работаютнемного лучше.

...