我正在关注如何向提供权限的用户发送推送通知的official instructions。
我可以按照所有说明操作直到此代码 appMap.set('finish.push.setup',function(app)){
if (app.isPermissionGranted()) {
const intent = app.getArgument('UPDATE_INTENT');
const userID = app.getArgument('UPDATES_USER_ID');
// code to save intent and userID in your db
app.tell("Ok, I'll start alerting you");
} else {
app.tell("Ok, I won't alert you");
}
}
app.getArgument('UPDATE_INTENT')
返回undefined
并检查JSON它看起来根本不包含意图但我只有一个意图配置了更新,所以我在代码中硬编码了它的名字。
我有一个userID,我在代码中硬编码了。
然后我按照说明获取服务帐户密钥,并在本地保存了JSON密钥。
然后开始讨厌的问题。
我使用npm install googleapis request --save
安装了所需的软件包并复制了代码
const google = require('googleapis');
const key = require(PATH_TO_KEY);
let jwtClient = new google.auth.JWT(
key.client_email, null, key.private_key,
['https://www.googleapis.com/auth/actions.fulfillment.conversation'],
null
);
jwtClient.authorize(function (err, tokens) {
// code to retrieve target userId and intent
let notif = {
userNotification: {
title: '',
},
target: {
userId: '',
intent: ''
}
}
request.post('https://actions.googleapis.com/v2/conversations:send', {
'auth': {
'bearer': tokens.access_token
},
'json': true,
'body': { 'customPushMessage': notif }
}, function(err,httpResponse,body) {
console.log(httpResponse.statusCode + ': ' + httpResponse.statusMessage)
});
});
我编辑了它,设置了我的密钥的正确路径,并使用固定值编辑了通知属性(在操作中配置了相同的标题,对话框流程返回的用户ID和我的意图名称)。
然后我注意到代码缺少const request = require('request');
和行
let jwtClient = new google.auth.JWT(
发出错误,所以我改为
let jwtClient = new google.google.auth.JWT(
我添加了console.log('body', body);
只是为了获取更多数据,我得到了
body { error:
{ code: 404,
message: 'App [my-project-id] was not found. The app preview may have expired.',
status: 'NOT_FOUND' } }
我做错了什么或文档还有其他错误我还要抓住吗?
答案 0 :(得分:2)
尝试在目标对象上添加区域设置:
let notif = {
userNotification: {
title: '',
},
target: {
userId: '',
intent: '',
locale: ''
}
}
对于语言环境,请按照here所述的IETF BCP-47语言代码进行操作。
默认情况下,Google操作使用en-US语言,并且我发现您使用的是不同语言代码,因此系统回复无法找到我们的应用程序版本。