为什么我找不到404'应用程序[my-project-id]。应用预览可能已过期。在Google上的操作上尝试推送通知?

时间:2018-04-06 10:35:49

标签: push-notification actions-on-google dialogflow

我正在关注如何向提供权限的用户发送推送通知的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' } }

我做错了什么或文档还有其他错误我还要抓住吗?

1 个答案:

答案 0 :(得分:2)

尝试在目标对象上添加区域设置

   let notif = {
    userNotification: {
      title: '',
    },
    target: {
      userId: '',
      intent: '',
      locale: ''
    }
  }

对于语言环境,请按照here所述的IETF BCP-47语言代码进行操作。

默认情况下,Google操作使用en-US语言,并且我发现您使用的是不同语言代码,因此系统回复无法找到我们的应用程序版本。