Signin.status不会改为'OK'

问题描述 投票:1回答:1

我想让人们登录我的Google Action。找到示例代码,尝试过但我无法让它工作。 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。

图片:

概观

意图0

意图1

意图2

dialogflow actions-on-google google-signin
1个回答
0
投票

你大部分时间都在正确的轨道上,但看起来有一些问题可能会导致你出现问题:

  • 意图1永远不会被触发,因为它期待Google Assistant Sign In事件。只有在用户完成登录过程后才会触发此事件。由于Intent Handler中的代码应该启动登录过程,因此永远不会调用它。
  • 同样,Intent 2没有此事件。因此登录完成时不会触发。此外,没有为每次调用设置signin参数 - 仅适用于登录完成时的调用。

如果您移动处理事件的位置,您应该获得更好的结果。

© www.soinside.com 2019 - 2024. All rights reserved.