বাহ্যিক সংযুক্তি & প্রবেশ করা

ক্লাসরুম অ্যাড-অন ওয়াকথ্রু সিরিজের এটি সপ্তম ওয়াকথ্রু।

এই ওয়াকথ্রুতে, আপনি Google ক্লাসরুমের বাইরে থেকে অ্যাড-অন সংযুক্তি তৈরি করতে একটি ওয়েব অ্যাপ্লিকেশনে আচরণ যোগ করেন। আপনার ব্যবহারকারীদের আপনার বিদ্যমান পণ্য বা ওয়েবসাইট থেকে অ্যাড-অন সংযুক্তি তৈরি করতে দিতে এই আচরণটি ব্যবহার করুন। এটি একটি CourseWork ইন্টিগ্রেশনের জন্য একটি দুর্দান্ত সংযোজন কারণ আপনি বিদ্যমান ট্রাফিককে তাদের প্রবাহ পরিবর্তন না করেই আপনার অ্যাড-অন দ্বারা অফার করা উন্নত ব্যবহারকারীর অভিজ্ঞতার দিকে পরিচালিত করেন। প্রস্তাবিত প্রক্রিয়াটি ক্লাসরুম গাইড পৃষ্ঠার বাইরে আমাদের সংযুক্তি তৈরি করুন- এ উপস্থাপন করা হয়েছে।

আপনি অ্যাড-অন সংযুক্তিগুলির সাথে প্রোগ্রামগতভাবে একটি অ্যাসাইনমেন্ট সংশোধন করতে আপনার অ্যাড- অনে আচরণ যোগ করুন। যে অ্যাসাইনমেন্ট তৈরি করেছে তা নির্বিশেষে আপনি যে কোনও অ্যাসাইনমেন্ট সংশোধন করতে পারেন যাতে আপনার অ্যাড-অন অ্যাটাচমেন্টগুলির একটি রয়েছে৷ এটি বিশেষভাবে উপযোগী একটি ছাত্র একটি কার্যকলাপ সম্পন্ন করার পরে নিয়োগগুলি চালু করার জন্য, শিক্ষককে সংকেত দেয় যে বরাদ্দকৃত কাজগুলি সম্পূর্ণ এবং ছাত্রের কাজ পর্যালোচনার জন্য প্রস্তুত৷

আপনি আপনার অ্যাড-অনের চূড়ান্ত সংস্করণটি প্রসারিত করেন যা সামগ্রী-প্রকার বা কার্যকলাপ-প্রকার সংযুক্তিগুলিকে সমর্থন করে৷ বিষয়বস্তু-টাইপ সংযুক্তি এই নির্দেশিকা ব্যবহার করা হয়.

অ্যাসাইনমেন্ট ম্যানেজমেন্ট OAuth স্কোপ যোগ করুন

নিশ্চিত করুন যে আপনার আবেদন নিম্নলিখিত সুযোগের জন্য অনুরোধ করে:

  • https://www.googleapis.com/auth/classroom.addons.teacher
  • https://www.googleapis.com/auth/classroom.addons.student
  • https://www.googleapis.com/auth/classroom.coursework.students

classroom.coursework.students স্কোপের আগে প্রয়োজন ছিল না, এবং CourseWork অ্যাসাইনমেন্ট তৈরি বা সংশোধন করতে ব্যবহৃত হয়। আপনার ক্লাউড প্রোজেক্টের Google Workspace Marketplace SDK , OAuth সম্মতি স্ক্রীন এবং আপনার সার্ভার কোডের স্কোপের তালিকায় এই সুযোগটি যোগ করুন।

পাইথন

  SCOPES = [
    "https://www.googleapis.com/auth/classroom.addons.teacher",
    "https://www.googleapis.com/auth/classroom.addons.student",
    "https://www.googleapis.com/auth/classroom.coursework.students",
  ]

ক্লাসরুমে একটি অ্যাসাইনমেন্ট তৈরি করুন

একটি অ-ফ্রেমযুক্ত ওয়েব পৃষ্ঠায় বোতাম যোগ করুন

