বিষয়বস্তু-টাইপ সংযুক্তি

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

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

এই ওয়াকথ্রু চলাকালীন আপনি নিম্নলিখিতগুলি সম্পূর্ণ করবেন:

  • নিম্নলিখিত অ্যাড-অন কোয়েরি প্যারামিটারগুলি পুনরুদ্ধার করুন এবং ব্যবহার করুন:
    • addOnToken : অ্যাটাচমেন্ট ডিসকভারি ভিউতে পাস করা একটি অনুমোদন টোকেন।
    • itemId : কোর্সওয়ার্ক, কোর্স ওয়ার্ক ম্যাটেরিয়াল বা ঘোষণার জন্য একটি অনন্য শনাক্তকারী যা অ্যাড-অন সংযুক্তি গ্রহণ করে।
    • itemType : হয় "কোর্সওয়ার্ক", "কোর্সওয়ার্ক ম্যাটেরিয়ালস" বা "ঘোষণা"।
    • courseId : Google ক্লাসরুম কোর্সের জন্য একটি অনন্য শনাক্তকারী যেখানে অ্যাসাইনমেন্ট তৈরি করা হচ্ছে।
    • attachmentId : তৈরির পরে অ্যাড-অন অ্যাটাচমেন্টে Google ক্লাসরুম দ্বারা নির্ধারিত একটি অনন্য শনাক্তকারী।
  • বিষয়বস্তু-টাইপ সংযুক্তিগুলির জন্য অবিরাম সঞ্চয়স্থান প্রয়োগ করুন।
  • সংযুক্তি তৈরি করতে এবং শিক্ষক ভিউ এবং স্টুডেন্ট ভিউ আইফ্রেমগুলি পরিবেশন করার জন্য রুট প্রদান করুন।
  • Google Classroom অ্যাড-অন API-এ নিম্নলিখিত অনুরোধগুলি ইস্যু করুন:
    • একটি নতুন সংযুক্তি তৈরি করুন.
    • অ্যাড-অন প্রসঙ্গ পান, যা সনাক্ত করে যে লগ-ইন করা ব্যবহারকারী একজন ছাত্র বা শিক্ষক কিনা।

একবার শেষ হয়ে গেলে, শিক্ষক হিসাবে লগ ইন করার সময় আপনি Google Classroom UI এর মাধ্যমে অ্যাসাইনমেন্টে বিষয়বস্তু-টাইপ সংযুক্তি তৈরি করতে পারেন। ক্লাসের শিক্ষক এবং শিক্ষার্থীরাও বিষয়বস্তু দেখতে পারবেন।

Classroom API সক্ষম করুন

এই ধাপ দিয়ে শুরু করে Classroom API-তে কল করুন। আপনি এটিতে কল করার আগে আপনার Google ক্লাউড প্রকল্পের জন্য API সক্রিয় থাকতে হবে৷ Google Classroom API লাইব্রেরি এন্ট্রিতে নেভিগেট করুন এবং Enable নির্বাচন করুন।

অ্যাটাচমেন্ট ডিসকভারি ভিউ কোয়েরি প্যারামিটারগুলি পরিচালনা করুন

পূর্বে আলোচনা করা হয়েছে , আইফ্রেমে অ্যাটাচমেন্ট ডিসকভারি ভিউ লোড করার সময় Google ক্লাসরুম কোয়েরি প্যারামিটার পাস করে:

  • courseId : বর্তমান ক্লাসরুম কোর্সের আইডি।
  • itemId : কোর্সওয়ার্ক, কোর্স ওয়ার্ক ম্যাটেরিয়াল বা ঘোষণার জন্য একটি অনন্য শনাক্তকারী যা অ্যাড-অন সংযুক্তি গ্রহণ করে।
  • itemType : হয় "কোর্সওয়ার্ক", "কোর্সওয়ার্ক ম্যাটেরিয়ালস" বা "ঘোষণা"।
  • addOnToken : একটি টোকেন নির্দিষ্ট ক্লাসরুম অ্যাড-অন অ্যাকশন অনুমোদন করতে ব্যবহৃত হয়।
  • login_hint : বর্তমান ব্যবহারকারীর Google ID।
  • hd : বর্তমান ব্যবহারকারীর জন্য হোস্ট ডোমেন, যেমন example.com

