প্রিভিউ API অ্যাক্সেস করুন

এই পৃষ্ঠাটি বর্ণনা করে যে আপনি কীভাবে Classroom API পূর্বরূপ বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারেন এবং পূর্বরূপ সংস্করণ নির্দিষ্ট করতে পারেন৷

স্থিতিশীল v1 API এর সাথে তুলনা করার সময় পূর্বরূপ বৈশিষ্ট্যগুলি ব্যবহার করার সময় তিনটি বিবেচ্য বিষয় হল:

  1. কল করা Google ক্লাউড প্রোজেক্টকে অবশ্যই Google Workspace ডেভেলপার প্রিভিউ প্রোগ্রামে নথিভুক্ত করতে হবে এবং Google-এর তালিকাভুক্ত অনুমতি দিতে হবে।
  2. প্রারম্ভিক অ্যাক্সেস বা পূর্বরূপ প্রোগ্রামগুলিতে API বৈশিষ্ট্যগুলি স্ট্যান্ডার্ড ক্লায়েন্ট লাইব্রেরিতে প্রকাশ করা হয় না এবং HTTP-তে ডিফল্টরূপে অ্যাক্সেসযোগ্য নাও হতে পারে।
  3. যে কোনো সময়ে প্রিভিউতে একাধিক API স্টেট বা সংস্করণ থাকতে পারে।

ক্লায়েন্ট লাইব্রেরিতে পূর্বরূপ বৈশিষ্ট্যগুলি সক্ষম করুন৷

ক্লাসরুম API ব্যবহার করার জন্য একটি সাধারণ বিকল্প হল একটি ক্লায়েন্ট লাইব্রেরি। তিন ধরনের ক্লায়েন্ট লাইব্রেরি আছে:

  1. গতিশীলভাবে উত্পন্ন ক্লায়েন্ট লাইব্রেরি
  2. Google-প্রদত্ত স্ট্যাটিক ক্লায়েন্ট লাইব্রেরি
  3. আপনার নিজস্ব কাস্টম ক্লায়েন্ট লাইব্রেরি

গতিশীলভাবে জেনারেট করা বা Google-প্রদত্ত স্ট্যাটিক লাইব্রেরি ব্যবহার করা হল API ব্যবহার করার প্রস্তাবিত উপায়। আপনার নিজের লাইব্রেরি তৈরি করতে হলে বিল্ড ক্লায়েন্ট লাইব্রেরি দেখুন। আপনার নিজস্ব লাইব্রেরি তৈরি করা এই গাইডের সুযোগের বাইরে, তবে প্রিভিউ লেবেল এবং ডিসকভারিতে তাদের ভূমিকা সম্পর্কে জানতে আপনার ডায়নামিক লাইব্রেরি বিভাগটি পর্যালোচনা করা উচিত।

গতিশীল লাইব্রেরি

পাইথনের মতো ভাষায় লাইব্রেরিগুলি ডিসকভারি পরিষেবা থেকে একটি ডিসকভারি ডকুমেন্ট ব্যবহার করে রানটাইমে ক্লায়েন্ট লাইব্রেরি তৈরি করে।

একটি ডিসকভারি ডকুমেন্ট হল একটি মেশিন-পাঠযোগ্য স্পেসিফিকেশন যা REST API-এর বর্ণনা এবং ব্যবহার করার জন্য। এটি ক্লায়েন্ট লাইব্রেরি, IDE প্লাগইন এবং Google API-এর সাথে ইন্টারঅ্যাক্ট করে এমন অন্যান্য টুল তৈরি করতে ব্যবহৃত হয়। একটি পরিষেবা একাধিক আবিষ্কারের নথি প্রদান করতে পারে।

Classroom API পরিষেবার জন্য আবিষ্কারের নথি ( classroom.googleapis.com ) নিম্নলিখিত শেষ পয়েন্টে পাওয়া যাবে:

https://classroom.googleapis.com/$discovery/rest?labels=PREVIEW_LABEL&version=v1&key=API_KEY