এই ওয়াকথ্রুতে বর্ণিত ফ্লো একজন ব্যবহারকারীকে একটি নন-Google পণ্য থেকে Google ক্লাসরুম অ্যাসাইনমেন্ট এবং সংযুক্তি তৈরি করতে দেয়। অনুশীলনে এটি সম্ভবত আপনার বিদ্যমান ওয়েবসাইট বা অ্যাপ্লিকেশন। এই উদাহরণের জন্য, আপনাকে একটি বহিরাগত সাইট হিসাবে কাজ করার জন্য একটি মক ওয়েব পৃষ্ঠা তৈরি করতে হবে। আপনার একটি বোতাম বা লিঙ্ক প্রয়োজন যা ক্লিক করা হলে, একটি নতুন রুট খোলে যা একটি নতুন অ্যাসাইনমেন্ট তৈরি করতে প্রস্তাবিত CourseWork প্রবাহ সম্পাদন করে।

আপনার যদি ইতিমধ্যে একটি না থাকে তবে ব্যবহারকারীকে সাইন ইন করার অনুমতি দেওয়ার জন্য আপনাকে একটি বোতাম বা লিঙ্ক যোগ করতে হবে৷ পরবর্তী API অনুরোধগুলি করতে আপনার ব্যবহারকারীর শংসাপত্রের প্রয়োজন হবে, তাই তাদের অবশ্যই OAuth 2.0 হ্যান্ডশেক সম্পূর্ণ করতে হবে। নির্দিষ্ট নির্দেশনার জন্য সাইন-ইন ওয়াকথ্রু দেখুন।

পাইথন

প্রদত্ত পাইথন উদাহরণ /index রুটটি পরিবর্তন করে যা প্রথম ওয়াকথ্রু ধাপে চালু করা হয়েছিল।

<!-- /webapp/templates/index.html -->
<a href="clear-credentials.html">Logout</a>
<a href="start-auth-flow.html">Login</a>

<br>

<a href="create-coursework-assignment.html">Create a CourseWork Assignment</a>

আপনার ওয়েবসাইটে একটি গন্তব্য প্রতিনিধিত্ব করতে একটি HTML টেমপ্লেট যোগ করুন। এই পৃষ্ঠাটি সেই বিষয়বস্তুর প্রতিনিধিত্ব করবে যা আপনার CourseWork অ্যাসাইনমেন্টের সাথে সংযুক্ত করা হবে।

<!-- /webapp/templates/example-coursework-assignment.html -->
<h1>CourseWork assignment loaded!</h1>
<p>You've loaded a CourseWork assignment! It was created from an external web page.</p>

CourseWork-সম্পর্কিত রুটগুলি পরিচালনা করতে একটি নতুন পাইথন মডিউল ফাইল তৈরি করুন। এটি হল coursework_routes.py আমাদের দেওয়া উদাহরণে। নিম্নলিখিত তিনটি রুট যোগ করুন; মনে রাখবেন যে আপনি পরে কিছু বিষয়বস্তু পূরণ করবেন।

# /webapp/coursework_routes.py
@app.route("/create-coursework-assignment")
def create_coursework_assignment():
  """
  Completes the assignment creation flow.
  """

  # Check that the user is signed in. If not, perform the OAuth 2.0
  # authorization flow.
  credentials = get_credentials()

  if not credentials:
    return start_auth_flow("coursework_assignment_callback")

  # Construct the Google Classroom service.
  classroom_service = get_classroom_service()

  pass  # To be completed later.

@app.route("/example-coursework-assignment/<assignment_type>")
def example_coursework_assignment(assignment_type):
  """
  Renders the "example-coursework-assignment.html" template.
  """
  return flask.render_template(
      "example-coursework-assignment.html", assignment_type=assignment_type
  )

@app.route("/coursework-assignment-callback")
def coursework_assignment_callback():
  """
  Completes the OAuth 2.0 handshake and stores credentials in the session.
  This is identical to the callback introduced in the sign-in walkthrough,
  but redirects the user to the index page instead of the attachment
  discovery page.
  """
  flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file(
      CLIENT_SECRETS_FILE,
      scopes=SCOPES,
      state=flask.session["state"],
      redirect_uri=flask.url_for("coursework_assignment_callback", _external=True),
  )

  flow.fetch_token(authorization_response=flask.request.url)

  credentials = flow.credentials
  flask.session["credentials"] = session_credentials_to_dict(
      credentials
  )

  # Close the current window and redirect the user to the index page.
  return flask.render_template("close-me.html", redirect_destination="index")

