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

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

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

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

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

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

  1. গতিশীলভাবে তৈরি ক্লায়েন্ট লাইব্রেরি
  2. গুগলের সরবরাহিত স্ট্যাটিক ক্লায়েন্ট লাইব্রেরি
  3. আপনার নিজস্ব কাস্টম ক্লায়েন্ট লাইব্রেরি

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

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

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

ডিসকভারি ডকুমেন্ট হল REST API গুলি বর্ণনা এবং ব্যবহার করার জন্য একটি মেশিন-পঠনযোগ্য স্পেসিফিকেশন। এটি ক্লায়েন্ট লাইব্রেরি, IDE প্লাগইন এবং Google 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 ক্লায়েন্ট লাইব্রেরি ডকুমেন্টেশন দেখুন।

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

জাভা, নোড.জেএস, পিএইচপি, সি# এবং গো এর মতো ভাষার ক্লায়েন্ট লাইব্রেরিগুলি অবশ্যই উৎস থেকে তৈরি করতে হবে। এই লাইব্রেরিগুলি আপনার জন্য সরবরাহ করা হয়েছে এবং প্রিভিউ বৈশিষ্ট্যগুলি ইতিমধ্যেই অন্তর্ভুক্ত করা হয়েছে।

পাবলিক প্রিভিউয়ের জন্য, ক্লাসরুম ক্লায়েন্ট লাইব্রেরিগুলি অন্যান্য ওয়ার্কস্পেস ডেভেলপার প্রিভিউ প্রোগ্রাম ক্লায়েন্ট লাইব্রেরির সাথে পাওয়া যাবে। ব্যক্তিগত প্রিভিউয়ের জন্য, যদি আপনার স্ট্যাটিক লাইব্রেরি তৈরির প্রয়োজন হয় তবে আপনার 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 কল করার সময় আপনাকে অবশ্যই প্রিভিউ সংস্করণটি নির্দিষ্ট করতে হবে।

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

অনুরোধগুলিতে PreviewVersion ক্ষেত্রটি সেট করে একটি সংস্করণ নির্দিষ্ট করা হয়। উদাহরণস্বরূপ, Rubrics CRUD প্রিভিউ API দিয়ে একটি রুব্রিক তৈরি করতে, আপনাকে CREATE অনুরোধে 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 অনুরোধ

HTTP দিয়ে সরাসরি Classroom API ব্যবহার করাও সম্ভব।

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

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

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 ডকুমেন্টেশনে বর্ণিত আছে।

গুগল অ্যাপস স্ক্রিপ্ট

গুগল অ্যাপস স্ক্রিপ্ট থেকে প্রিভিউ এপিআই কল করা সম্ভব। তবে, সাধারণ অ্যাপস স্ক্রিপ্ট ব্যবহারের সাথে কিছু পার্থক্য রয়েছে।

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

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

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

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

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

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

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 Script-এ 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);
}