এই ওয়াকথ্রু ঠিকানা courseId , itemId , itemType এবং addOnToken । ক্লাসরুম এপিআইতে কল ইস্যু করার সময় এগুলি ধরে রাখুন এবং পাস করুন।

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

পাইথন

আপনার ফ্লাস্ক সার্ভার ফাইলে নেভিগেট করুন যা অ্যাটাচমেন্ট ডিসকভারি ভিউয়ের জন্য রুট প্রদান করে ( আপনি যদি আমাদের প্রদত্ত উদাহরণ অনুসরণ করেন তাহলে attachment-discovery-routes.py )। আপনার অ্যাড-অন ল্যান্ডিং রুটের শীর্ষে (আমাদের প্রদত্ত উদাহরণে /classroom-addon ), courseId , itemId , itemType এবং addOnToken ক্যোয়ারী প্যারামিটারগুলি পুনরুদ্ধার করুন এবং সংরক্ষণ করুন৷

# Retrieve the itemId, courseId, and addOnToken query parameters.
if flask.request.args.get("itemId"):
    flask.session["itemId"] = flask.request.args.get("itemId")
if flask.request.args.get("itemType"):
    flask.session["itemType"] = flask.request.args.get("itemType")
if flask.request.args.get("courseId"):
    flask.session["courseId"] = flask.request.args.get("courseId")
if flask.request.args.get("addOnToken"):
    flask.session["addOnToken"] = flask.request.args.get("addOnToken")

সেশনে এই মানগুলি লিখুন শুধুমাত্র যদি তারা উপস্থিত থাকে; ব্যবহারকারী যদি আইফ্রেম বন্ধ না করে পরে অ্যাটাচমেন্ট ডিসকভারি ভিউতে ফিরে আসে তবে সেগুলি আবার পাস করা হবে না।

বিষয়বস্তু-টাইপ সংযুক্তিগুলির জন্য স্থায়ী সঞ্চয়স্থান যোগ করুন

আপনি যে কোনো তৈরি সংযুক্তি একটি স্থানীয় রেকর্ড প্রয়োজন. এটি আপনাকে ক্লাসরুমের দেওয়া শনাক্তকারী ব্যবহার করে শিক্ষক বেছে নেওয়া বিষয়বস্তু দেখতে দেয়।

একটি Attachment জন্য একটি ডাটাবেস স্কিমা সেট আপ করুন৷ আমাদের প্রদত্ত উদাহরণ সংযুক্তিগুলি উপস্থাপন করে যা একটি চিত্র এবং একটি ক্যাপশন দেখায়৷ একটি Attachment নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • attachment_id : একটি সংযুক্তির জন্য একটি অনন্য শনাক্তকারী। ক্লাসরুম দ্বারা বরাদ্দ করা হয়েছে এবং একটি সংযুক্তি তৈরি করার সময় প্রতিক্রিয়াতে ফিরে এসেছে৷
  • image_filename : প্রদর্শিত ছবির স্থানীয় ফাইলের নাম।
  • image_caption : ছবির সাথে দেখানোর জন্য ক্যাপশন।

পাইথন

পূর্ববর্তী ধাপগুলি থেকে SQLite এবং flask_sqlalchemy বাস্তবায়ন প্রসারিত করুন।

যে ফাইলটিতে আপনি আপনার ব্যবহারকারী টেবিলটি সংজ্ঞায়িত করেছেন সেখানে নেভিগেট করুন ( যদি আপনি আমাদের প্রদত্ত উদাহরণ অনুসরণ করেন তবে models.py )। User class এর নিচের ফাইলের নিচের অংশে যুক্ত করুন।

