Google ক্লাউড ফাংশনগুলির সাথে আপনার Gmail ইনবক্সকে শক্তিশালী করুন৷

1. ভূমিকা

কোটি কোটি ব্যবসা এবং ব্যক্তি তথ্য যোগাযোগ এবং প্রক্রিয়াকরণের জন্য Gmail এবং অন্যান্য G Suite পরিষেবা ব্যবহার করে। Google আপনাকে এই পরিষেবাগুলিতে প্রোগ্রাম্যাটিকভাবে তথ্য অ্যাক্সেস করতে সাহায্য করার জন্য G Suite API অফার করে এবং আপনি সহজেই আপনার দৈনন্দিন কর্মপ্রবাহ স্বয়ংক্রিয় করতে API ব্যবহার করতে পারেন। এই ল্যাবে, আপনি একটি শক্তিশালী Gmail এক্সটেনশন তৈরি করবেন যা স্বয়ংক্রিয়ভাবে আগত বার্তাগুলিতে ইমেলগুলিকে শ্রেণীবদ্ধ করে এবং একটি Google শীটে সেই বিভাগগুলি সংরক্ষণ করে। এই এক্সটেনশনটি G Suite এর RESTful API, Google Cloud Functions এবং অন্যান্য Google Cloud Platform পরিষেবা ব্যবহার করবে।

তুমি কী তৈরি করবে

এই ল্যাবে, আপনি G Suite API এবং অন্যান্য Google Cloud Platform পরিষেবার সাথে সংযুক্ত কয়েকটি Cloud Function তৈরি এবং স্থাপন করবেন। এই ফাংশনগুলি করবে:

  • আপনার Gmail এবং Google Sheets ডেটাতে নিরাপদ অ্যাক্সেস অনুমোদন করুন
  • যেকোনো ইনকামিং মেইলের সাথে সংযুক্ত ছবিগুলি বের করুন
  • ক্লাউড ভিশন এপিআই ব্যবহার করে সেই ছবিগুলিকে শ্রেণীবদ্ধ করুন
  • গুগল শিটে সেই বিভাগগুলি, প্রেরকের ঠিকানা এবং সংযুক্তির নাম লিখুন।

তুমি কি শিখবে

  • জি স্যুট রেস্টফুল এপিআই-এর মূল বিষয়গুলি
  • গুগল ক্লাউড ফাংশন এবং অন্যান্য গুগল ক্লাউড প্ল্যাটফর্ম পরিষেবার মূল বিষয়গুলি
  • গুগল ক্লাউড ফাংশন ব্যবহার করে প্রোগ্রাম্যাটিকভাবে জিমেইল অ্যাক্সেস করার পদ্ধতি

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

  • জিমেইল এবং গুগল শিটস অ্যাক্সেস সহ একটি গুগল অ্যাকাউন্ট। যদি আপনার কাছে না থাকে, তাহলে এখানে একটি তৈরি করুন
  • জাভাস্ক্রিপ্ট/নোড.জেএস এর প্রাথমিক জ্ঞান।

২. প্রথমেই

API গুলি সক্ষম করুন

এই ল্যাবে আপনি নিম্নলিখিত Google পণ্য/পরিষেবাগুলি ব্যবহার করবেন:

  • গুগল ক্লাউড ফাংশন
  • গুগল ক্লাউড পাব/সাব
  • গুগল ক্লাউড ভিশন এপিআই
  • গুগল ক্লাউড ডেটাস্টোর
  • জিমেইল এপিআই
  • গুগল শিটস এপিআই

গুগল ক্লাউড ফাংশন

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

গুগল ক্লাউড ফাংশন সক্রিয় করতে, আপনার স্ক্রিনের উপরের বাম দিকে হ্যামবার্গার মেনুতে ক্লিক করে বাম নেভিগেশন সাইডবারটি খুলুন:

f457988e33594bb6.png

নেভিগেশন মেনুতে ক্লাউড ফাংশন খুঁজুন এবং এটিতে ক্লিক করুন। আপনার প্রকল্পে গুগল ক্লাউড ফাংশন সক্ষম করতে Enable API এ ক্লিক করুন।

