我想让人们登录我的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
你大部分时间都在正确的轨道上,但看起来有一些问题可能会导致你出现问题:
Google Assistant Sign In
事件。只有在用户完成登录过程后才会触发此事件。由于Intent Handler中的代码应该启动登录过程,因此永远不会调用它。signin
参数 - 仅适用于登录完成时的调用。如果您移动处理事件的位置,您应该获得更好的结果。