কীভাবে স্মার্ট হোম অ্যাকশন তৈরি করতে হয় তা শেখার নতুন গন্তব্য Google হোম ডেভেলপার সেন্টারে স্বাগতম। দ্রষ্টব্য: আপনি অ্যাকশন কনসোলে নির্মাণ কাজ চালিয়ে যাবেন।

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

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

ব্যবহারকারীরা যখন কোনো ডিভাইসের বর্তমান অবস্থা জানতে 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
        }
      }
    }
  }
}
Node.js
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 intents হ্যান্ডেল

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"
      }
    ]
  }
}
Node.js
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 জন্য, আরও বিশদ বিবরণের জন্য ত্রুটি এবং ব্যতিক্রম এবং ত্রুটি এবং ব্যতিক্রমগুলি পরিচালনা করুন দেখুন৷