গুগল ক্লাউড পাব/সাব

গুগল ক্লাউড পাব/সাব হল ডেটা স্ট্রিমিং এবং ইভেন্ট ডেলিভারির জন্য একটি সহজ এবং স্কেলেবল ভিত্তি। এই ল্যাবে এটি জিমেইল এবং গুগল ক্লাউড ফাংশনের মধ্যে কুরিয়ার হিসেবে কাজ করে।

গুগল ক্লাউড পাব/সাব সক্ষম করতে, বাম নেভিগেশন সাইডবারটি খুলুন, Pub/সাব খুঁজুন এবং এটিতে ক্লিক করুন। আপনার প্রকল্পে গুগল ক্লাউড পাব/সাব সক্ষম করতে Enable API এ ক্লিক করুন।

গুগল ক্লাউড ডেটাস্টোর

গুগল ক্লাউড ডেটাস্টোর একটি সার্ভারলেস ডাটাবেস যা স্কেলেবল এবং বিতরণযোগ্য।

গুগল ক্লাউড ডেটাস্টোর সক্ষম করতে, বাম নেভিগেশন সাইডবারে, ডেটাস্টোর খুঁজুন এবং এটিতে ক্লিক করুন। নতুন পৃষ্ঠায় ডেটাস্টোর মোড নির্বাচন করুন এ ক্লিক করুন।

98012c91fd4080d4.png সম্পর্কে

এই ল্যাবের জন্য আপনি যেকোনো ডাটাবেস লোকেশন ব্যবহার করতে পারেন। গুগল ক্লাউড ডেটাস্টোর সক্ষম করতে ডাটাবেস তৈরি করুন ক্লিক করুন; এটি সম্পন্ন হতে কয়েক মিনিট সময় লাগতে পারে।

গুগল ক্লাউড ভিশন

গুগল ক্লাউড ভিশন এপিআই একটি শক্তিশালী মেশিন লার্নিং পরিষেবা যা আপনার ছবি থেকে অন্তর্দৃষ্টি পেতে প্রাক-প্রশিক্ষিত মডেল ব্যবহার করে।

গুগল ক্লাউড ভিশন এপিআই কীভাবে সক্ষম করবেন সে সম্পর্কে তথ্যের জন্য নীচের নির্দেশাবলী দেখুন।

জিমেইল এপিআই, গুগল শিটস এপিআই এবং গুগল ক্লাউড ভিশন এপিআই সক্ষম করা

আবার, বাম নেভিগেশন সাইডবার খুলুন এবং APIs & Services খুঁজুন। Library এ ক্লিক করুন। Search for APIs & Services ক্ষেত্রে, Gmail টাইপ করুন। অনুসন্ধান ফলাফলে, Gmail API নির্বাচন করুন এবং Enable এ ক্লিক করুন।

API লাইব্রেরি পৃষ্ঠায় ফিরে যান। Google Sheets API অনুসন্ধান করুন এবং এটি সক্ষম করুন।

প্রক্রিয়াটি পুনরাবৃত্তি করুন। ক্লাউড ভিশন API অনুসন্ধান করুন এবং এটি সক্রিয় করুন।

গুগল ক্লাউড শেল খুলুন

এই ল্যাবে, আপনি বেশিরভাগ ক্রিয়াকলাপ সম্পাদনের জন্য Google Cloud Shell ব্যবহার করবেন। Cloud Shell আপনাকে আপনার ব্রাউজার থেকে সরাসরি আপনার Google Cloud Platform রিসোর্সে কমান্ড-লাইন অ্যাক্সেস প্রদান করে, যার ফলে আপনি স্থানীয় মেশিন ব্যবহার না করেই সেগুলি পরিচালনা করতে পারবেন।

গুগল ক্লাউড শেল খুলতে, উপরের নীল অনুভূমিক বারে "অ্যাক্টিভেট ক্লাউড শেল" বোতামটি ক্লিক করুন:

অনুসরণ

স্ক্রিনের নীচে একটি নতুন প্যানেল প্রদর্শিত হবে:

34f498402e910802.png সম্পর্কে

ক্লাউড শেল কোড এডিটর শুরু করতে লঞ্চ কোড এডিটর বোতামে ক্লিক করুন:

10f8631ef48bed22.png সম্পর্কে

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

কোডটি ডাউনলোড করুন

প্রকল্পটি ক্লোন করতে আপনার ক্লাউড শেলে নীচের কমান্ডটি চালান:

git clone https://github.com/googlecodelabs/gcf-gmail-codelab.git

cd gcf-gmail-codelab

ক্লাউড শেল কোড এডিটরে আপনি একটি নতুন ফোল্ডার, gcf-gmail-codelab , দেখতে পাবেন।

৩. স্থাপত্য সারসংক্ষেপ

এই ল্যাবের কর্মপ্রণালী নিচে দেওয়া হল:

79c5d3e43f674b33.png সম্পর্কে

  1. ব্যবহারকারী জিমেইল পুশ নোটিফিকেশন সেট আপ করে: ইনবক্সে যখনই কোনও নতুন বার্তা আসবে, জিমেইল ক্লাউড পাব/সাব-এ একটি নোটিফিকেশন পাঠাবে।
  2. ক্লাউড পাব/সাব গুগল ক্লাউড ফাংশনে নতুন বার্তা বিজ্ঞপ্তি সরবরাহ করে।
  3. নতুন বার্তার বিজ্ঞপ্তি আসার পর, একটি ক্লাউড ফাংশন ইনস্ট্যান্স Gmail এর সাথে সংযুক্ত হয় এবং নতুন বার্তাটি পুনরুদ্ধার করে।
  4. যদি মেইলে সংযুক্তি হিসেবে একটি ছবি থাকে, তাহলে ক্লাউড ফাংশন ইনস্ট্যান্স সংযুক্তি বিশ্লেষণ করার জন্য ক্লাউড ভিশন API কল করে।
  5. ক্লাউড ফাংশন ইনস্ট্যান্স আপনার পছন্দের একটি গুগল শিট আপডেট করে, কে বার্তা পাঠাবে এবং সংযুক্তিটি কোথায় ডাউনলোড করবে তা নির্দিষ্ট করে।

৪. Gmail অ্যাক্সেস অনুমোদন করুন

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

একটি OAuth ক্লায়েন্ট নিবন্ধন করুন

গুগল ক্লাউড কনসোলের বাম দিকের নেভিগেশন মেনুতে, APIs & Services খুঁজুন। OAuth সম্মতি স্ক্রিনে ক্লিক করুন।

91b2a3bac30bb2c5.png সম্পর্কে

অ্যাপ্লিকেশন নাম ক্ষেত্রে একটি নাম টাইপ করুন, যেমন GCF + Gmail Codelab । অন্যান্য সেটিংস অক্ষত রেখে, পৃষ্ঠাটি নীচে স্ক্রোল করুন এবং সংরক্ষণ করুন এ ক্লিক করুন।

একটি সংশ্লিষ্ট ক্লায়েন্ট আইডি তৈরি করুন

Credentials ট্যাবে যান। Create Credentials এ ক্লিক করুন এবং OAuth client ID নির্বাচন করুন। ওয়েব অ্যাপ্লিকেশনের ধরণটি নির্বাচন করুন, এটির একটি নাম দিন (আপনি এখানে আবার GCF + Gmail Codelab ব্যবহার করতে পারেন), এবং Create এ ক্লিক করুন। আপাতত সীমাবদ্ধতা ক্ষেত্রগুলি খালি রাখুন।

পপ-আপ উইন্ডোতে ক্লায়েন্ট আইডি এবং ফিরে আসা ক্লায়েন্ট সিক্রেটটি লিখুন। এই মানগুলি আবার দেখতে আপনি পৃষ্ঠায় আপনার ক্লায়েন্টের নামে ক্লিক করতে পারেন:

1160d8027ea52d90.png সম্পর্কে

অনুমোদন প্রক্রিয়াটি সম্পাদন করুন

নমুনা কোডে, auth/index.js দুটি ক্লাউড ফাংশন নির্দিষ্ট করে, auth_init এবং auth_callback , যা ক্লায়েন্ট আইডি এবং আপনার তৈরি করা ক্লায়েন্ট সিক্রেট ব্যবহার করে অনুমোদন প্রক্রিয়া সম্পাদনের জন্য একসাথে কাজ করে।

কোডটি পরীক্ষা করতে, ক্লাউড শেল কোড এডিটরে auth/index.js খুলুন।

অনুমোদন প্রক্রিয়া দুই ধরণের টোকেন প্রদান করে: অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেন

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

সাধারণত, এগুলি হয় এনক্রিপ্ট করা হয় এবং/অথবা অ্যাক্সেস টোকেন থেকে আলাদাভাবে সংরক্ষণ করা হয়।

ক্লাউড শেল কোড এডিটরে auth/env_vars.yaml এডিট করুন। YOUR-GOOGLE-CLIENT-ID এবং YOUR-GOOGLE-CLIENT-SECRET এর পরিবর্তে আপনার নিজস্ব মান ব্যবহার করুন। আরও তথ্যের জন্য আগের ধাপটি দেখুন। YOUR-GOOGLE-CLIENT-CALLBACK-URL এবং YOUR-PUBSUB-TOPIC এর মান আপাতত অপরিবর্তিত রাখুন।

a2b4853c39a78bc6.png সম্পর্কে

auth/env_vars.yaml সম্পাদনা করার পরে, ক্লাউড ফাংশন স্থাপন করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

cd ~
cd gcf-gmail-codelab/auth

# Deploy Cloud Function auth_init
gcloud functions deploy auth_init --runtime=nodejs8 --trigger-http --env-vars-file=env_vars.yaml

# Deploy Cloud Function auth_callback
gcloud functions deploy auth_callback --runtime=nodejs8 --trigger-http --env-vars-file=env_vars.yaml

ক্লাউড ফাংশন স্থাপন করতে কয়েক মিনিট সময় লাগতে পারে। যদি অনুরোধ করা হয়, তাহলে ক্লাউড SDK কে বিটা কমান্ড ইনস্টল করার অনুমতি দিন।

এরপর, Google Cloud Console-এ যান, এবং বাম দিকের নেভিগেশন মেনুতে Cloud Functions- এ ক্লিক করুন। Cloud Functions-এর তালিকা থেকে auth_callback ক্লিক করুন, এবং Trigger ট্যাবে যান।

cb094bd341f9b299.png সম্পর্কে

45678a327c80e0f1.png সম্পর্কে

পৃষ্ঠার URL টি অনুলিপি করুন। ক্লাউড ফাংশন পৃষ্ঠায় ফিরে যান, ক্লাউড ফাংশনের তালিকা থেকে auth_init এ ক্লিক করুন। সাধারণ ট্যাবে, সম্পাদনা ক্লিক করুন। পরিবেশগত পরিবর্তনশীল, নেটওয়ার্কিং, সময়সীমা এবং আরও ক্লিক করুন, এবং GOOGLE_CALLBACK_URL এর মানটি আপনার কপি করা URL দিয়ে প্রতিস্থাপন করুন।

939ca3bd38047282.png সম্পর্কে

পরিবর্তনগুলি প্রয়োগ করতে Deploy এ ক্লিক করুন। প্রক্রিয়াটি পুনরাবৃত্তি করুন এবং auth_callback আপডেট করুন।

সবশেষে, বাম দিকের নেভিগেশন মেনু খুলুন এবং APIs & Services > Domain verification এ ক্লিক করুন। একটি অনুমোদিত ডোমেইন যোগ করতে, Add domain এ ক্লিক করুন। উদাহরণস্বরূপ, যদি আপনার আগে কপি করা URLটি এরকম দেখায়