ব্যবহারকারীর অ্যাড-অন তৈরির যোগ্যতা পরীক্ষা করুন

আপনি তাদের পক্ষ থেকে অ্যাড-অন সংযুক্তি তৈরি করার আগে ব্যবহারকারীকে অবশ্যই পূরণ করতে হবে এমন বেশ কয়েকটি পূর্বশর্ত রয়েছে৷ সুবিধার জন্য, একজন ব্যবহারকারী এই পূর্বশর্তগুলি পূরণ করে কিনা তা নির্ধারণ করতে Google courses.checkAddOnCreationEligibility পদ্ধতি প্রদান করে৷ যে ব্যবহারকারী পূর্বশর্তগুলি পূরণ করে তাকে যোগ্য ব্যবহারকারী হিসাবে উল্লেখ করা হয়।

CourseWork তৈরির রুট বাস্তবায়নে যোগ্যতা যাচাই যোগ করুন। তারপর প্রতিক্রিয়াতে isCreateAttachmentEligible ক্ষেত্রটি পরীক্ষা করুন। যোগ্য ব্যবহারকারীদের জন্য, অ্যাড-অন সংযুক্তি সহ একটি অ্যাসাইনমেন্ট তৈরি করতে যুক্তি অনুসরণ করুন। অন্যথায়, একটি লিঙ্ক উপাদান তৈরি করুন। আপনি যে কোর্সে ব্যবহারকারী একটি অ্যাসাইনমেন্ট তৈরি করতে চান তার আইডি জানতে হবে। সাধারণত, আপনি ব্যবহারকারীকে কোন কোর্সটি ব্যবহার করতে হবে তা উল্লেখ করতে অনুরোধ করবেন। সরলতার জন্য, আমরা এই উদাহরণে একটি হার্ড-কোডেড মান ব্যবহার করি।

পাইথন

# /webapp/coursework_routes.py
@app.route("/create-coursework-assignment")
def create_coursework_assignment():
  """
  Completes the assignment creation flow.
  """
  # ... Check that the user is signed in and get the Classroom service ...

  # The ID of the course to which the assignment will be added.
  course_id = 1234567890  # TODO(developer) Replace with an actual course ID.

  # Check whether the user can create add-on attachments.
  eligibility_response = (
      classroom_service.courses()
      .checkAddOnCreationEligibility(courseId=course_id)
      .execute()
  )
  is_create_attachment_eligible = eligibility_response.get("isCreateAttachmentEligible")

  if is_create_attachment_eligible:
    # See the "Create an assignment with add-on attachment for eligible users" section for implementation.
  if not is_create_attachment_eligible:
    # See the "Create a Link Material" section for implementation.

যোগ্য ব্যবহারকারীদের জন্য অ্যাড-অন সংযুক্তি সহ একটি অ্যাসাইনমেন্ট তৈরি করুন

ব্যবহারকারী যদি অ্যাড-অন সংযুক্তি তৈরি করার যোগ্য হন, তাহলে নিম্নলিখিতগুলি করুন:

  1. কোনো সংযুক্তি ছাড়াই Google ক্লাসরুমে courseWork অ্যাসাইনমেন্ট তৈরি করার জন্য একটি API অনুরোধ পাঠান।
  2. নতুন তৈরি অ্যাসাইনমেন্টের id বের করুন।
  3. একটি নতুন CourseWork AddOnAttachment তৈরি করুন।
  4. গুগল ক্লাসরুমে নতুন তৈরি অ্যাসাইনমেন্টে একটি অ্যাড-অন সংযুক্তি তৈরি করার জন্য একটি অনুরোধ পাঠান।

পাইথন