class Attachment(db.Model):
    # The attachmentId is the unique identifier for the attachment.
    attachment_id = db.Column(db.String(120), primary_key=True)

    # The image filename to store.
    image_filename = db.Column(db.String(120))

    # The image caption to store.
    image_caption = db.Column(db.String(120))

আপনার সংযুক্তি হ্যান্ডলিং রুট সহ সার্ভার ফাইলে নতুন সংযুক্তি শ্রেণী আমদানি করুন৷

নতুন রুট সেট আপ করুন

আমাদের অ্যাপ্লিকেশনে কিছু নতুন পৃষ্ঠা সেট আপ করে এই ওয়াকথ্রু পদক্ষেপটি শুরু করুন। এটি একটি ব্যবহারকারীকে আমাদের অ্যাড-অনের মাধ্যমে সামগ্রী তৈরি করতে এবং দেখতে দেয়।

সংযুক্তি তৈরির রুট যোগ করুন

বিষয়বস্তু নির্বাচন এবং সংযুক্তি তৈরির অনুরোধ ইস্যু করার জন্য শিক্ষকের জন্য আপনার পৃষ্ঠাগুলির প্রয়োজন৷ শিক্ষক নির্বাচন করার জন্য বিষয়বস্তু বিকল্পগুলি প্রদর্শন করতে /attachment-options রুটটি প্রয়োগ করুন। আপনার বিষয়বস্তু নির্বাচন এবং তৈরি নিশ্চিতকরণ পৃষ্ঠাগুলির জন্য টেমপ্লেটেরও প্রয়োজন৷ আমাদের প্রদত্ত উদাহরণগুলিতে এইগুলির জন্য টেমপ্লেট রয়েছে এবং ক্লাসরুম API থেকে অনুরোধ এবং প্রতিক্রিয়াগুলিও প্রদর্শন করতে পারে৷

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

একজন শিক্ষক আমাদের প্রদত্ত উদাহরণে ক্যাপশনযুক্ত চিত্রগুলির একটি ছোট সেট থেকে নির্বাচন করতে পারেন। আমরা বিখ্যাত ল্যান্ডমার্কের চারটি ছবি প্রদান করেছি যার ক্যাপশন ফাইলের নাম থেকে নেওয়া হয়েছে।

পাইথন

আমাদের প্রদত্ত উদাহরণে, এটি webapp/attachment_routes.py ফাইলে রয়েছে৷

@app.route("/attachment-options", methods=["GET", "POST"])
def attachment_options():
    """
    Render the attachment options page from the "attachment-options.html"
    template.

    This page displays a grid of images that the user can select using
    checkboxes.
    """

    # A list of the filenames in the static/images directory.
    image_filenames = os.listdir(os.path.join(app.static_folder, "images"))

    # The image_list_form_builder method creates a form that displays a grid
    # of images, checkboxes, and captions with a Submit button. All images
    # passed in image_filenames will be shown, and the captions will be the
    # title-cased filenames.

    # The form must be built dynamically due to limitations in WTForms. The
    # image_list_form_builder method therefore also returns a list of
    # attribute names in the form, which will be used by the HTML template
    # to properly render the form.
    form, var_names = image_list_form_builder(image_filenames)

    # If the form was submitted, validate the input and create the attachments.
    if form.validate_on_submit():

        # Build a dictionary that maps image filenames to captions.
        # There will be one dictionary entry per selected item in the form.
        filename_caption_pairs = construct_filename_caption_dictionary_list(
            form)

        # Check that the user selected at least one image, then proceed to
        # make requests to the Classroom API.
        if len(filename_caption_pairs) > 0:
            return create_attachments(filename_caption_pairs)
        else:
            return flask.render_template(
                "create-attachment.html",
                message="You didn't select any images.",
                form=form,
                var_names=var_names)

    return flask.render_template(
        "attachment-options.html",
        message=("You've reached the attachment options page. "
                "Select one or more images and click 'Create Attachment'."),
        form=form,
        var_names=var_names,
    )