https://us-central1-my-project.cloudfunctions.net/auth_callback

আপনার নিম্নলিখিতগুলি একটি অনুমোদিত ডোমেন হিসাবে যুক্ত করা উচিত:

us-central1-my-project.cloudfunctions.net

নিশ্চিত করতে ডোমেইন যোগ করুন টিপুন।

4348748f232ceb87.png সম্পর্কে

ক্রেডেনশিয়াল পৃষ্ঠায় ফিরে যান। আপনার OAuth ক্লায়েন্টের নামে ক্লিক করুন এবং আপনার কপি করা URL টি একটি Authorized redirect URI হিসেবে যোগ করুন। নিশ্চিত করতে Enter টিপুন।

URL থেকে /auth_callback অংশটি সরিয়ে ফেলুন এবং বাকি অংশটি Authorized Javascript origin হিসেবে যোগ করুন। উদাহরণস্বরূপ, যদি আপনার URLটি দেখতে এরকম হয়

https://us-central1-my-project.cloudfunctions.net/auth_callback

আপনার উৎপত্তিস্থল হিসেবে নিম্নলিখিতটি যোগ করা উচিত:

https://us-central1-my-project.cloudfunctions.net/

159bad719432582c.png সম্পর্কে

নিশ্চিত করতে এন্টার টিপুন এবং পরিবর্তনগুলি প্রয়োগ করতে সংরক্ষণ করুন ক্লিক করুন।

৫. জিমেইল পুশ নোটিফিকেশন সেট আপ করুন

অনুমোদন প্রক্রিয়া সফল হলে, auth_callback স্বয়ংক্রিয়ভাবে পুশ বিজ্ঞপ্তি সেট আপ করার জন্য Gmail API-তে কল করবে।

জিমেইল পুশ নোটিফিকেশন পেতে হলে, আপনাকে একটি পাব/সাব টপিক তৈরি করতে হবে। টপিকের যেকোনো সাবস্ক্রাইবার জিমেইল থেকে আসা বার্তার নোটিফিকেশন স্বয়ংক্রিয়ভাবে পাবেন।

একটি Pub/Sub বিষয় তৈরি করতে, Google Cloud Console-এ যান এবং বাম দিকের নেভিগেশন মেনুতে Pub/Sub > Topics-এ ক্লিক করুন। Create Topic-এ ক্লিক করুন। বিষয়ের নাম টাইপ করুন, যেমন gmail-watch , এবং Create-এ ক্লিক করুন। অতিরিক্তভাবে, আপনাকে আপনার Pub/Sub বিষয়ে বার্তা পাঠানোর জন্য Gmail-কে অনুমতি দিতে হবে: আপনার তৈরি করা বিষয়ের প্রসঙ্গ মেনুতে ক্লিক করুন (তিনটি উল্লম্ব বিন্দু), এবং Permissions নির্বাচন করুন; সদস্য যোগ করুন ক্লিক করুন, gmail-api-push@system.gserviceaccount.com কে নতুন সদস্য হিসেবে উল্লেখ করুন এবং Pub/Sub > Pub/Sub Publisher- এর ভূমিকা দিন; অবশেষে, পরিবর্তনগুলি প্রয়োগ করতে সংরক্ষণ করুন-এ ক্লিক করুন।

কোন Pub/Sub বিষয় ব্যবহার করবেন তা নির্দিষ্ট করতে Cloud Function auth_callback আপডেট করুন। বাম নেভিগেশন মেনুতে Cloud Functions এ ক্লিক করুন এবং Cloud Functions এর তালিকা থেকে auth_callback নির্বাচন করুন। General ট্যাবে, Edit এ ক্লিক করুন। More এ ক্লিক করুন, এবং PUBSUB_TOPIC এর মানটি আপনার তৈরি করা Pub/Sub বিষয়ের নামের সাথে প্রতিস্থাপন করুন। পরিবর্তনগুলি প্রয়োগ করতে Save এ ক্লিক করুন।

