গুগল ক্লাউডের সাথে কাজের অনুসন্ধান API

এই কোডল্যাবে আপনি শিখবেন কিভাবে ক্লাউড ট্যালেন্ট সলিউশন এপিআই (সিটিএস) ব্যবহার করে আপনার প্রতিষ্ঠানের জন্য কাজের সন্ধান এবং প্রতিভা অর্জনকে উন্নত করতে হয়। CTS ব্যবহার করে আপনি আপনার কাজের সন্ধানের অভিজ্ঞতায় মেশিন লার্নিং এর শক্তি যোগ করতে পারেন!

আপনি কি শিখবেন

  • আপনার Google ক্লাউড প্রকল্পে CTS সক্ষম করুন
  • সেই কোম্পানিগুলিতে "কোম্পানি" সত্তা এবং চাকরি তৈরি করুন

আপনি কি প্রয়োজন হবে

  • বিলিং সহ একটি Google ক্লাউড প্রকল্প ইতিমধ্যেই সেট আপ করা আছে (যদি আপনার কাছে ইতিমধ্যে একটি না থাকে তবে একটি তৈরি করুন।
  • একটি ঘন্টা

আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?

শুধুমাত্র এটি মাধ্যমে পড়ুন এটি পড়ুন এবং অনুশীলনগুলি সম্পূর্ণ করুন

Google ক্লাউড প্ল্যাটফর্মের সাথে আপনার পূর্বের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী বিশেষজ্ঞ

এই টিউটোরিয়ালটি সম্পূর্ণরূপে Google ক্লাউড প্ল্যাটফর্মে চালানোর জন্য। আপনার ওয়ার্কস্টেশনে কোন ডাউনলোডের প্রয়োজন নেই।

Cloud Talent Solutions API সক্ষম করুন৷

ক্লাউড কনসোলে আপনার অ্যাপ্লিকেশন খুলুন এবং উপরের বামদিকে হ্যামবার্গার মেনুতে ক্লিক করুন। ট্যালেন্ট সলিউশন -> ওভারভিউতে মেনুগুলি ব্রাউজ করুন।

যেহেতু এটি একটি নতুন প্রকল্প, তাই আপনাকে একটি নতুন স্ক্রিনে পুনঃনির্দেশিত করা হবে যা আপনাকে API সক্ষম করতে বলবে৷ সক্ষম ক্লিক করুন এবং এই প্রকল্পের জন্য API চালু হওয়ার জন্য কয়েক মিনিট অপেক্ষা করুন।

ডেটা লগিং সক্ষম করুন

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

আমরা সেই ইভেন্টগুলি কী এবং কীভাবে সেগুলিকে পরে পাঠাতে হয় সে সম্পর্কে আরও গভীরে ডুব দেব, তবে প্রাক-প্রশিক্ষিত মডেলগুলি ঠিক কাজ করবে৷ এগিয়ে যান এবং ডেটা লগিং সক্ষম করুন, তারপর এই ডায়ালগের বাম নেভিতে "পরিষেবা অ্যাকাউন্ট সংযোগ" এ ক্লিক করুন৷

একটি পরিষেবা অ্যাকাউন্ট সেটআপ করুন

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

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

পরবর্তী ধাপে আপনাকে জিজ্ঞাসা করা হবে আপনি ব্যবহারকারীদের এই পরিষেবা অ্যাকাউন্টে অ্যাক্সেস দিতে চান কিনা। আপনি এই পদক্ষেপটি এড়িয়ে যেতে পারেন, তবে নীচের কাছে "কী তৈরি করুন" এ ক্লিক করতে ভুলবেন না। কী ধরনের জন্য "JSON" নির্বাচন করুন এবং তারপর "তৈরি করুন"। একটি নতুন JSON শংসাপত্র ফাইল স্বয়ংক্রিয়ভাবে ডাউনলোড হয়৷ আপনার সার্ভারে এই ফাইলটি সংরক্ষণ করুন, পরবর্তী বিভাগে আপনি যে কোডটি লিখবেন তা প্রমাণীকরণের জন্য ব্যবহার করবে।

পরিবেশের ভেরিয়েবল সেট করুন

সুবিধার জন্য, আমরা Google ক্লাউড শেল ব্যবহার করব। আপনি যদি আপনার নিজের উন্নয়ন পরিবেশ থেকে এটি করতে চান, দুর্দান্ত! নিশ্চিত করুন যে আপনি আপনার পছন্দের ভাষায় Google ক্লাউড SDK এবং ক্লায়েন্ট লাইব্রেরি ইনস্টল করেছেন (এই কোডল্যাবটি পাইথন ব্যবহার করবে।)। ক্লাউড শেল ইতিমধ্যেই ক্লাউড ক্লায়েন্ট লাইব্রেরি ইনস্টল করা থাকবে। সহজ, ডান?

লাইব্রেরি ব্যবহার করে কোড চালানোর জন্য, আপনাকে নিশ্চিত করতে হবে যে দুটি এনভায়রনমেন্ট ভেরিয়েবল সেট করা আছে: একটি আপনার porject আইডি নির্দিষ্ট করতে, অন্যটি আপনার পরিষেবা অ্যাকাউন্টের কী ফাইল নির্দিষ্ট করতে। চলুন সেট করা যাক.

আপনার প্রকল্প থেকে, একটি ক্লাউড শেল খুলতে আপনার ওয়েব কনসোলের উপরের ডানদিকে ">_" আইকনে ক্লিক করুন৷ আপনার প্রকল্প আইডি নির্দিষ্ট করতে নিম্নলিখিত পরিবেশ ভেরিয়েবল যোগ করুন এবং আপনার json কী ফাইলে একটি পথ সেট করুন:

export GOOGLE_CLOUD_PROJECT="your-project-id"
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"

ভেরিয়েবল সেট করা হয়েছে তা যাচাই করতে, `echo` ব্যবহার করুন।

echo $GOOGLE_CLOUD_PROJECT
echo $GOOGLE_APPLICATION_CREDENTIALS

ক্লাউড শেলে কোড এডিটর খুলুন

Google ক্লাউড কনসোল থেকে, উপরের ডানদিকে ক্লাউড শেল আইকন ব্যবহার করে ক্লাউড শেল খুলুন।

ক্লাউড শেলের উপরের ডানদিকে আইকনগুলির একটি সিরিজ থাকবে। ফাইল ক্লিক করুন -> কোড এডিটর লঞ্চ করুন , এখানে দেখানো হয়েছে:

একটি কোম্পানি তৈরি করুন

একটি নতুন সোর্স ফাইল তৈরি করতে ফাইল -> নতুন ফাইল ব্যবহার করুন এবং নীচের বিষয়বস্তু দিয়ে এটি পূরণ করুন। এটিকে create_company.py বলুন

c reate_company.py

import os

from googleapiclient.discovery import build
from googleapiclient.errors import Error

# Build the service object, passing in the api name and api version
client_service = build('jobs', 'v3')
project_id = 'projects/' + os.environ['GOOGLE_CLOUD_PROJECT']


# Specifying details for the company that's going to be created.
# These are the only two required fields.
# Optional fields are documented at
# http://googleapis.github.io/google-api-python-client/docs/dyn/jobs_v3.projects.companies.html#create
new_company = {
    'display_name': "FooCorp",
    'external_id': "foo_llc"
}
request = {'company': new_company}

try:

    # This is the API call that actually creates the new company.
    result = client_service.projects().companies().create(
       parent=project_id, body=request).execute()

    # You can easily just print the result as a string if you want
    print('Company created: %s' % result)

    # Or you can individual fields.  The fields returned depend on what's specified
    # in the "new_company" object.  To see possible fields of the
    # response, see the "create" documentation at:
    # http://googleapis.github.io/google-api-python-client/docs/dyn/jobs_v3.projects.companies.html#create
    print('%s: %s, %s' % (result.get('externalId'),
                       result.get('displayName'),
                       result.get('name')))

except Error as e:
    print('Got exception while creating company')
    raise e

এই কোড কি করছেন? এর অন্বেষণ করা যাক! এখানে দুটি প্রাসঙ্গিক ক্লায়েন্ট লাইব্রেরি কল আছে:

  • client_service = build('jobs', 'v3') Google API পাইথন ক্লায়েন্ট লাইব্রেরি ব্যবহার করে একটি পরিষেবা বস্তু তৈরি করে।
  • client_service.projects().companies().create(parent=project_id, body=request).execute() কোম্পানি তৈরি করার জন্য API কল চালায়। এই কলের প্রতিক্রিয়া হল কোম্পানির তথ্য ধারণকারী একটি বস্তু। রিকোয়েস্ট অবজেক্ট এবং রেসপন্স অবজেক্ট উভয়ের বিষয়বস্তু তৈরি পদ্ধতির জন্য ডকুমেন্টেশনে দেওয়া আছে।

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

> python create_company.py
Company created: {u'externalId': u'foo_llc', u'displayName': u'FooCorp', u'name': u'projects/[PROJECT_ID]/companies/1cd6ada9-e678-49cf-80da-aaaf8876feda'}
Foo_llc, FooCorp, projects/[PROJECT_ID]/companies/1cd6ada9-e678-49cf-80da-aaaf8876feda 

নামটি হল ইউনিক আইডেন্টিফায়ার যা জব সার্চ এপিআই দ্বারা উত্পন্ন হয়, যখন external_id হল সেই আইডেন্টিফায়ার যা আপনি আপনার নিজের কাজের সিস্টেম থেকে প্রদান করেন। যে কোনো সময় আপনি API এর মাধ্যমে কোনো বস্তুর উল্লেখ করেন, আপনাকে নামটি ব্যবহার করতে হবে।

আপডেট কোম্পানি

আপনার যদি ইতিমধ্যে সিস্টেমে একটি কোম্পানির সত্তা থাকে এবং আপনি কিছু ক্ষেত্র যোগ বা পরিবর্তন করতে চান, প্রক্রিয়াটি নিম্নলিখিত ধাপে বিভক্ত হয়:

  • কোম্পানির জন্য বর্তমান ক্ষেত্রের মান সহ একটি অবজেক্ট তৈরি করুন
  • কোম্পানির "নাম" ক্ষেত্রটিকে একটি কী হিসাবে ব্যবহার করে নতুন বা আপডেট করা ক্ষেত্রগুলির সাথে সেই বস্তুটি আপডেট করুন যাতে API জানতে পারে কোন কোম্পানিকে আপডেট করতে হবে
  • "প্যাচ" পদ্ধতি ব্যবহার করে নতুন বস্তু জমা দিন

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

একটি নতুন ফাইল তৈরি করুন, update_company.py আপনার কর্মক্ষেত্রে। নিচে দেখানো get_company পদ্ধতি যোগ করে বন্ধ হলে শুরু করুন।

update_company.py

import os

from googleapiclient.discovery import build
from googleapiclient.errors import Error

# Build the service object, passing in the api name and api version
client_service = build('jobs', 'v3')
project_id = 'projects/' + os.environ['GOOGLE_CLOUD_PROJECT']
company_name = 'Your company name goes here'


def get_company(company_name):
   try:
       company_existed = client_service.projects().companies().get(
           name=company_name).execute()
       print('Company existed: %s' % company_existed)
       return company_existed
   except Error as e:
       print('Got exception while getting company')
       raise e


newCompany = get_company()

এই মুহুর্তে আপনি একটি জিনিস লক্ষ্য করবেন তা হল API কলটি একটি কোম্পানি তৈরির মতো আকর্ষণীয়ভাবে দেখায়। ক্লায়েন্ট লাইব্রেরিটি একটি REST ইন্টারফেসের সাথে মেলে তৈরি করা হয়েছে, তাই আপনি কোম্পানিগুলিতে যে CRUD অপারেশনগুলি করছেন তা সবই client_service.projects().companies().theMethod(argName=argValue).execute().

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

update_company.py

...  
    patch = {
       'displayName': "The New Bar",
       'websiteUri': "http://www.example.com"
    }
    newCompany.update(patch)
    print("Debug: New company info %s " % newCompany)
... 

এখন কেবলমাত্র একটি অনুরোধ অবজেক্ট তৈরি করা বাকি আছে (সেখানে কী যেতে পারে তার বিশদ বিবরণের জন্য প্যাচ ডকুমেন্টেশন দেখুন) এবং API কলটি চালান।

... 
    request = {'company': newCompany}
 
    company_updated = client_service.projects().companies().patch(
        name=company_name, body=request).execute()
    print('Company updated: %s' % company_updated)
... 

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

আপনি আমাদের মন পড়ুন, পাঠক! নীচের স্নিপেটটি সম্পূর্ণ এন্ট্রি প্রতিস্থাপনের পরিবর্তে একটি আপডেট মাস্ক ব্যবহার করে একটি কোম্পানির তথ্য আপডেট চালায়।

update_company.py

... 
   # New set of fields, not the complete company object
   companyFields = {'displayName': 'The New Bar',
                    'websiteUri': 'http://shouldNotUpdate.com',
                    'externalId': 'bar_llc'}

   # Note that the mask only contains the display name, not the URL.
   # This is entirely for demonstration purposes.  This mask will tell the API
   # to update the display name, but NOT the website uri.
   mask = 'displayName'
   request = {'company': companyFields,
              'update_mask': mask}
   company_updated = client_service.projects().companies().patch(
       name=company_name,
       body=request).execute()
   print('Company updated!: %s' % company_updated)
... 

উল্লেখ্য যে API কল একই। পার্থক্য হল রিকোয়েস্ট অবজেক্টে এখন শুধু একটি ( কোম্পানী) এর পরিবর্তে দুটি ক্ষেত্র ( কম্পানি এবং আপডেট_মাস্ক ) রয়েছে। আপডেট মাস্ক হল একটি কমা-বিন্যস্ত ক্ষেত্রগুলির তালিকা। আমরা যদি মাস্কে "websiteUri" ক্ষেত্রটি অন্তর্ভুক্ত করতে চাই, তাহলে মুখোশের মানটি এর পরিবর্তে দেখতে হবে:

   mask = 'displayName,websiteUri'

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

$ python update_company.py
Company existed: {u'externalId': u'bar_llc', u'displayName': u'The New Bar', u'name': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'websiteUri': u'http://www.example.com'}
Company {u'externalId': u'bar_llc', u'displayName': u'The New Bar', u'name': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'websiteUri': u'http://www.example.com'}
New company info {u'externalId': u'bar_llc', u'name': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'displayName': 'The New Bar', u'websiteUri': 'http://www.example.com'}
Company updated: {u'externalId': u'bar_llc', u'displayName': u'The New Bar', u'name': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'websiteUri': u'http://www.example.com'}
$

চাকরির সন্ধান না করে চাকরির সন্ধানের সমাধানে খুব বেশি বিন্দু থাকবে না! গত পর্বে আমরা কোম্পানি তৈরির কথা বলেছিলাম। এখন আসুন কীভাবে চাকরি তৈরি করা যায় এবং তাদের সাথে কাজ করার জন্য সর্বোত্তম অনুশীলন সম্পর্কে কথা বলা যাক।

উল্লেখ্য যে চাকরিগুলো কোম্পানিতে সংযুক্ত করা হবে। যদি আপনার এখনও পর্যন্ত API দিয়ে তৈরি করা কোনো কোম্পানি না থাকে (অথবা আপনি যদি সফলভাবে বিভাগের শেষে "মুছে ফেলুন" কলটি চালান এবং আপনার একমাত্র কোম্পানিটি সরিয়ে ফেলেন) তাহলে ফিরে যান এবং আবার একটি কোম্পানি তৈরি করুন। তাহলে আপনি চাকরি তৈরি করতে প্রস্তুত হবেন!

একটি চাকরি তৈরি করুন

একটি কাজ তৈরি করে শুরু করা যাক!

একটি কাজ তৈরি করার জন্য, আপনার নিম্নলিখিত তথ্যের টুকরোগুলির প্রয়োজন হবে:

  • কোম্পানির নাম । মানুষের পঠনযোগ্য "আমার অভিনব কোম্পানি এলএলসি" স্ট্রিং নয়, তবে এটি আরও দীর্ঘ "প্রকল্প/[PROJECT_ID]/companies/COMPANY_ID" স্ট্রিং৷
  • চাকরির জন্য একটি রিকুইজিশন আইডি । এটি একটি কোম্পানির জন্য external_id- এর মতোই - এটি আপনার বর্তমান কাজের সমাধানের সাথে ক্লাউড ট্যালেন্ট সলিউশন API-কে সিঙ্কে রাখা সহজ করতে, চাকরির জন্য আপনার নিজস্ব অনন্য শনাক্তকারীর প্রতিনিধিত্ব করে, যেমন সিনিয়র_ল্লামা_র্যাংলার
  • চাকরির শিরোনাম , যা কাজের প্রদর্শনের নাম, যেমন "সিনিয়র লামা র্যাংলার।"
  • কাজের বিবরণ । মনে রাখবেন যে বিবরণটিতে এমবেডেড HTML থাকতে পারে যাতে আপনি এটি সঠিকভাবে ফর্ম্যাট করতে পারেন। বিষয়বস্তু বেশ স্ব-ব্যাখ্যামূলক। "<p>লামা র্যাংলারদের দলকে নেতৃত্ব দেবেন।</p><p> লামাদের সাথে নেতৃত্বের ক্ষমতা এবং অভিজ্ঞতা থাকতে হবে।"</p>
  • অ্যাপ্লিকেশন তথ্য - কিভাবে আবেদন করতে হবে সে সম্পর্কে আরও তথ্য। 1+ ইউরিস, 1+ ইমেল ঠিকানা, বা আরও নির্দেশাবলী সহ একটি HTML ফর্ম্যাট করা স্ট্রিং হতে পারে। আপনি এমনকি সব 3 অন্তর্ভুক্ত করতে পারেন! তবে আপনাকে কমপক্ষে 1টি অন্তর্ভুক্ত করতে হবে।

সুতরাং আমরা যদি আমাদের পূর্বে তৈরি কর্পোরেশন FooCorp-এর জন্য একটি চাকরি তৈরি করতে চাই, তাহলে ক্ষেত্রগুলি দেখতে এইরকম হতে পারে:

নাম

projects/[PROJECT_ID]/companies/0123-Big-Hex-String-AABB0

requisition_id

সিনিয়র_লামা_র্যাংলার

শিরোনাম

সিনিয়র লামা র‍্যাংলার

বর্ণনা

একটি পূর্ণ-সময়ের অবস্থানের জন্য অভিজ্ঞ লামা র‍্যাংলার প্রয়োজন। নেতৃত্বের দক্ষতার প্রয়োজন, কারণ আপনি লামা কেয়ারগিভারদের একটি দল নিয়ে যাবেন এবং তাদের সম্পূর্ণ-স্কেল র্যাংলারদের প্রশিক্ষণ দেবেন।<p/>প্রাণীদের সাথে ভালভাবে কাজ করতে হবে এবং মাঝে মাঝে সত্যিই সত্যিই দ্রুত দৌড়ানোর জন্য প্রস্তুত থাকতে হবে। সত্যিই দ্রুত মত. এগুলি কিছু দ্রুত লামা।

অ্যাপ্লিকেশন_তথ্য

উরিস: http://www.example.com/llama_wrangler_application/

ইমেল: llama-apply@example.com

আপনার যদি কোম্পানির নাম আর না থাকে, তাহলে আপনি "get_company" কোডটি ব্যবহার করতে পারেন যা আপনি ধাপ 3-এ ব্যবহার করেছেন সেটি পুনরুদ্ধার করতে।

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

create_job.py নামের একটি ফাইলে নিচের স্নিপেটটি পেস্ট করুন। আপনি আসলে এটিকে আপনি যা চান তা বলতে পারেন, তবে এই টিউটোরিয়ালটি সেই ফাইলের নামটি ধরে নেবে।

create_job.py

import os

from googleapiclient.discovery import build
from googleapiclient.errors import Error

client_service = build('jobs', 'v3')
project_id = 'projects/' + os.environ['GOOGLE_CLOUD_PROJECT']

new_job = {
   'company_name': 'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e',
   'title': 'Senior Llama Wrangler',
   'description':
   """Experienced Llama Wrangler required for full-time position.
   Leadership ability required, as you will be taking a team of llama
   caregivers and training them up to full-scale wranglers.
   <p/>Must work well with animals and occasionally be prepared to run
   really, like really really fast.  Like REALLY fast.
   These are quick llamas.""",
   'requisition_id': 'senior_llama_wrangler',
   'application_info': {
       'uris': ['http://www.example.com/llama-wrangler-application'],
       'emails': ['llama-apply@example.com']
   }
}

try:
   # Nest that Job object in a "job" object.  Now it's an API request!
   request = {'job': new_job}

   # The actual API call happens here.
   result = client_service.projects().jobs().create(
       parent=project_id, body=request).execute()
   print('Job created: %s' % result)

except Error as e:
   print('Got exception while creating job')
   raise e

ক্লাউড শেল থেকে এটি চালান এবং আপনার তৈরি করা কাজের সাথে JSON এর একটি বড় ব্লব ফিরে পাওয়া উচিত।

$ python create_job.py
Job created: {u'languageCode': u'en', u'description': u'Experienced Llama Wrangler required for full-time position. Leadership ability required, as you will be taking a team of llama caregivers and training them up to full-scale wranglers.Must work well with animals and occasionally be prepared to run really, like really really fast. Like REALLY fast. These are some quick llamas.', u'applicationInfo': {u'emails': [u'llama-apply@example.com'], u'uris': [u'http://www.example.com/llama-wrangler-application']}, u'companyName': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'requisitionId': u'senior_llama_wrangler', u'title': u'Senior Llama Wrangler', u'postingExpireTime': u'2019-09-11T16:04:48.546Z', u'visibility': u'ACCOUNT_ONLY', u'postingCreateTime': u'2019-08-12T16:04:48.546Z', u'companyDisplayName': u'Masked Panda Inc', u'postingUpdateTime': u'2019-08-12T16:04:48.611Z', u'postingPublishTime': u'2019-08-12T16:04:48.611Z', u'name': u'projects/[PROJECT_ID]/jobs/12345}

যদি আপনি উপরের মত কিছু ফিরে পেতে, আপনি সফলভাবে একটি কাজ তৈরি!

চাকরি অনন্য হতে হবে

একটি পরীক্ষা হিসাবে, সেই শেষ স্ক্রিপ্টটি আবার চালান, এবং দেখা যাক কি হয়৷

$ python create_job.py
Got exception while creating job
Traceback (most recent call last):
  File "create_job.py", line 37, in <module>
    raise e
googleapiclient.errors.HttpError: <HttpError 409 when requesting https://jobs.googleapis.com/v3/projects/[PROJECT_ID]/jobs?alt=json returned "Job projects/[PROJECT_ID]/jobs/103672929591403206 already exists. Request ID for tracking: ec94f4cb-70f1-48cf-bae6-b4dad056ac3f:APAb7ITRlgTTpVMONSSBCG4LnFzqR765Eg==. Related Job requisition ID: senior_llama_wrangler.">

সেখানে কি ঘটেছিল? আপনি একটি সদৃশ কাজের তালিকা প্রবেশ করার চেষ্টা করেছেন৷ মেয়াদ শেষ না হওয়া চাকরিগুলিকে সিস্টেমে অনন্য হতে হবে।

স্বতন্ত্রতা নিম্নলিখিত ক্ষেত্র দ্বারা নির্ধারিত হয়:

  • কোম্পানির নাম - আপনি চাকরি তৈরি করার সময় প্রয়োজন, আপডেটযোগ্য নয়
  • রিকুইজিশন আইডি - আপনি চাকরি তৈরি করার সময় প্রয়োজন, আপডেটযোগ্য নয়
  • ভাষা কোড - ঐচ্ছিক, en_us-এ ডিফল্ট, আপডেটযোগ্য

আপনি যে কাজটি তৈরি বা আপডেট করার চেষ্টা করেন তাতে যদি বিদ্যমান, মেয়াদ শেষ না হওয়া কাজের সাথে এই 3টি ক্ষেত্র মিল থাকে, তবে এটি একটি সদৃশ হিসাবে বিবেচিত হয় এবং এটি তৈরি/আপডেট ব্যর্থ হয়, সেই ত্রুটি বার্তাটি আপনি উপরে দেখছেন।

হুররে!

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

আরো আছে, যদিও! চলো যেতে থাকি.

একটি কাজ আপডেট করা হচ্ছে

ঠিক যেমন কোম্পানিগুলির সাথে, আমরা এটির বিবরণ দেখতে একটি কাজ পেতে পারি এবং এটি আপডেট করার জন্য একটি কাজ প্যাচ করতে পারি৷

আপনি কিভাবে কাজের বিবরণ পাবেন তা এখানে। যদি নিচের স্নিপেটটি পরিচিত মনে হয়, তাহলে এর কারণ হল আমরা পূর্ববর্তী বিভাগ থেকে "get_company" পদ্ধতিটি নিয়েছি এবং "company" কে "job" দিয়ে প্রতিস্থাপন করেছি এবং job_name ভেরিয়েবলে যোগ করেছি। চলুন প্রথমে চাকরির তথ্য জেনে নেওয়া যাক।

update_job.py

import os

from googleapiclient.discovery import build
from googleapiclient.errors import Error

client_service = build('jobs', 'v3')
project_id = 'projects/' + os.environ['GOOGLE_CLOUD_PROJECT']

# The interesting bit
def get_job():
   try:
       job_existed = client_service.projects().jobs().get(
           name=job_name).execute()
       print('Job existed: %s' % job_existed)
       return job_existed
   except Error as e:
       print('Got exception while getting job')
       raise e

job_name = "projects/[PROJECT_ID]/jobs/12345"
job_info = get_job(job_name)

কাজটি প্রকৃতপক্ষে আপডেট করার জন্য, আপনি কোম্পানি আপডেট করার সময় আপনার কাছে আগের মতো একই বিকল্প রয়েছে: পুরানোটিকে প্রতিস্থাপন করতে আপডেট করা মান সহ একটি সম্পূর্ণ বস্তু পাঠান, অথবা একটি কমা-বিচ্ছিন্ন ফিল্ড মাস্ক সহ একটি ছোট প্যাচ জমা দিন৷

update_job.py (সম্পূর্ণ বস্তু প্রতিস্থাপন সহ আপডেট)

   # First the full-replacement method.  Update the complete job object with new field values.
   job_patch = {
       'title': "Rogue Llama Acquisition Engineer"
   }

   job_info.update(job_patch)
   request = {"job": job_info}

   job_updated = client_service.projects().jobs().patch(
       name=job_name, body=request).execute()
   print ("Updated job info : %s" % job_updated)

update_job.py (শুধুমাত্র নতুন ক্ষেত্রের মান এবং একটি আপডেট মাস্ক সহ)

   # Alternatively, if you know which fields have been updated, you can submit a patch with just the changes
   # and an update mask. This time let's just re-use the same job patch, and create an update mask.
   job_patch = {
       'title': "Rogue Llama Acquisition Engineer"
   }

   update_mask = "title"
   request = {"job": job_patch,
              "updateMask": update_mask
              }

   job_updated = client_service.projects().jobs().patch(
       name=job_name, body=request).execute()

   print ("Updated job info : %s" % job_updated)   

উপরের দুটি স্নিপেট ঠিক একই কাজ করে: তারা চাকরির শিরোনাম "Rogue Llama Acquisition Engineer" সহ একটি নির্দিষ্ট কাজের তালিকা আপডেট করে। এছাড়াও মনে রাখবেন যে লাইনটি যেটি API কল করে তা একই: একমাত্র পার্থক্য অনুরোধ বস্তুতে। একজনের কাছে একটি সম্পূর্ণ কাজের অবজেক্ট রয়েছে যা সেই কাজের নামের সাথে প্রতিস্থাপন করবে। অন্যটি কেবল আপডেট করার জন্য ক্ষেত্রগুলির একটি সেট।

আপনি যেটি চালানোর জন্য বেছে নিন না কেন, আউটপুট একই হবে। ইহাকে একটি লাথি দাও!

$ python update_job
Updated job info : {u'languageCode': u'en', u'description': u'Experienced Llama Wrangler required for full-time position. Leadership ability required, as you will be taking a team of llama caregivers and training them up to full-scale wranglers.Must work well with animals and occasionally be prepared to run really, like really really fast. Like REALLY fast. These are some quick llamas.', u'applicationInfo': {u'emails': [u'llama-apply@example.com'], u'uris': [u'http://www.example.com/llama-wrangler-application']}, u'companyName': u'projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e', u'derivedInfo': {u'jobCategories': [u'SCIENCE_AND_ENGINEERING']}, u'requisitionId': u'senior_llama_wrangler', u'title': u'Rogue Llama Acquisition Engineer', u'postingExpireTime': u'2019-09-11T16:04:48.546Z', u'visibility': u'ACCOUNT_ONLY', u'postingCreateTime': u'2019-08-12T16:04:48.546Z', u'companyDisplayName': u'Masked Panda Inc', u'postingUpdateTime': u'2019-08-12T19:28:41.850Z', u'postingPublishTime': u'2019-08-12T16:04:48.611Z', u'name': u'projects/[PROJECT_ID]/jobs/12345}

হুররে! আপনি ধাপ 4 সম্পূর্ণ করেছেন!

আচ্ছা, এখন তোমার দিকে তাকাও। উৎপাদনশীলতা দৈত্যের কিছু সাজানোর মত এই সব আউট ছিটকে. এখন পর্যন্ত আপনি কোম্পানী তৈরি করতে পারেন, চাকরি তৈরি করতে পারেন, এবং উভয়ই একটি ইচ্ছামত আপডেট করতে পারেন! কিন্তু আপনি এই পাঠগুলি থেকে কৌতূহলীভাবে অনুপস্থিত কিছু লক্ষ্য করেছেন। যে একটি চূড়ান্ত অপারেশন যা CRUD এ D রাখে। যদি আমরা তাদের মুছে ফেলতে চাই? চিন্তা করবেন না, পাঠক! পরবর্তী বিভাগে এটি বিস্তারিতভাবে কভার করা হয়েছে।

চলুন শুরু করা যাক কোম্পানিগুলির সাথে, যে কারণে এখন থেকে প্রায় 5 মিনিটের মধ্যে বর্ণনামূলক অর্থ তৈরি হবে৷

একটি কোম্পানি মুছুন

একটি কোম্পানি মুছে ফেলা বেশ সহজ। একটি কোম্পানি তৈরি বা আপডেট করার সময় আপনি একই আমদানি বিবৃতি ব্যবহার করে, শুধুমাত্র কোম্পানির নামে পাস করে, শুধুমাত্র মুছে ফেলার পদ্ধতিটি কল করুন (কোন অনুরোধের শরীরের প্রয়োজন নেই)।

   # Yup, that's the whole thing.
   company_to_delete = "Insert company name here"
   result = client_service.projects().companies().delete(
       name=company_to_delete).execute()

আপনি যখন এই API অন্বেষণ করছেন তখন ক্লিনআপে সহায়তা করার জন্য, এখানে একটি সাধারণ পাইথন স্ক্রিপ্ট রয়েছে যা একটি কোম্পানির নাম একটি কমান্ড লাইন প্যারামিটার হিসাবে নেয় এবং আপনি এটি অনুমান করেছেন, কোম্পানিটি মুছে ফেলে৷

delete_company.py

from googleapiclient.discovery import build
from googleapiclient.errors import Error

client_service = build('jobs', 'v3')

# Name of the company to delete
company_to_delete = 'projects/[PROJECT_ID]/companies/123-abc-123'

try:
   # Yup, that's the whole thing.
   result_company = client_service.projects().companies().delete(
       name=company_to_delete).execute()

   print('Result of deleting company: %s' % result_company)

except Error as e:
   print('Got exception while deleting company')
   raise e

এটিকে কল করুন, একমাত্র কমান্ড-লাইন আর্গুমেন্ট হিসাবে কোম্পানির নামে পাস করা।

$ python delete_company.py projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e
Got exception while deleting company
Traceback (most recent call last):
  File "delete_company.py", line 29, in <module>
    raise e
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://jobs.googleapis.com/v3/projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e?alt=json returned "Company with name projects/[PROJECT_ID]/companies/083495ad-acba-477f-a084-8be84f31692e still has open jobs. Request ID for tracking: 6b9fe1a0-50ae-48b0-b33d-1622d547c363:APAb7ISnO4taWI4poffoX/EqzRCPSwpEbQ==">

এবং সেখানে আপনি এটা আছে! আপনি সফল - এক সেকেন্ড অপেক্ষা করুন. ওটা কী? একটি ভুল? "এখনও খোলা চাকরি আছে"?

হ্যাঁ! এখন আপনি কোম্পানিগুলি মুছে ফেলার প্রথম নিয়মটি জানেন: যতক্ষণ না সেই কোম্পানির এখনও খোলা চাকরি থাকবে ততক্ষণ এটি ব্যর্থ হবে। কিভাবে আমরা যে মোকাবেলা করব? ঠিক আছে, আমাদের সেই কোম্পানীর সাথে যুক্ত সমস্ত খোলা চাকরি মুছে ফেলতে হবে।

এখন আপনি যে সম্পূর্ণ যুক্তিসঙ্গত কথা ভাবছেন তা হল, "আমি এইমাত্র যে কাজটি তৈরি করেছি তা মুছে ফেলব, এবং তারপরে এটি যে কোম্পানির সাথে গিয়েছিল তা মুছে ফেলব!" এটা বোঝা যায়, পাঠক! এটা করা যাক.

delete_company.py

from googleapiclient.discovery import build
from googleapiclient.errors import Error

client_service = build('jobs', 'v3')

# Replace with your actual company and job names.
company_to_delete = 'projects/[PROJECT_ID]/companies/123-abc-123'
job_to_delete = 'projects/[PROJECT_ID]/jobs/12345'

try:
   result_job = client_service.projects().jobs().delete(
       name=job_to_delete).execute()

   result_company = client_service.projects().companies().delete(
       name=company_to_delete).execute()

   print('Result of deleting job: %s' % result_job)
   print('Result of deleting company: %s' % result_company)

except Error as e:
   print('Got exception while deleting company')
   raise e

এখন আবার চালানোর চেষ্টা করুন। সেই API কলগুলি থেকে প্রত্যাবর্তিত মানগুলি বর্তমান "কোম্পানী" এবং "চাকরি" এন্ট্রি হওয়া উচিত, যা বলতে গেলে খালি হওয়া উচিত।

python delete_company.py
Result of deleting job: {}
Result of deleting company: {}

আহহ. সাবাশ.

ত্য জ্যজ্জকিজ. উপরের সমাধানটি দুর্দান্ত কাজ করেছে কারণ আপনি, পাঠক,

  • ইতিমধ্যেই এই কোম্পানির জন্য সমস্ত বিদ্যমান চাকরির জন্য কাজের নাম হাতে আছে।
  • সেই কোম্পানির জন্য "ম্যানুয়ালি মুছে ফেলার জন্য অনেক বেশি" চাকরি তৈরি করেনি।

আসুন ভান করি যে ঘটনাটি ছিল না

একটি API কল আছে, jobs.list() , যা একটি নির্দিষ্ট প্রজেক্ট আইডি এবং মূল কোম্পানির সাথে মিলে যাওয়া চাকরি ফিরিয়ে দেবে। এইভাবে আপনি পদ্ধতিটিকে কল করবেন:

jobs_response = client_service.projects().jobs().list(
    parent=project_id,
    filter='companyName="' + company_name + '"').execute()
if jobs_response.get('jobs') is not None:
    for job in jobs_response.get('jobs'):
        print('- %s: %s' % (
              job.get('title'),
              job.get('name')))

আপনি এখন গুগল ক্লাউড ট্যালেন্ট সলিউশন জব সার্চ API ব্যবহার করে কোম্পানি এবং চাকরির তালিকা তৈরি এবং পরিচালনা করতে পারেন!

আমরা কভার করেছি কি

  • কোম্পানি তৈরি এবং পরিচালনা
  • সেই কোম্পানিগুলির জন্য কাজের তালিকা তৈরি এবং পরিচালনা করা
  • আপনার পক্ষ থেকে API এর সাথে ইন্টারঅ্যাক্ট করার জন্য পরিষেবা অ্যাকাউন্ট সেট আপ করা

আরও জানুন