প্রশ্ন এবং সঞ্চালন

যখন ব্যবহারকারীরা কোনও ডিভাইসের বর্তমান অবস্থা জানতে Google Assistant এর সাথে ইন্টারঅ্যাক্ট করে, তখন আপনার পূরণ একটি action.devices.QUERY ইন্টেন্ট পায় যার মধ্যে ডিভাইস আইডির একটি তালিকা থাকে (যেমনটি আপনার SYNC প্রতিক্রিয়া দ্বারা সরবরাহ করা হয়েছে)। যখন ব্যবহারকারীরা আপনার ডিভাইস নিয়ন্ত্রণ করার জন্য Assistant কে কমান্ড পাঠায় তখন আপনার পূরণ একটি action.devices.EXECUTE ইন্টেন্ট পায়।

QUERY ইন্টেন্টগুলি পরিচালনা করুন

আপনার QUERY প্রতিক্রিয়াতে অনুরোধ করা ডিভাইসগুলির দ্বারা সমর্থিত প্রতিটি বৈশিষ্ট্যের জন্য অবস্থার একটি সম্পূর্ণ সেট অন্তর্ভুক্ত রয়েছে।

অনুরোধ
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "inputs": [{
      "intent": "action.devices.QUERY",
      "payload": {
        "devices": [{
          "id": "123",
          "customData": {
            "fooValue": 74,
            "barValue": true,
            "bazValue": "foo"
          }
        }, {
          "id": "456",
          "customData": {
            "fooValue": 12,
            "barValue": false,
            "bazValue": "bar"
          }
        }]
      }
    }]
}
JSON সম্পর্কে
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "123": {
        "on": true,
        "online": true
      },
      "456": {
        "on": true,
        "online": true,
        "brightness": 80,
        "color": {
          "name": "cerulean",
          "spectrumRGB": 31655
        }
      }
    }
  }
}
নোড.জেএস
const {smarthome} = require('actions-on-google');
const app = smarthome();
// ...
app.onQuery((body, headers) => {
  // TODO Get device state
  return {
    requestId: body.requestId,
    payload: {
      devices: {
        123: {
          on: true,
          online: true
        },
        456: {
          on: true,
          online: true,
          brightness: 80,
          color: {
            name: "cerulean",
            spectrumRGB: 31655
          }
        }
      }
    }
  };
});
জাভা
@NotNull
@Override
public QueryResponse onQuery(@NotNull QueryRequest queryRequest, @Nullable Map<?, ?> map) {
  QueryResponse.Payload payload = new QueryResponse.Payload();
  payload.setDevices(
      new HashMap<String, Map<String, Object>>() {
        {
          put(
              "123",
              new HashMap<String, Object>() {
                {
                  put("on", true);
                  put("online", true);
                }
              });
          put(
              "456",
              new HashMap<String, Object>() {
                {
                  put("on", true);
                  put("online", true);
                  put("brightness", 80);
                  put(
                      "color",
                      new HashMap<String, Object>() {
                        {
                          put("name", "cerulean");
                          put("spectrumRGB", 31655);
                        }
                      });
                }
              });
        }
      });

  return new QueryResponse(queryRequest.getRequestId(), payload);
}

আরও তথ্যের জন্য, QUERY ইন্টেন্ট রেফারেন্স ডকুমেন্টেশন দেখুন।

EXECUTE ইন্টেন্টগুলি পরিচালনা করুন

QUERY এর মতোই, একটি একক ইন্টেন্ট একাধিক ডিভাইস আইডি লক্ষ্য করতে পারে। একটি একক EXECUTE ইন্টেন্টে একাধিক ডিভাইসকে দেওয়া একাধিক স্বতন্ত্র কমান্ড থাকতে পারে। উদাহরণস্বরূপ, একটি ট্রিগার করা ইন্টেন্ট একাধিক লাইটের উজ্জ্বলতা এবং রঙ উভয়ই সেট করতে পারে, অথবা একাধিক লাইটকে আলাদা রঙে সেট করতে পারে। এক্সিকিউট করার পরে আপনার EXECUTE প্রতিক্রিয়া ডিভাইসের নতুন অবস্থা ফিরিয়ে আনবে।