এখন আপনি Gmail পুশ নোটিফিকেশন অনুমোদন এবং সেট আপ করার জন্য প্রস্তুত। নতুন পরিবর্তনগুলি চূড়ান্ত না হওয়া পর্যন্ত অপেক্ষা করুন, তারপর ক্লাউড ফাংশন পৃষ্ঠায় ফিরে যান, ক্লাউড ফাংশনের তালিকা থেকে auth_init নির্বাচন করুন এবং ট্রিগার ট্যাবে স্যুইচ করুন। URL এ ক্লিক করুন, এবং আপনাকে Google এর সাথে সাইন-ইন পৃষ্ঠায় পুনঃনির্দেশিত করা হবে:

348ab0a7e0c9cd03.png সম্পর্কে

আপনার নিজের জিমেইল অ্যাকাউন্ট দিয়ে সাইন ইন করুন। অ্যাকাউন্টের ইনবক্সে যেকোনো নতুন বার্তা আসলে একটি পুশ নোটিফিকেশন ট্রিগার করবে। সাইন ইন করার পরে, আপনি নীচের পৃষ্ঠাটি দেখতে পাবেন:

অনুসরণ

অ্যাক্সেস অনুমোদন করতে "অনুমতি দিন " এ ক্লিক করুন। auth_callback অনুমোদন প্রক্রিয়াটি সম্পূর্ণ করবে, অ্যাক্সেস টোকেনগুলি সংরক্ষণ করবে এবং আপনার জন্য Gmail পুশ বিজ্ঞপ্তি সেট আপ করবে। এই প্রক্রিয়াটি সম্পূর্ণ হলে আপনার ব্রাউজারে Successfully set up Gmail push notifications বার্তাটি দেখতে পাবেন।

এই কোডল্যাবটি আপনার জন্য অনুমোদনের কর্মপ্রবাহ স্বয়ংক্রিয় করতে @google-cloud/express-oauth2-handlers প্যাকেজ ব্যবহার করে। আরও তথ্যের জন্য, GitHub-এ এর সংগ্রহস্থল দেখুন।

৬. আগত বার্তাগুলি প্রক্রিয়া করুন

যেমনটি আমরা আগেই উল্লেখ করেছি, আপনার তৈরি করা Pub/Sub বিষয়ের যেকোনো গ্রাহক আপনার ইনবক্সে নতুন বার্তা এলে বিজ্ঞপ্তি পাবেন। pubsub/index.js একটি ক্লাউড ফাংশন, watchGmailMessages নির্দিষ্ট করে, যা একবার বিষয়ের গ্রাহক হিসাবে স্থাপন করা হলে, নতুন বার্তাগুলি পড়বে, সংযুক্ত ছবিগুলিকে শ্রেণীবদ্ধ করবে এবং সেই বিভাগগুলিকে একটি Google Sheet-এ রপ্তানি করবে।

কোডটি পরীক্ষা করতে, ক্লাউড শেল কোড এডিটরে pubsub/index.js খুলুন।

বার্তাগুলি পুনরুদ্ধার করা হচ্ছে

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

// Look up the most recent message.
const listMessagesRes = await gmail.users.messages.list({
  userId: email,
  maxResults: 1
});
const messageId = listMessagesRes.messages[0].id;

// Get the message using the message ID.
const message = await gmail.users.messages.get({
  userId: email,
  id: messageId
});

return message;

ছবির সংযুক্তি বিশ্লেষণ করুন

যদি বার্তাটিতে একটি চিত্র সংযুক্তি থাকে, তাহলে watchGmailMessages ছবিটি টীকা করার জন্য ক্লাউড ভিশন API-কে কল করবে। এই কোডল্যাবে, আপনি ক্লাউড ভিশন API-কে ছবিটি শ্রেণীবদ্ধ করতে এবং বেশ কয়েকটি চিত্র ট্যাগ ফেরত দিতে বলবেন; উদাহরণস্বরূপ, যদি নীল আকাশের চিত্র সরবরাহ করা হয়, তাহলে ক্লাউড ভিশন API blue , sky , এবং nature ট্যাগ ফেরত দিতে পারে।