এটি একটি "সংযুক্তি তৈরি করুন" পৃষ্ঠা তৈরি করে যা নিম্নলিখিতগুলির অনুরূপ:

পাইথন উদাহরণ বিষয়বস্তু নির্বাচন দৃশ্য

শিক্ষক একাধিক ছবি নির্বাচন করতে পারেন। প্রতিটি চিত্রের জন্য একটি সংযুক্তি তৈরি করুন যা শিক্ষক create_attachments পদ্ধতিতে নির্বাচন করেছেন।

সংযুক্তি তৈরির অনুরোধ ইস্যু করুন

এখন যেহেতু আপনি জানেন যে শিক্ষক কোন বিষয়বস্তু সংযুক্ত করতে চান, আমাদের অ্যাসাইনমেন্টে সংযুক্তি তৈরি করতে Classroom API-কে অনুরোধ করুন৷ Classroom API থেকে একটি প্রতিক্রিয়া পাওয়ার পরে আপনার ডাটাবেসে সংযুক্তি বিবরণ সংরক্ষণ করুন।

ক্লাসরুম পরিষেবার একটি উদাহরণ পেয়ে শুরু করুন:

পাইথন

আমাদের প্রদত্ত উদাহরণে, এটি webapp/attachment_routes.py ফাইলে রয়েছে৷

def create_attachments(filename_caption_pairs):
    """
    Create attachments and show an acknowledgement page.

    Args:
        filename_caption_pairs: A dictionary that maps image filenames to
            captions.
    """
    # Get the Google Classroom service.
    # We need to request the Classroom API from a specific URL while add-ons
    # are in Early Access.

    # A Google API Key can be created in your Google Cloud project's Credentials
    # settings: https://console.cloud.google.com/apis/credentials.
    # Click "Create Credentials" at top and choose "API key", then provide
    # the key in the discoveryServiceUrl below.
    classroom_service = googleapiclient.discovery.build(
        serviceName="classroom",
        version="v1",
        discoveryServiceUrl=f"https://classroom.googleapis.com/$discovery/rest?labels=ADD_ONS_ALPHA&key={GOOGLE_API_KEY}",
        credentials=credentials)

courses.courseWork.addOnAttachments এন্ডপয়েন্টে একটি CREATE অনুরোধ ইস্যু করুন। শিক্ষক দ্বারা নির্বাচিত প্রতিটি চিত্রের জন্য, প্রথমে একটি AddOnAttachment অবজেক্ট তৈরি করুন:

পাইথন

আমাদের প্রদত্ত উদাহরণে, এটি create_attachments পদ্ধতির ধারাবাহিকতা।

# Create a new attachment for each image that was selected.
attachment_count = 0
for key, value in filename_caption_pairs.items():
    attachment_count += 1

    # Create a dictionary with values for the AddOnAttachment object fields.
    attachment = {
        # Specifies the route for a teacher user.
        "teacherViewUri": {
            "uri":
                flask.url_for(
                    "load_content_attachment", _scheme='https', _external=True),
        },
        # Specifies the route for a student user.
        "studentViewUri": {
            "uri":
                flask.url_for(
                    "load_content_attachment", _scheme='https', _external=True)
        },
        # The title of the attachment.
        "title": f"Attachment {attachment_count}",
    }

প্রতিটি সংযুক্তির জন্য কমপক্ষে teacherViewUri , studentViewUri , এবং title ক্ষেত্রগুলি অবশ্যই প্রদান করতে হবে৷ teacherViewUri এবং studentViewUri সেই ইউআরএলগুলিকে উপস্থাপন করে যা সংশ্লিষ্ট ব্যবহারকারীর প্রকার দ্বারা সংযুক্তি খোলার সময় লোড হয়৷