# /webapp/coursework_routes.py
if is_create_attachment_eligible:
  # Create an assignment.
  coursework = {
      "title": "My CourseWork Assignment with Add-on Attachment",
      "description": "Created using the Classroom CourseWork API.",
      "workType": "ASSIGNMENT",
      "state": "DRAFT",  # Set to 'PUBLISHED' to assign to students.
  }

  # Issue a request to create the assignment.
  create_assignment_response = (
      classroom_service.courses()
      .courseWork()
      .create(courseId=course_id, body=coursework)
      .execute()
  )

  # Create an add-on attachment that links to the selected content and
  # associate it with the new assignment.
  content_url = flask.url_for(
      "example_coursework_assignment",
      assignment_type="add-on-attachment",
      _scheme="https",
      _external=True,
  )

  # Construct an AddOnAttachment instance.
  attachment = {
      "teacherViewUri": {"uri": content_url},
      "studentViewUri": {"uri": content_url},
      "title": f'Test Attachment for Assignment {create_assignment_response.get("id")}',
  }

  # Issue a request to create the attachment.
  add_on_attachment_response = (
      classroom_service.courses()
      .courseWork()
      .addOnAttachments()
      .create(
          courseId=course_id,
          itemId=create_assignment_response.get("id"),  # ID of the new assignment.
          body=attachment,
      )
      .execute()
  )

ব্যবহারকারী যদি অ্যাড-অন অ্যাটাচমেন্ট তৈরি করার যোগ্য না হন, তাহলে নিম্নলিখিতগুলি করার পরিবর্তে একটি লিঙ্ক উপাদান তৈরি করুন:

পাইথন

if not is_create_attachment_eligible:
    coursework = {
        "title": "My CourseWork Assignment with Link Material",
        "description": "Created using the Classroom CourseWork API.",
        "workType": "ASSIGNMENT",
        "state": "DRAFT",  # Set to 'PUBLISHED' to assign to students.
        # Specify the URL for your content as a Link Material.
        "materials": [
            {
                "link": {
                    "url": flask.url_for(
                        "example_coursework_assignment",
                        assignment_type="link-material",
                        _scheme="https",
                        _external=True,
                    )
                }
            }
        ],
    }

    # Issue a request to create the assignment.
    assignment_response = (
        classroom_service.courses()
        .courseWork()
        .create(courseId=course_id, body=coursework)
        .execute()
    )

ইতিমধ্যে তৈরি করা অ্যাসাইনমেন্ট পরিবর্তন করুন

স্ট্রীম আইটেমটি কে তৈরি করেছে তা নির্বিশেষে আপনি যেকোনও Google ক্লাসরুম স্ট্রিম আইটেম অ্যাক্সেস করতে, সংশোধন করতে, চালু করতে, পুনরুদ্ধার করতে বা ফেরত দিতে পারেন যাতে আপনার অন্তত একটি অ্যাড-অন সংযুক্তি রয়েছে। স্ট্রিম আইটেমগুলি হল যেকোনো Announcement , CourseWork অ্যাসাইনমেন্ট, বা CourseWorkMaterial

এটি প্রদর্শন করতে, আপনি একটি প্রদত্ত স্ট্রিম আইটেম সংশোধন করার জন্য একটি রুট যোগ করবেন৷ আপনি API ব্যবহার করে আপনার তৈরি করা এবং Google Classroom UI-এর মাধ্যমে একজন শিক্ষক দ্বারা তৈরি করা স্ট্রিম আইটেমগুলি অ্যাক্সেস এবং সংশোধন করতে পারেন তা যাচাই করতে এই পদ্ধতিটি ব্যবহার করুন।

এই ওয়াকথ্রুতে আপনি যে ওয়েব পৃষ্ঠাটি প্রথম সম্পাদনা করেছেন তাতে আরও একটি লিঙ্ক বা বোতাম যুক্ত করুন৷ এটি একটি CourseWork অ্যাসাইনমেন্ট সংশোধন করার জন্য একটি নতুন রুট খুলতে হবে।

পাইথন

প্রদত্ত পাইথন উদাহরণটি /index রুটটি পরিবর্তন করে যা এই ওয়াকথ্রুতে আগে পরিবর্তিত হয়েছিল।

<!-- /webapp/templates/index.html -->
<a href="modify-coursework-assignment.html">Create a CourseWork Assignment</a>

CourseWork-সম্পর্কিত রুটগুলি পরিচালনা করার জন্য একটি নতুন রুট তৈরি করুন। এটি আমাদের প্রদত্ত উদাহরণে coursework_routes.py ফাইলে রয়েছে৷

# Check that the user is signed in.
credentials = get_credentials()

if not credentials:
  return start_auth_flow("coursework_assignment_callback")

# Get the Google Classroom service.
classroom_service = get_classroom_service()