পূর্বরূপ API-এর সাথে কাজ করার জন্য গুরুত্বপূর্ণ পার্থক্য হল উপযুক্ত label নির্দিষ্ট করা। ক্লাসরুমের সর্বজনীন পূর্বরূপগুলির জন্য সেই লেবেলটি হল DEVELOPER_PREVIEW

পাইথন লাইব্রেরি তৈরি করতে এবং প্রিভিউ পদ্ধতির সাহায্যে ক্লাসরুম পরিষেবা চালু করতে, আপনি উপযুক্ত পরিষেবা, শংসাপত্র এবং লেবেল সহ ডিসকভারি URL নির্দিষ্ট করতে পারেন:

classroom_service_with_preview_features = googleapiclient.discovery.build(
  serviceName='classroom',
  version='v1',
  credentials=credentials,
  static_discovery=False,
  discoveryServiceUrl='https://classroom.googleapis.com/$discovery/rest?labels=DEVELOPER_PREVIEW&key=API_KEY)'

প্রতিটি ভাষার বিশদ বিবরণের জন্য পৃথক Google API ক্লায়েন্ট লাইব্রেরি ডকুমেন্টেশন দেখুন।

স্ট্যাটিক লাইব্রেরি

Java, Node.js, PHP, C# এবং Go-এর মতো ভাষায় ক্লায়েন্ট লাইব্রেরি উৎস থেকে তৈরি করতে হবে। এই লাইব্রেরিগুলি আপনার জন্য সরবরাহ করা হয়েছে এবং পূর্বরূপ বৈশিষ্ট্যগুলি ইতিমধ্যেই অন্তর্ভুক্ত করা হয়েছে৷

সর্বজনীন প্রিভিউগুলির জন্য, ক্লাসরুম ক্লায়েন্ট লাইব্রেরিগুলি অন্যান্য ওয়ার্কস্পেস ডেভেলপার প্রিভিউ প্রোগ্রাম ক্লায়েন্ট লাইব্রেরির সাথে পাওয়া যেতে পারে। ব্যক্তিগত পূর্বরূপের জন্য, আপনার যদি স্ট্যাটিক লাইব্রেরি তৈরি করা প্রয়োজন হয় তবে আপনার Google পরিচিতির সাথে যোগাযোগ করুন।

স্ট্যান্ডার্ড ক্লায়েন্ট লাইব্রেরিগুলি আমদানি করার পরিবর্তে এই স্থানীয় লাইব্রেরিগুলি ব্যবহার করার জন্য আপনাকে আপনার সাধারণ নির্ভরতা কনফিগারেশন পরিবর্তন করতে হতে পারে, যেগুলির পূর্বরূপ বৈশিষ্ট্য নেই৷

উদাহরণস্বরূপ, Go ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে, স্থানীয় ডিরেক্টরি থেকে একটি মডিউল প্রয়োজনের জন্য আপনাকে আপনার go.mod ফাইলে replace নির্দেশিকা ব্যবহার করতে হবে:

module example.com/app

go 1.21.1

require (
    golang.org/x/oauth2 v0.12.0
    google.golang.org/api v0.139.0 // Classroom library is in here.
)

require (
  ...
)

// Use a local copy of the Go client library.
replace google.golang.org/api v0.139.0 => ../google-api-go-client

আরেকটি উদাহরণ হিসেবে, আপনি যদি Node.js এবং npm ব্যবহার করেন, তাহলে package.json এ স্থানীয় নির্ভরতা হিসেবে Node.js ক্লায়েন্ট লাইব্রেরি ডাউনলোড ( googleapis-classroom-1.0.4.tgz ) যোগ করুন :

{
  "name": "nodejs-classroom-example",
  "version": "1.0.0",
  ...
  "dependencies": {
    "@google-cloud/local-auth": "^2.1.0",
    "googleapis": "^95.0.0",
    "classroom-with-preview-features": "file:./googleapis-classroom-1.0.4.tgz"
  }
}

তারপর আপনার অ্যাপ্লিকেশনে, নিয়মিত নির্ভরতা ছাড়াও classroom-with-preview-features মডিউল প্রয়োজন, এবং সেই মডিউল থেকে classroom পরিষেবা চালু করুন:

const {authenticate} = require('@google-cloud/local-auth');
const {google} = require('googleapis');
const classroomWithPreviewFeatures = require('classroom-with-preview-features');

...

const classroom = classroomWithPreviewFeatures.classroom({
  version: 'v1',
  auth: auth,
});

...

একটি পূর্বরূপ API সংস্করণ নির্দিষ্ট করুন৷

আপনি স্ট্যাটিক বা ডাইনামিক লাইব্রেরি ব্যবহার করুন না কেন, প্রিভিউ ক্ষমতা সহ পদ্ধতিতে API কল করার সময় আপনাকে অবশ্যই পূর্বরূপ সংস্করণ নির্দিষ্ট করতে হবে।

বিভিন্ন উপলব্ধ সংস্করণ, এবং তাদের অন্তর্ভুক্ত বৈশিষ্ট্যগুলি ক্লাসরুম API রোডম্যাপে নথিভুক্ত করা হয়েছে। পদ্ধতি এবং ক্ষেত্রগুলির জন্য রেফারেন্স ডকুমেন্টেশনও বর্ণনা করে যে পদ্ধতি বা ক্ষেত্রটি কোন সংস্করণে উপলব্ধ।

অনুরোধে প্রিভিউ সংস্করণ ক্ষেত্র সেট করে একটি সংস্করণ নির্দিষ্ট করা হয়। উদাহরণস্বরূপ, Rubrics CRUD প্রিভিউ API দিয়ে একটি রুব্রিক তৈরি করতে, আপনি previewVersion V1_20231110_PREVIEW তে সেট করবেন ক্রিয়েট অনুরোধে:

rubric = service.courses().courseWork().rubrics().create(
            courseId=course_id,
            courseWorkId=coursework_id,
            # Specify the preview version. Rubrics CRUD capabilities are
            # supported in V1_20231110_PREVIEW and later.
            previewVersion="V1_20231110_PREVIEW",
            body=body
).execute()

আপনি কোন সংস্করণ ব্যবহার করছেন তা বুঝতে সাহায্য করার জন্য একটি পূর্বরূপ পদ্ধতি কলের সাথে যুক্ত সংস্থানগুলিতে কলে শুধুমাত্র-পঠন ক্ষেত্র হিসাবে ব্যবহৃত previewVersion রয়েছে৷ উদাহরণস্বরূপ, পূর্ববর্তী CREATE কলের প্রতিক্রিয়াটিতে V1_20231110_PREVIEW মান রয়েছে:

print(json.dumps(rubric, indent=4))
{
  "courseId": "123",
  "courseWorkId": "456",
  "creationTime": "2023-10-23T18:18:29.932Z",
  "updateTime": "2023-10-23T18:18:29.932Z",
  "id": "789",
  "criteria": [...],
  # The preview version used in the call that returned this resource.
  "previewVersion": "V1_20231110_PREVIEW",
  ...
}

HTTP অনুরোধ

এইচটিটিপির সাথে সরাসরি ক্লাসরুম API ব্যবহার করাও সম্ভব।

আপনি যদি ক্লায়েন্ট লাইব্রেরি ছাড়াই HTTP অনুরোধ করেন, তবে আপনাকে এখনও একটি পূর্বরূপ সংস্করণ নির্দিষ্ট করে পূর্বরূপ বৈশিষ্ট্যগুলি সক্ষম করতে হবে। এটি একটি X-Goog-Visibilities শিরোনাম সহ একটি label সেট করে এবং পূর্বোক্ত প্রিভিউ সংস্করণটিকে একটি কোয়েরি প্যারামিটার বা POST বডি ফিল্ড হিসাবে সেট করে করা হয় (উপযুক্ত পৃথক API রেফারেন্স ডকুমেন্টেশন দেখুন)৷ সর্বজনীন পূর্বরূপগুলির জন্য, লেবেলটি হল DEVELOPER_PREVIEW

উদাহরণস্বরূপ, নিম্নলিখিত কার্ল অনুরোধটি উপযুক্ত দৃশ্যমানতা লেবেল এবং পূর্বরূপ সংস্করণ সহ রুব্রিক্স পরিষেবাতে একটি তালিকা কল করে:

curl \
  'https://classroom.googleapis.com/v1/courses/COURSE_ID/courseWork/COURSE_WORK_ID/rubrics?key=API_KEY&previewVersion=V1_20231110_PREVIEW' \
  --header 'X-Goog-Visibilities: DEVELOPER_PREVIEW' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'Accept: application/json' \
  --compressed

আপনি অনুরোধের অংশে পূর্বরূপ সংস্করণটিও নির্দিষ্ট করতে পারেন, উদাহরণস্বরূপ যখন একটি POST অনুরোধ করা হয়:

curl --request PATCH \
  'https://classroom.googleapis.com/v1/courses/COURSE_ID/courseWork/COURSE_WORK_ID/rubrics/RUBRIC_ID?updateMask=criteria&key=API_KEY&previewVersion=V1_20231110_PREVIEW' \
  --header 'X-Goog-Visibilities: DEVELOPER_PREVIEW' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"criteria":"[...]"}' \
  --compressed