একটি অনুরোধের মূল অংশে AddOnAttachment অবজেক্টটি উপযুক্ত addOnAttachments এন্ডপয়েন্টে পাঠান। প্রতিটি অনুরোধের সাথে courseId , itemId , itemType এবং addOnToken শনাক্তকারী প্রদান করুন।

পাইথন

আমাদের প্রদত্ত উদাহরণে, এটি create_attachments পদ্ধতির ধারাবাহিকতা।

# Use the itemType to determine which stream item type the teacher created
match flask.session["itemType"]:
    case "announcements":
        parent = classroom_service.courses().announcements()
    case "courseWorkMaterials":
        parent = classroom_service.courses().courseWorkMaterials()
    case _:
        parent = classroom_service.courses().courseWork()

# Issue a request to create the attachment.
resp = parent.addOnAttachments().create(
    courseId=flask.session["courseId"],
    itemId=flask.session["itemId"],
    addOnToken=flask.session["addOnToken"],
    body=attachment).execute()

আপনার স্থানীয় ডাটাবেসে এই সংযুক্তির জন্য একটি এন্ট্রি তৈরি করুন যাতে আপনি পরে সঠিক বিষয়বস্তু লোড করতে পারেন। ক্লাসরুম তৈরির অনুরোধের প্রতিক্রিয়ায় একটি অনন্য id মান প্রদান করে, তাই এটিকে আমাদের ডাটাবেসের প্রাথমিক কী হিসাবে ব্যবহার করুন। এছাড়াও মনে রাখবেন যে শিক্ষক এবং ছাত্রের ভিউ খোলার সময় Classroom attachmentId ক্যোয়ারী প্যারামিটার পাস করে:

পাইথন

আমাদের প্রদত্ত উদাহরণে, এটি create_attachments পদ্ধতির ধারাবাহিকতা।

# Store the value by id.
new_attachment = Attachment(
    # The new attachment's unique ID, returned in the CREATE response.
    attachment_id=resp.get("id"),
    image_filename=key,
    image_caption=value)
db.session.add(new_attachment)
db.session.commit()

এই মুহুর্তে ব্যবহারকারীকে একটি নিশ্চিতকরণ পৃষ্ঠায় রাউট করার কথা বিবেচনা করুন, স্বীকার করুন যে তারা সফলভাবে সংযুক্তি তৈরি করেছে৷

আপনার অ্যাড-অন থেকে সংযুক্তির অনুমতি দিন

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

সবচেয়ে সহজ পদ্ধতি হল এই ক্ষেত্রে আপনার শীর্ষ-স্তরের ডোমেন প্রদান করা, উদাহরণস্বরূপ https://example.comhttps://localhost:<your port number>/ কাজ করবে যদি আপনি আপনার স্থানীয় মেশিনটিকে ওয়েব সার্ভার হিসাবে ব্যবহার করেন।

শিক্ষক এবং ছাত্রদের দর্শনের জন্য রুট যোগ করুন

চারটি আইফ্রেম আছে যেখানে একটি Google ক্লাসরুম অ্যাড-অন লোড হতে পারে। আপনি এখন পর্যন্ত শুধুমাত্র এমন রুট তৈরি করেছেন যেগুলো অ্যাটাচমেন্ট ডিসকভারি ভিউ আইফ্রেম পরিবেশন করে। এর পরে, শিক্ষক এবং ছাত্র ভিউ আইফ্রেমগুলিও পরিবেশন করার জন্য রুট যোগ করুন।

শিক্ষক ভিউ আইফ্রেমটি শিক্ষার্থীদের অভিজ্ঞতার একটি পূর্বরূপ দেখানোর জন্য প্রয়োজন, তবে বিকল্পভাবে অতিরিক্ত তথ্য বা সম্পাদনা বৈশিষ্ট্য অন্তর্ভুক্ত করতে পারে।

