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
参数并不是为每次调用都设置的——只是为登录完成时的那个设置。
如果您移动到处理事件的地方,您应该会得到更好的结果。
我正在尝试让人们登录我的 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
参数并不是为每次调用都设置的——只是为登录完成时的那个设置。
如果您移动到处理事件的地方,您应该会得到更好的结果。