প্রতিটি HTTP অনুরোধের API REST ডকুমেন্টেশনে বর্ণনা করা হয়েছে।

Google Apps স্ক্রিপ্ট

Google Apps স্ক্রিপ্ট থেকে পূর্বরূপ API কল করা সম্ভব। যাইহোক, সাধারণ অ্যাপস স্ক্রিপ্ট ব্যবহারের থেকে কিছু পার্থক্য রয়েছে।

  1. আপনি ডেভেলপার প্রিভিউ প্রোগ্রামে নথিভুক্ত যেকোন Google ক্লাউড প্রকল্প ব্যবহার করতে আপনার স্ক্রিপ্ট কনফিগার করতে হবে।
  2. উন্নত পরিষেবাগুলি পূর্বরূপ পদ্ধতিগুলিকে সমর্থন করে না, তাই আপনাকে সরাসরি HTTP এর সাথে অনুরোধ করতে হবে৷
  3. পূর্ববর্তী HTTP বিভাগে বর্ণিত হিসাবে আপনাকে অবশ্যই একটি লেবেল এবং পূর্বরূপ সংস্করণ সরবরাহ করতে হবে।

Apps স্ক্রিপ্টের সাথে পরিচিত হতে এবং একটি মৌলিক প্রকল্প সেট আপ পেতে সংশ্লিষ্ট কুইকস্টার্ট দেখুন। তারপরে প্রিভিউ API কল করা শুরু করতে এই নির্দেশাবলী অনুসরণ করুন:

স্ক্রিপ্ট দ্বারা ব্যবহৃত ক্লাউড প্রকল্প পরিবর্তন করুন

প্রজেক্ট সেটিংস -এ, প্রজেক্ট পরিবর্তন করুন-এ ক্লিক করুন এবং আপনি যে প্রজেক্ট ডেভেলপার প্রিভিউ প্রোগ্রামে নথিভুক্ত করেছেন তার ক্লাউড প্রোজেক্ট আইডি লিখুন (ডিফল্টরূপে, অ্যাপস স্ক্রিপ্ট স্ক্রিপ্ট একটি জেনেরিক প্রকল্প ব্যবহার করে)। শুধুমাত্র নথিভুক্ত প্রকল্প পূর্বরূপ পদ্ধতি কল করতে পারেন.

HTTP অনুরোধ কনফিগার করুন

এরপরে, আপনি যে পদ্ধতিতে এডিটরে কল করতে চান তার HTTP অনুরোধ কনফিগার করুন। উদাহরণস্বরূপ, কুইকস্টার্টে , ক্লাসরুম পরিষেবার সাথে তালিকাভুক্ত কোর্সগুলি এইরকম দেখায়:

function listCourses() {
  try {
    const response = Classroom.Courses.list();
    const courses = response.courses;
    if (!courses || courses.length === 0) {
      console.log('No courses found.');
      return;
    }
    for (const course of courses) {
      console.log('%s (%s)', course.name, course.id);
    }
  } catch (err) {
    // TODO: Developer to handle.
    console.log(err.message);
  }
}