watchGmailMessages ক্লাউড ভিশন API কল করার জন্য Node.js-এর জন্য ক্লাউড ভিশন API লাইব্রেরি ব্যবহার করে:

// Tag the attachment using Cloud Vision API
const analyzeAttachment = async (data, filename) => {
  var topLabels = ['', '', ''];
  if (filename.endsWith('.png') || filename.endsWith('.jpg')) {
    const [analysis] = await visionClient.labelDetection({
      image: {
        content: Buffer.from(data, 'base64')
      }
    });
    const labels = analysis.labelAnnotations;
    topLabels = labels.map(x => x.description).slice(0, 3);
  }

  return topLabels;
};

গুগল শিট আপডেট করুন

watchGmailMessages এই বিশ্লেষণের ফলাফল একটি Google Sheet-এ রপ্তানি করে। এতে প্রেরকের নাম, সংযুক্তির নাম এবং চিত্র সংযুক্তির ট্যাগ (যদি থাকে) অন্তর্ভুক্ত থাকে।

প্রথমে, একটি গুগল শিট তৈরি করুন। গুগল শিট খুলুন এবং Start a new spreadsheet এর অধীনে Blank টেমপ্লেটটিতে ক্লিক করুন। আপনার শিটের আইডি কপি করুন। উদাহরণস্বরূপ, যদি আপনার ব্রাউজারে ঠিকানাটি এইরকম দেখায়:

https://docs.google.com/spreadsheets/d/abcdefghij01234567890/edit#gid=0

আপনার স্প্রেডশিটের আইডি হল abcdefghij01234567890 । ক্লাউড শেল কোড এডিটরে, gcf-gmail-codelab/pubsub/env_vars.yaml আপডেট করুন এবং YOUR-GOOGLE-SHEET-ID আপনার নিজস্ব মান দিয়ে প্রতিস্থাপন করুন।

watchGmailMessages তথ্য যোগ করার জন্য Google Sheets API এর সাথে সংযোগ করে:

const updateReferenceSheet = async (from, filename, topLabels) => {
  await googleSheets.spreadsheets.values.append({
    spreadsheetId: SHEET,
    range: SHEET_RANGE,
    valueInputOption: 'USER_ENTERED',
    requestBody: {
      range: SHEET_RANGE,
      majorDimension: 'ROWS',
      values: [
        [from, filename].concat(topLabels)
      ]
    }
  });
};

শেষ ধাপ

ক্লাউড শেল কোড এডিটরে, gcf-gmail-codelab/pubsub/env_vars.yaml খুলুন এবং YOUR-GOOGLE-CLIENT-ID , YOUR-GOOGLE-CLIENT-SECRET , এবং YOUR-GOOGLE-CALLBACK-URL এর পরিবর্তে আপনার নিজস্ব মান ব্যবহার করুন। আপনি Google Cloud Console-এ এই মানগুলি খুঁজে পেতে পারেন: বাম দিকের নেভিগেশন মেনুতে Cloud Functions খুলুন, Cloud Functions-এর তালিকায় auth_init নির্বাচন করুন এবং Environment variables বিভাগটি সন্ধান করুন।

কোডটি স্থাপন করুন

ক্লাউড ফাংশন স্থাপন করতে নিচের কমান্ডটি চালান:

cd ~

cd gcf-gmail-codelab/pubsub

gcloud functions deploy watchGmailMessages --runtime=nodejs8 --trigger-topic=gmail-watch --env-vars-file=env_vars.yaml

যদি আপনি আপনার ক্লাউড পাব/সাব টপিকের নাম gmail-watch ব্যতীত অন্য কিছু দিয়ে থাকেন, তাহলে উপরের কমান্ডে gmail-watch পরিবর্তে আপনার টপিকের নাম দিন। ক্লাউড ফাংশনটি স্থাপন করতে কয়েক সেকেন্ড সময় লাগতে পারে।

৭. চেষ্টা করে দেখুন

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