Не удается получить желаемый результат в onQuery на Google Home - PullRequest
0 голосов
/ 23 октября 2018

Что не так со следующим ответом, когда я звоню onQuery в Google Home?

Response {
  "status": 200,
  "headers": {
    "content-type": "application/json;charset=utf-8"
  },
  "body": {
    "requestId": "3400750371404214251",
    "payload": {
      "devices": {
        "00124B001856E002:01": {
          "on": "false",
          "online": "true"
        }
      }
    }
  }
}

Код выглядит следующим образом: (Я использую следующий код, который генерирует выходной ответ, как показано выше.)

const queryCloud = (deviceId) => requestAPI(...)
  .then((data) => {
    let result = JSON.parse(data);
    console.log('****** DEVICE STATE ****** ',result);
    var deviceState = result.device_status;

    if(deviceState ==="ON"){
      deviceState = 'true';

    }else{
      deviceState = 'false';

    }
    console.log('****QUERY CLOUD****',deviceState);
    return {
        on: deviceState,
        online:true,
      };

  });



const queryDevice = (deviceId) => queryCloud(deviceId).then((data) => ({

  on: data.on,
  online:data.online,

}));

app.onQuery((body) => {
  const {requestId} = body;
  const payload = {
    devices: {},
  };
  const queryPromises = [];
  for (const input of body.inputs) {
    for (const device of input.payload.devices) {
      const deviceId = device.id;
      queryPromises.push(queryDevice(deviceId)
        .then((data) => {
          // Add response to device payload
          console.log('*****',data);
          payload.devices[deviceId] = data;
        }
        ));
    }
  }
  // Wait for all promises to resolve
  return Promise.all(queryPromises).then((values) => ({
    requestId: requestId,
    payload: payload,
  })
  );

});

Кажется, все хорошо.Даже значение device.on также допустимо, но когда я говорю, включено ли имя_устройства?Я получил ответ, извиняюсь, что не могу добраться до AC прямо сейчас.

...