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中显示每个意图的屏幕截图吗?培训短语和活动是最重要的部分,我已经更新了!