Signin.status 不会变成 'OK'

Signin.status won't change to 'OK'

我正在尝试让人们登录我的 Google 操作。找到了示例代码,试过了,但我无法让它工作。 Signin.status 在日志中是 'undefined'。

我做错了什么?

'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,而是在回复 'yes' 欢迎意图后重复意图 0。

如果我调用意图 2,它会向我提供:“不登录就无法使用此应用程序。再见!”,因此 signin.status 不是 'OK'。 在日志中,signin.status if 'undefined'.

图片:

概览

意向 0

意向 1

意图 2

您的方向基本正确,但似乎有一些问题可能会导致您遇到问题:

  • Intent 1 从未被触发,因为它期待 Google Assistant Sign In 事件。此事件仅在用户完成登录过程 后触发。由于 Intent Handler 中的代码应该启动 登录过程,因此永远不会调用它。
  • 同样,Intent 2 也没有这个事件。所以它不会在登录完成时触发。此外,signin 参数并不是为每次调用都设置的——只是为登录完成时的那个设置。

如果您移动到处理事件的地方,您应该会得到更好的结果。