Dialogflow es 登录状态赢得';t更改为';OK';

Dialogflow es 登录状态赢得';t更改为';OK';,dialogflow-es,actions-on-google,google-signin,Dialogflow Es,Actions On Google,Google Signin,我试图让人们登录到我的谷歌行动。找到了示例代码,并尝试了它,但无法使其正常工作。登录状态在日志中为“未定义” 我做错了什么 'use strict'; const {dialogflow, Carousel, BrowseCarousel, BrowseCarouselItem, Image, SimpleResponse, Confirmation, Option, option, Suggestions, SignIn} = require('actions-on-google');

我试图让人们登录到我的谷歌行动。找到了示例代码,并尝试了它,但无法使其正常工作。登录状态在日志中为“未定义”

我做错了什么

'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);
“严格使用”;
const{dialogflow,Carousel,BrowseCarousel,BrowseCarouselItem,
图像,简单响应,确认,选项,选项,建议,
SignIn}=require('actions-on-google');
const functions=require('firebase-functions');
const app=dialogflow({
客户端ID:“”,
});
//-----------------------意向0:欢迎-------------------------------------------
app.intent(“默认欢迎意图”,(conv,input)=>{
conv.add('欢迎。登录?')
})
//-----------------------意图1:欢迎->是-------------------------------------------
app.intent('actions.intent.MAIN',conv=>{
conv.add(新登录('获取您的数据'))
})
//-----------------------意图2:链接检查-------------------------------------------
应用意图(“链接检查”(conv、params、signin)=>{
控制台日志(登录+“”+登录状态)
如果(登录状态!=“确定”){
conv.close('不登录就无法使用此应用。再见!');
}否则{
const payload=conv.user.profile.payload;
conv.add(`I获得了您的帐户详细信息,${payload.name}。接下来要做什么?`);
}
})
exports.dialogflowFirebaseFulfillment=functions.https.onRequest(应用程序);
我希望一个正常工作的信号流。但是,助手不允许我访问意图1,而是在对欢迎意图回答“是”后重复意图0

如果我调用intent 2,它会向我提供:“不登录就无法使用此应用程序。”。再见,所以登录状态不是“OK”。 在日志中,如果“未定义”,则为sign.status

图片:

概述

意图0

意图1

意图2

您基本上是在正确的轨道上,但似乎有一些问题可能会给您带来问题:

  • 从未触发意图1,因为它预期出现
    谷歌助手登录事件。此事件仅在用户完成登录过程后触发。由于意图处理程序中的代码应该启动登录过程,因此永远不会调用它
  • 类似地,意图2也没有此事件。因此,在登录完成时不会触发它。此外,
    signin
    参数并不是为每个调用都设置的,只是为登录完成时的调用设置的

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

您基本上走在正确的轨道上,但似乎有一些问题可能会给您带来问题:

  • 从未触发意图1,因为它预期出现
    谷歌助手登录事件。此事件仅在用户完成登录过程后触发。由于意图处理程序中的代码应该启动登录过程,因此永远不会调用它
  • 类似地,意图2也没有此事件。因此,在登录完成时不会触发它。此外,
    signin
    参数并不是为每个调用都设置的,只是为登录完成时的调用设置的

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

您能在Dialogflow UI中显示每个意图的屏幕截图吗?培训短语和活动是最重要的部分,我已经更新了!您可以在Dialogflow UI中显示每个意图的屏幕截图吗?培训短语和活动是最重要的部分,我已经更新了!