সরাসরি HTTP ব্যবহার করে সমতুল্য অপারেশন হল:

function listCourses() {
  const response = UrlFetchApp.fetch(
        'https://classroom.googleapis.com/v1/courses', {
        method: 'GET',
        headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()},
        contentType: 'application/json',
      });
  const data = JSON.parse(response.getContentText());
  if (data.error) {
    // TODO: Developer to handle.
    console.log(err.message);
    return;
  }
  if (!data.courses || !data.courses.length) {
    console.log('No courses found.');
    return;
  }
  for (const course of data.courses) {
    console.log('%s (%s)', course.name, course.id);
  }
}

উন্নত পরিষেবাগুলি ব্যবহার করার সময়, প্রয়োজনীয় OAuth স্কোপগুলি অনুমান করা হয়, কিন্তু Apps স্ক্রিপ্টে Google API-এ সরাসরি HTTP কল করতে, আপনাকে ম্যানুয়ালি উপযুক্ত স্কোপগুলি যোগ করতে হবে।

প্রজেক্ট সেটিংসে , এডিটরে "appsscript.json" ম্যানিফেস্ট ফাইল দেখান সক্ষম করুন। এডিটরে ফিরে, আপনার যেকোন স্কোপের জন্য appscript.json ফাইলে oauthScopes যোগ করুন। একটি প্রদত্ত পদ্ধতির সুযোগ রেফারেন্স পৃষ্ঠায় তালিকাভুক্ত করা হয়েছে। উদাহরণস্বরূপ, courses.courseWork.rubrics তালিকা পদ্ধতি পৃষ্ঠাটি দেখুন।

আপডেট করা appscript.json ফাইলটি দেখতে এরকম হতে পারে:

{
  "timeZone": "America/Los_Angeles",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/classroom.coursework.students",
    "https://www.googleapis.com/auth/classroom.courses",
    "https://www.googleapis.com/auth/spreadsheets.readonly",
    "https://www.googleapis.com/auth/spreadsheets"
  ]
}

একটি লেবেল এবং পূর্বরূপ সংস্করণ সরবরাহ করুন

আপনার স্ক্রিপ্টে ফিরে, নিশ্চিত করুন যে আপনি পূর্ববর্তী HTTP বিভাগে বর্ণিত উপযুক্ত লেবেল এবং পূর্বরূপ সংস্করণ যোগ করেছেন। রুব্রিক্স পরিষেবাতে LIST কলের উদাহরণটি এরকম দেখাবে:

function listRubrics() {
  const courseId = COURSE_ID;
  const courseWorkId = COURSE_WORK_ID;
  const response = UrlFetchApp.fetch(
         `https://classroom.googleapis.com/v1/courses/${courseId}/courseWork/${courseWorkId}/rubrics?previewVersion=V1_20231110_PREVIEW`, {
        method: 'GET',
        headers: {
          'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
          'X-Goog-Visibilities': 'DEVELOPER_PREVIEW'
        },
        contentType: 'application/json',
        muteHttpExceptions: true
      });
  const data = JSON.parse(response.getContentText());
  console.log(data)
  if (data.error) {
    // TODO: Developer to handle.
    console.log(error.message);
    return;
  }
  if (!data.rubrics || !data.rubrics.length) {
    console.log('No rubrics for this coursework!');
    return;
  }
  console.log(data.rubrics);
}