0

我正在处理报告状态。我使用 java 作为我的服务器语言。我能够成功验证用户身份。我的智能开关具有开/关特性。除报告状态外,一切正常。我不清楚。

作为 node.js 和 google home 智能操作的新手,我有以下查询:

  1. 必须在哪里实施报告状态?在 node.js(action) 还是服务器端?
  2. 是否有任何示例代码可供我参考学习并遵循该过程?
4

2 回答 2

0

报告状态应该在您的服务器上实现,因为它确实需要一个您可能不想公开泄露的服务密钥。(不确定你的 Node.js 与 Java 相比在哪里)

除了该指南之外,它还可以在任何允许您将状态发送到 Homegraph 的地方实施。

查看示例代码的好地方是使用 Node.js 编写的 codelab 它展示了如何使用该actions-on-google库来执行报告状态(Java 没有库)。

const postData = {
  requestId: 'ff36a3cc', /* Any unique ID */
  agentUserId: '123', /* Hardcoded user ID */
  payload: {
    devices: {
      states: {
        /* Report the current state of our washer */
        [event.params.deviceId]: {
          on: snapshotVal.OnOff.on,
          isPaused: snapshotVal.StartStop.isPaused,
          isRunning: snapshotVal.StartStop.isRunning,
        },
      },
    },
  },
};

return app.reportState(postData)
  .then((data) => {
    console.log('Report state came back');
    console.info(data);
  });
于 2018-10-31T19:56:51.760 回答
0

将“上下文”添加到 onWrite((event,context) 和 [context.params.deviceId]

/**
 * Send a REPORT STATE call to the homegraph when data for any device id
 * has been changed.
 */
exports.reportstate = functions.database.ref('/{deviceId}').onWrite((event,context) => {
  console.info('Firebase write event triggered this cloud function');

  const snapshotVal = event.after.val();

  const postData = {
    requestId: 'ff36a3cc', /* Any unique ID */
    agentUserId: '123', /* Hardcoded user ID */
    payload: {
      devices: {
        states: {
          /* Report the current state of our washer */
          [context.params.deviceId]: {
            on: snapshotVal.OnOff.on,
          },
        },
      },
    },
  };

  return app.reportState(postData)
    .then((data) => {
      console.log('Report state came back');
      console.info(data);
    });
});
于 2019-04-15T22:27:53.863 回答