# The ID of the course to which the assignment will be added.
# Ordinarily, you'll prompt the user to specify which course to use. For
# simplicity, we use a hard-coded value in this example.
course_id = 1234567890  # TODO(developer) Replace with an actual course ID.
assignment_id = 1234567890  # TODO(developer) Replace with an actual assignment ID.

# Retrieve details about the CourseWork assignment.
get_coursework_response = (
    classroom_service.courses()
    .courseWork()
    .get(courseId=course_id, id=assignment_id)
    .execute()
)

# Alter the current title.
assignment_title = f"{get_coursework_response.get('title')} (Modified by API request)"

# Issue a request to modify the assignment.
modify_coursework_response = (
    classroom_service.courses()
    .courseWork()
    .patch(
        courseId=course_id,
        id=assignment_id,
        updateMask="title",
        body={"title": assignment_title},
    )
    .execute()
)

অ্যাড-অন পরীক্ষা করুন

জিনিসগুলি সহজ রাখতে, প্রদত্ত উদাহরণগুলি হার্ড-কোডেড কোর্স এবং অ্যাসাইনমেন্ট শনাক্তকারী ব্যবহার করে। আপনি এই শনাক্তকারী পেতে পারেন শিক্ষকের শংসাপত্র সহ courses এবং courseWork সংস্থানগুলির get এবং list পদ্ধতিগুলির জন্য অনুরোধ করে। courseWork অ্যাসাইনমেন্ট তৈরি করার সময় সেগুলিও প্রতিক্রিয়া হিসাবে ফিরে আসে।

আপনার সার্ভার চালান, তারপরে আপনার ইন্ডেক্স পৃষ্ঠায় নেভিগেট করুন এবং Google Workspace for Education Teaching & Learning বা Plus লাইসেন্স ছাড়া শিক্ষক ব্যবহারকারী হিসেবে সাইন-ইন করুন। আপনি আপনার টেস্ট ডোমেনের অ্যাডমিন কনসোল থেকে একজন ব্যবহারকারীর লাইসেন্সের স্থিতি টগল করতে পারেন৷ একটি কোর্সওয়ার্ক অ্যাসাইনমেন্ট তৈরি করুন বোতামে ক্লিক করুন, তারপরে Google ক্লাসরুম UI খুলুন এবং যাচাই করুন যে একটি লিঙ্ক উপাদান সংযুক্তি সহ একটি অ্যাসাইনমেন্ট তৈরি করা হয়েছে৷ সংযুক্তিটিতে লিঙ্ক করা ওয়েব পৃষ্ঠার শিরোনাম এবং একটি URL দেখাতে হবে।

অ্যাড-অন সংযুক্তি তৈরির পরীক্ষা করুন

ইন্ডেক্স পৃষ্ঠায় ফিরে যান এবং Google Workspace for Education Teaching & Learning বা Plus লাইসেন্স দিয়ে শিক্ষক ব্যবহারকারী হিসেবে সাইন-ইন করুন। একটি CourseWork অ্যাসাইনমেন্ট তৈরি করুন বোতামে ক্লিক করুন, তারপর Google Classroom UI খুলুন এবং যাচাই করুন যে একটি অ্যাড-অন সংযুক্তি সহ একটি অ্যাসাইনমেন্ট তৈরি করা হয়েছে। সংযুক্তিতে আপনার অ্যাড-অন অ্যাপ্লিকেশনের নাম এবং আপনার কোডে উল্লেখ করা শিরোনাম দেখাতে হবে।

পরীক্ষা অ্যাসাইনমেন্ট পরিবর্তন

সূচী পৃষ্ঠায় ফিরে যান এবং নিশ্চিত করুন যে আপনি একটি শিক্ষক ব্যবহারকারী হিসাবে একটি টিচিং অ্যান্ড লার্নিং বা প্লাস লাইসেন্স সহ সাইন ইন করেছেন৷ একটি CourseWork অ্যাসাইনমেন্ট পরিবর্তন করুন বোতামে ক্লিক করুন, তারপর Google Classroom UI এ ফিরে যান এবং যাচাই করুন যে অ্যাসাইনমেন্টের শিরোনাম পরিবর্তন করা হয়েছে।

অভিনন্দন! আপনি ওয়াকথ্রু সিরিজ সম্পূর্ণ করেছেন।