স্টুডেন্ট ভিউ হল সেই পৃষ্ঠা যা প্রতিটি ছাত্রের কাছে উপস্থাপিত হয় যখন তারা একটি অ্যাড-অন সংযুক্তি খোলে।

এই অনুশীলনের উদ্দেশ্যে, একটি একক /load-content-attachment রুট তৈরি করুন যা শিক্ষক এবং ছাত্র উভয়ের জন্যই কাজ করে। পৃষ্ঠাটি লোড হওয়ার সময় ব্যবহারকারী শিক্ষক বা ছাত্র কিনা তা নির্ধারণ করতে Classroom API পদ্ধতি ব্যবহার করুন।

পাইথন

আমাদের প্রদত্ত উদাহরণে, এটি webapp/attachment_routes.py ফাইলে রয়েছে৷

@app.route("/load-content-attachment")
def load_content_attachment():
    """
    Load the attachment for the user's role."""

    # Since this is a landing page for the Teacher and Student View iframes, we
    # need to preserve the incoming query parameters.
    if flask.request.args.get("itemId"):
        flask.session["itemId"] = flask.request.args.get("itemId")
    if flask.request.args.get("itemType"):
        flask.session["itemType"] = flask.request.args.get("itemType")
    if flask.request.args.get("courseId"):
        flask.session["courseId"] = flask.request.args.get("courseId")
    if flask.request.args.get("attachmentId"):
        flask.session["attachmentId"] = flask.request.args.get("attachmentId")

মনে রাখবেন যে এই সময়ে আপনার ব্যবহারকারীকে প্রমাণীকরণ করা উচিত। আপনার এখানে login_hint এবং hd ক্যোয়ারী প্যারামিটারগুলিও পরিচালনা করা উচিত এবং প্রয়োজনে ব্যবহারকারীকে আপনার অনুমোদনের প্রবাহে রুট করা উচিত। এই প্রবাহ সম্পর্কে আরও তথ্যের জন্য পূর্ববর্তী ওয়াকথ্রুতে আলোচিত লগইন নির্দেশিকা বিশদ দেখুন।

তারপর getAddOnContext এন্ডপয়েন্টে একটি অনুরোধ পাঠান যা আইটেমের প্রকারের সাথে মেলে।

পাইথন

আমাদের প্রদত্ত উদাহরণে, এটি load_content_attachment পদ্ধতির ধারাবাহিকতা।

# Create an instance of the Classroom service.
classroom_service = googleapiclient.discovery.build(
    serviceName="classroom"
    version="v1",
    discoveryServiceUrl=f"https://classroom.googleapis.com/$discovery/rest?labels=ADD_ONS_ALPHA&key={GOOGLE_API_KEY}",
    credentials=credentials)

# Use the itemType to determine which stream item type the teacher created
match flask.session["itemType"]:
    case "announcements":
        parent = classroom_service.courses().announcements()
    case "courseWorkMaterials":
        parent = classroom_service.courses().courseWorkMaterials()
    case _:
        parent = classroom_service.courses().courseWork()

addon_context_response = parent.getAddOnContext(
    courseId=flask.session["courseId"],
    itemId=flask.session["itemId"]).execute()

এই পদ্ধতিটি ক্লাসে বর্তমান ব্যবহারকারীর ভূমিকা সম্পর্কে তথ্য প্রদান করে। ব্যবহারকারীর ভূমিকার উপর নির্ভর করে উপস্থাপিত দৃশ্য পরিবর্তন করুন। studentContext বা teacherContext ক্ষেত্রগুলির মধ্যে একটি ঠিক রেসপন্স অবজেক্টে পপুলেট করা হয়। ব্যবহারকারীকে কীভাবে সম্বোধন করা যায় তা নির্ধারণ করতে এগুলি পরীক্ষা করুন।