ব্যবহারকারীর ডিভাইসের অবস্থা পরিবর্তন হলে Report State ব্যবহার করুন। উদাহরণস্বরূপ, EXECUTE ইনটেন্ট বা স্থানীয় অবস্থার পরিবর্তনের কারণে (যেমন ম্যানুয়ালি লাইট সুইচ উল্টানো)। এটি Google Home Graph আপনার ক্লাউড পরিষেবার সাথে সিঙ্ক্রোনাইজ করে রাখে।

অনুরোধ
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "inputs": [{
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [{
          "devices": [{
            "id": "123",
            "customData": {
              "fooValue": 74,
              "barValue": true,
              "bazValue": "sheepdip"
            }
          }, {
            "id": "456",
            "customData": {
              "fooValue": 36,
              "barValue": false,
              "bazValue": "moarsheep"
            }
          }],
          "execution": [{
            "command": "action.devices.commands.OnOff",
            "params": {
              "on": true
            }
          }]
        }]
      }
    }]
}
JSON সম্পর্কে
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "on": true,
          "online": true
        }
      },
      {
        "ids": [
          "456"
        ],
        "status": "ERROR",
        "errorCode": "deviceTurnedOff"
      }
    ]
  }
}
নোড.জেএস
const {smarthome} = require('actions-on-google');
const app = smarthome();
// ...
app.onExecute((body, headers) => {
  // TODO Send command to device
  return {
    requestId: body.requestId,
    payload: {
      commands: [{
        ids: ["123"],
        status: "SUCCESS",
        states: {
          on: true,
          online: true
        }
      }, {
        ids: ["456"],
        status: "ERROR",
        errorCode: "deviceTurnedOff"
      }]
    }
  };
});
জাভা
@NotNull
@Override
public ExecuteResponse onExecute(
    @NotNull ExecuteRequest executeRequest, @Nullable Map<?, ?> map) {
  ExecuteResponse.Payload payload = new ExecuteResponse.Payload();

  payload.setCommands(
      new Commands[] {
        new Commands(
            new String[] {"123"},
            "SUCCESS",
            new HashMap<String, Object>() {
              {
                put("on", true);
                put("online", true);
              }
            },
            null,
            null),
        new Commands(new String[] {"456"}, "ERROR", null, "deviceTurnedOff", null)
      });
  return new ExecuteResponse(executeRequest.getRequestId(), payload);
}

আরও তথ্যের জন্য, EXECUTE ইন্টেন্ট রেফারেন্স ডকুমেন্টেশন দেখুন।

স্থিতির প্রতিক্রিয়া

আপনার QUERY এবং EXECUTE প্রতিক্রিয়াগুলিতে অনুরোধের ফলাফল রিপোর্ট করার জন্য একটি status ক্ষেত্র অন্তর্ভুক্ত থাকে। প্রতিটি স্থিতি প্রতিক্রিয়া নিম্নলিখিত মানগুলির মধ্যে একটি প্রদান করতে পারে:

  • SUCCESS : অনুরোধটি সফল হয়েছে।
  • OFFLINE : টার্গেট ডিভাইসটি অফলাইনে আছে অথবা অন্যথায় পৌঁছানো যাচ্ছে না।
  • EXCEPTIONS : অনুরোধের সাথে একটি সমস্যা বা সতর্কতা যুক্ত রয়েছে।
  • ERROR : সংশ্লিষ্ট errorCode এর সাথে অনুরোধটি ব্যর্থ হয়েছে।

ERROR এবং EXCEPTIONS এর জন্য, আরও বিস্তারিত জানার জন্য Handle errors and exceptions এবং Errors and exceptions দেখুন।