যাই হোক না কেন, আমাদের ডাটাবেস থেকে কোন সংযুক্তিটি পুনরুদ্ধার করতে হবে তা জানতে attachmentId ক্যোয়ারী প্যারামিটার মান ব্যবহার করুন। শিক্ষক বা ছাত্র ভিউ ইউআরআই খোলার সময় এই ক্যোয়ারী প্যারামিটার প্রদান করা হয়।

পাইথন

আমাদের প্রদত্ত উদাহরণে, এটি load_content_attachment পদ্ধতির ধারাবাহিকতা।

# Determine which view we are in by testing the returned context type.
user_context = "student" if addon_context_response.get(
    "studentContext") else "teacher"

# Look up the attachment in the database.
attachment = Attachment.query.get(flask.session["attachmentId"])

# Set the text for the next page depending on the user's role.
message_str = f"I see that you're a {user_context}! "
message_str += (
    f"I've loaded the attachment with ID {attachment.attachment_id}. "
    if user_context == "teacher" else
    "Please enjoy this image of a famous landmark!")

# Show the content with the customized message text.
return flask.render_template(
    "show-content-attachment.html",
    message=message_str,
    image_filename=attachment.image_filename,
    image_caption=attachment.image_caption,
    responses=response_strings)

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

সংযুক্তি তৈরির পরীক্ষা করার জন্য নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  • আপনার শিক্ষক পরীক্ষার ব্যবহারকারীদের একজন হিসেবে [Google Classroom]-এ সাইন ইন করুন।
  • ক্লাসওয়ার্ক ট্যাবে নেভিগেট করুন এবং একটি নতুন অ্যাসাইনমেন্ট তৈরি করুন।
  • পাঠ্য এলাকার নীচে অ্যাড-অন বোতামে ক্লিক করুন, তারপর আপনার অ্যাড-অন নির্বাচন করুন। iframe খোলে এবং অ্যাড-অন সংযুক্তি সেটআপ URI লোড করে যা আপনি GWM SDK-এর অ্যাপ কনফিগারেশন পৃষ্ঠায় উল্লেখ করেছেন।
  • অ্যাসাইনমেন্টের সাথে সংযুক্ত করার জন্য সামগ্রীর একটি অংশ চয়ন করুন।
  • সংযুক্তি তৈরির প্রবাহ সম্পূর্ণ হওয়ার পরে iframe বন্ধ করুন।

আপনি Google Google Classroom-এ অ্যাসাইনমেন্ট তৈরির UI-তে একটি সংযুক্তি কার্ড দেখতে পাবেন। শিক্ষক ভিউ আইফ্রেম খুলতে কার্ডটিতে ক্লিক করুন এবং নিশ্চিত করুন যে সঠিক সংযুক্তিটি উপস্থিত হয়েছে। অ্যাসাইন বোতামে ক্লিক করুন।

শিক্ষার্থীদের অভিজ্ঞতা পরীক্ষা করার জন্য নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  • তারপর শিক্ষক পরীক্ষা ব্যবহারকারীর মতো একই শ্রেণিতে শিক্ষার্থী পরীক্ষা ব্যবহারকারী হিসেবে ক্লাসরুমে সাইন ইন করুন।
  • ক্লাসওয়ার্ক ট্যাবে পরীক্ষার অ্যাসাইনমেন্ট খুঁজুন।
  • অ্যাসাইনমেন্টটি প্রসারিত করুন এবং স্টুডেন্ট ভিউ আইফ্রেম খুলতে অ্যাটাচমেন্ট কার্ডে ক্লিক করুন।

নিশ্চিত করুন যে শিক্ষার্থীর জন্য সঠিক সংযুক্তি উপস্থিত হয়েছে।

অভিনন্দন! আপনি পরবর্তী ধাপে এগিয়ে যেতে প্রস্তুত: অ্যাক্টিভিটি-টাইপ অ্যাটাচমেন্ট তৈরি করা