Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

ফায়ারবেস জন্য মেঘ ফাংশন

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

3b1284f5144b54f6.png

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

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

আপনার যা দরকার

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

কমান্ড লাইন থেকে গিটহাব সংগ্রহস্থলটি ক্লোন করুন:

git clone https://github.com/firebase/friendlychat

স্টার্টার অ্যাপ্লিকেশন আমদানি করুন

আপনার আইডিই ব্যবহার করে, খুলুন বা আমদানি করুন android_studio_folder.png নমুনা কোড ডিরেক্টরি থেকে cloud-functions-start ডিরেক্টরি। এই ডিরেক্টরিতে কোড্ল্যাবটির জন্য শুরু কোড রয়েছে যা সম্পূর্ণ কার্যকরী চ্যাট ওয়েব অ্যাপ্লিকেশন নিয়ে গঠিত।

প্রকল্প তৈরি করুন

ফায়ারবেস কনসোলে অ্যাড প্রজেক্টে ক্লিক করুন এবং এটিকে ফ্রেন্ডলিচ্যাট বলুন

প্রকল্প তৈরি করুন ক্লিক করুন

ব্লেজ প্ল্যানে আপগ্রেড করুন

ফায়ারবেসের জন্য ক্লাউড ফাংশনগুলি ব্যবহার করার জন্য আপনাকে আপনার ফায়ারবেস প্রকল্পটি ব্লেজ বিলিং পরিকল্পনায় আপগ্রেড করতে হবে। এটির জন্য আপনার Google মেঘ অ্যাকাউন্টে ক্রেডিট কার্ড বা অন্য কোনও বিলিংয়ের উপকরণ যুক্ত করা দরকার।

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

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

গুগল আথ সক্ষম করুন

ব্যবহারকারীদের অ্যাপটিতে সাইন ইন করতে দিতে আমরা গুগল প্রমাণ ব্যবহার করব যা সক্ষম করা দরকার।

Firebase কনসোল খুলুন (অথবা অধ্যায়> প্রমাণীকরণ> সাইন ইন পদ্ধতি ট্যাব বিকাশ এখানে ক্লিক করুন সেখানে যেতে) আপনি Google সাইন-ইন প্রোভাইডার সক্ষম এবং সংরক্ষণ ক্লিক করুন করতে হবে। এটি ব্যবহারকারীদের তাদের গুগল অ্যাকাউন্টগুলির সাথে ওয়েব অ্যাপটিতে সাইন ইন করার অনুমতি দেবে।

আপনার অ্যাপ্লিকেশনটির জনসাধারণের মুখের নামটি বন্ধুত্বপূর্ণ চ্যাটে সেট করতেও নির্দ্বিধায়:

8290061806aacb46.png

ক্লাউড স্টোরেজ সক্ষম করুন

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

842ad84821323ef5.png

ফায়ারবেস কমান্ড লাইন ইন্টারফেস (সিএলআই) আপনাকে স্থানীয়ভাবে ওয়েব অ্যাপ্লিকেশনটি পরিবেশন করতে এবং আপনার ওয়েব অ্যাপ্লিকেশন এবং ক্লাউড ফাংশন স্থাপন করতে দেয়।

সিএলআই ইনস্টল বা আপগ্রেড করতে নিম্নলিখিত এনপিএম কমান্ডটি চালান:

02 বি 7580 এ 90

সিএলআই সঠিকভাবে ইনস্টল করা হয়েছে তা যাচাই করতে, একটি কনসোল খুলুন এবং চালান:

0d0eeeeeeee

ফায়ারবেস সিএলআইয়ের সংস্করণটি 4.0.0 এর উপরে রয়েছে তা নিশ্চিত করুন যাতে এটিতে ক্লাউড ফাংশনগুলির জন্য প্রয়োজনীয় সমস্ত সাম্প্রতিক বৈশিষ্ট্য রয়েছে। যদি তা না হয় তবে উপরে উল্লিখিত হিসাবে আপগ্রেড করতে npm install -g firebase-tools চালান।

চালিয়ে ফায়ারবেস সিএলআইকে অনুমোদন দিন:

firebase login

নিশ্চিত হয়ে নিন যে আপনি cloud-functions-start ডিরেক্টরিতে আছেন এবং তারপরে আপনার ফায়ারবেস প্রকল্পটি ব্যবহার করতে ফায়ারবেস সিএলআই সেটআপ করুন:

firebase use --add

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

এখন আপনি নিজের প্রকল্পটি আমদানি ও কনফিগার করেছেন আপনি প্রথমবারের মতো ওয়েব অ্যাপ চালানোর জন্য প্রস্তুত। cloud-functions-start ফোল্ডারে একটি কনসোল খুলুন এবং firebase deploy --except functions এটি কেবল firebase deploy --except functions হোস্টিংয়ে ওয়েব অ্যাপ্লিকেশন স্থাপন করবে:

firebase deploy --except functions

এটি আপনার দেখতে পাওয়া কনসোল আউটপুট:

i deploying database, storage, hosting
✔  database: rules ready to deploy.
i  storage: checking rules for compilation errors...
✔  storage: rules file compiled successfully
i  hosting: preparing ./ directory for upload...
✔  hosting: ./ folder uploaded successfully
✔ storage: rules file compiled successfully
✔ hosting: 8 files uploaded successfully
i starting release process (may take several minutes)...

✔ Deploy complete!

Project Console: https://console.firebase.google.com/project/friendlychat-1234/overview
Hosting URL: https://friendlychat-1234.firebaseapp.com

ওয়েব অ্যাপ খুলুন Open

শেষ লাইনে হোস্টিং ইউআরএল প্রদর্শন করা উচিত ওয়েব অ্যাপ্লিকেশনটি এখন এই ইউআরএল থেকে পরিবেশন করা উচিত যা https: // <প্রকল্প-id> .firebaseapp.com ফর্মের হওয়া উচিত। ইহা খোল. আপনার একটি চ্যাট অ্যাপের কার্যকারিতা ইউআই দেখতে হবে see

গুগল বোতামের সাথে সাইন-ইন ব্যবহার করে অ্যাপ্লিকেশনটিতে সাইন ইন করুন এবং কিছু বার্তা এবং ছবি পোস্ট করতে নির্দ্বিধায়:

3b1284f5144b54f6.png

আপনি যদি নতুন ব্রাউজারে অ্যাপটি প্রথমবার সাইন ইন করেন তবে তা নিশ্চিত হওয়ার পরে আপনাকে বিজ্ঞপ্তিগুলি অনুমোদনের বিষয়টি নিশ্চিত করুন: 8b9d0c66dc36153d.png

আমাদের আপনার পরবর্তী সময়ে বিজ্ঞপ্তি সক্ষম করার দরকার হবে।

আপনি যদি দুর্ঘটনাক্রমে ব্লক ক্লিক করে থাকেন তবে আপনি Chrome ওমনিবারের URL এর বামে button সুরক্ষিত বোতামটি ক্লিক করে এবং বিজ্ঞপ্তিগুলি> এই সাইটে সর্বদা মঞ্জুর করুন : নির্বাচন করে এই সেটিংটি পরিবর্তন করতে পারেন:

e926868b0546ed71.png

এখন আমরা ক্লাউড ফাংশনগুলির জন্য ফায়ারবেস এসডিকে ব্যবহার করে কিছু কার্যকারিতা যুক্ত করব।

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

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

আপনার পক্ষে এটি আরও সহজ করার জন্য আমরা ইতিমধ্যে functions/index.js ফাইল তৈরি করেছি যেখানে আপনার কোডটি যাবে functions/index.js এগিয়ে যাওয়ার আগে নিখরচায় এই ফাইলটি নিরীক্ষণ করুন।

cd functions
ls

আপনি যদি নোড.জেএস এর সাথে পরিচিত না হন তবে কোডল্যাব চালিয়ে যাওয়ার আগে এটি সম্পর্কে আরও জানাতে সহায়তা করবে।

প্যাকেজ.জসন ফাইল ইতিমধ্যে দুটি প্রয়োজনীয় নির্ভরতা তালিকাভুক্ত করেছে: ক্লাউড ফাংশনগুলির জন্য ফায়ারবেস এসডিকে এবং ফায়ারবেস অ্যাডমিন এসডিকে । এগুলি স্থানীয়ভাবে npm install করতে functions ফোল্ডার থেকে npm install চালান:

npm install

আসুন এখন index.js ফাইলটি দেখুন:

index.js

/**
 * Copyright 2017 Google Inc. All Rights Reserved.
 * ...
 */

// TODO(DEVELOPER): Import the Cloud Functions for Firebase and the Firebase Admin modules here.

// TODO(DEVELOPER): Write the addWelcomeMessage Function here.

// TODO(DEVELOPER): Write the blurImages Function here.

// TODO(DEVELOPER): Write the sendNotification Function here.

আমরা প্রথমে প্রয়োজনীয় মডিউলগুলি আমদানি করব এবং তারপরে TODOs এর জায়গায় তিনটি ফাংশন লিখব। প্রথমে প্রয়োজনীয় নোড মডিউলগুলি আমদানি করা যাক।

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

index.js ফাইলে, নিম্নের সাথে প্রথম TODO প্রতিস্থাপন করুন:

index.js

/**
 * Copyright 2017 Google Inc. All Rights Reserved.
 * ...
 */

// Import the Firebase SDK for Google Cloud Functions.
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp();

// TODO(DEVELOPER): Write the addWelcomeMessage Function here.

// TODO(DEVELOPER): Write the blurImages Function here.

// TODO(DEVELOPER): Write the sendNotification Function here.

ক্লাউড ফাংশন পরিবেশ বা অন্য গুগল ক্লাউড প্ল্যাটফর্ম ধারকগুলিতে স্থাপন করা হলে ফায়ারবেস অ্যাডমিন এসডিকে স্বয়ংক্রিয়ভাবে কনফিগার করা যায়। admin.initializeApp(); কল করার সময় আমরা উপরে এটি করি admin.initializeApp();

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

চ্যাট বার্তার কাঠামো

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

11f5a676fbb1a69a.png

এটি প্রদর্শিত হবে:

fe6d1c020d0744cf.png

আপনার Firebase অ্যাপ্লিকেশন কনসোলে বিকাশ ধারার অধীন ডাটাবেস এ ক্লিক করুন। আপনার লেখা বার্তাগুলির সংগ্রহ এবং একটি দস্তাবেজ দেখতে পাওয়া উচিত:

442c9c10b5e2b245.png

আপনি দেখতে পাচ্ছেন, চ্যাট বার্তাগুলি ক্লাউড ফায়ারস্টোরে একটি নথি হিসাবে messages সংগ্রহের সাথে যুক্ত হওয়া name , profilePicUrl , text এবং timestamp বৈশিষ্ট্য সহ সংরক্ষণ করা হয়।

স্বাগত বার্তা যুক্ত করা হচ্ছে

প্রথম ক্লাউড ফাংশন একটি বার্তা যুক্ত করে যা চ্যাটটিতে নতুন ব্যবহারকারীদের স্বাগত জানায়। এর জন্য আমরা ট্রিগার functions.auth().onCreate ব্যবহার করতে পারি যা কোনও ব্যবহারকারী আপনার ফায়ারবেস অ্যাপ্লিকেশনটিতে প্রথমবার সাইন ইন করে। আপনার index.js ফাইলটিতে index.js addWelcomeMessages ফাংশন index.js করুন:

index.js

// Adds a message that welcomes new users into the chat.
exports.addWelcomeMessages = functions.auth.user().onCreate(async (user) => {
  console.log('A new user signed in for the first time.');
  const fullName = user.displayName || 'Anonymous';

  // Saves the new welcome message into the database
  // which then displays it in the FriendlyChat clients.
  await admin.firestore().collection('messages').add({
    name: 'Firebase Bot',
    profilePicUrl: '/images/firebase-logo.png', // Firebase logo
    text: `${fullName} signed in for the first time! Welcome!`,
    timestamp: admin.firestore.FieldValue.serverTimestamp(),
  });
  console.log('Welcome message written to database.');
});

বিশেষ exports বস্তুতে এই ফাংশনটি যুক্ত করা হ'ল নোডের বর্তমান ফাইলের বাইরে ফাংশনটি অ্যাক্সেসযোগ্য করে তোলার উপায় এবং ক্লাউড ফাংশনগুলির জন্য এটি প্রয়োজনীয়।

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

যেহেতু এটি একটি অ্যাসিনক্রোনাস অপারেশন, আমাদের ক্লাউড ফায়ার স্টোর লেখার সমাপ্তি নির্দেশ করে প্রতিশ্রুতি ফিরিয়ে দেওয়া দরকার, যাতে ফাংশনগুলি খুব তাড়াতাড়ি মৃত্যুদন্ড কার্যকর না করে।

ফাংশন স্থাপন করুন

আপনি এটি স্থাপন করার পরে কেবল ফাংশনটি সক্রিয় হবে। কমান্ড লাইনে firebase deploy --only functions চালান - কেবলমাত্র firebase deploy --only functions :

firebase deploy --only functions

এটি আপনার দেখতে পাওয়া কনসোল আউটপুট:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
⚠  functions: missing necessary APIs. Enabling now...
i  env: ensuring necessary APIs are enabled...
⚠  env: missing necessary APIs. Enabling now...
i  functions: waiting for APIs to activate...
i  env: waiting for APIs to activate...
✔  env: all necessary APIs are enabled
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: creating function addWelcomeMessages...
✔  functions[addWelcomeMessages]: Successful create operation. 
✔  functions: all functions deployed successfully!

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/friendlypchat-1234/overview

ফাংশন পরীক্ষা করুন

ফাংশনটি সফলভাবে স্থাপনের পরে আপনার এমন একজন ব্যবহারকারী থাকা দরকার যা প্রথমবার সাইন ইন করে।

  1. হোস্টিং ইউআরএলটি ব্যবহার করে আপনার ব্রাউজারে আপনার অ্যাপ্লিকেশনটি খুলুন ( https://<project-id>.firebaseapp.com )।
  2. নতুন ব্যবহারকারীর সাথে সাইন ইন বোতামটি ব্যবহার করে আপনার অ্যাপ্লিকেশনটিতে প্রথমবার সাইন ইন করুন
  • আপনি যদি ইতিমধ্যে অ্যাপটিতে সাইন ইন করে থাকেন তবে আপনি ফায়ারবেস কনসোল প্রমাণীকরণ বিভাগটি খুলতে এবং ব্যবহারকারীর তালিকা থেকে আপনার অ্যাকাউন্ট মুছতে পারেন। তারপরে আবার সাইন ইন করুন।

262535d1b1223c65.png

  1. আপনি সাইন ইন করার পরে, একটি স্বাগত বার্তা স্বয়ংক্রিয়ভাবে প্রদর্শিত হবে:

1c70e0d64b23525b.png

ব্যবহারকারীরা চ্যাটে সমস্ত ধরণের চিত্র আপলোড করতে পারে এবং আক্রমণাত্মক চিত্রগুলি মাঝারি করা বিশেষত সর্বসাধারণের সামাজিক প্ল্যাটফর্মে গুরুত্বপূর্ণ। ফ্রেন্ডলিচ্যাটে চ্যাটে প্রকাশিত হওয়া চিত্রগুলি গুগল ক্লাউড স্টোরেজে সংরক্ষণ করা হয়েছে।

ক্লাউড ফাংশন সহ, আপনি functions.storage().onFinalize ট্রিগার ব্যবহার করে নতুন চিত্র আপলোডগুলি সনাক্ত করতে পারেন। ক্লাউড স্টোরেজে কোনও নতুন ফাইল আপলোড করা বা সংশোধন করার সময় এটি চলবে।

চিত্রগুলি সংযত করতে আমরা নিম্নলিখিত প্রক্রিয়াটি নিয়ে যাব:

  1. ক্লাউড ভিশন এপিআই ব্যবহার করে চিত্রটি অ্যাডাল্ট বা হিংস্র হিসাবে চিহ্নিত হয়েছে কিনা তা পরীক্ষা করুন
  2. যদি চিত্রটি পতাকাঙ্কিত করা হয় তবে চলমান ক্রিয়াকলাপগুলির উদাহরণে এটি ডাউনলোড করুন
  3. ইমেজম্যাগিক ব্যবহার করে ছবিটি অস্পষ্ট করুন
  4. অস্পষ্ট চিত্রটি ক্লাউড স্টোরেজে আপলোড করুন

ক্লাউড ভিশন API সক্ষম করুন

যেহেতু আমরা এই ফাংশনে গুগল ক্লাউড ভিশন এপিআই ব্যবহার করব, আপনাকে অবশ্যই আপনার ফায়ারবেস প্রকল্পে এপিআই সক্ষম করতে হবে। এই লিঙ্কটি অনুসরণ করুন , আপনার ফায়ারবেস প্রকল্পটি নির্বাচন করুন এবং API সক্ষম করুন:

5c77fee51ec5de49.png

নির্ভরতা ইনস্টল করুন

চিত্রগুলি সংযত করতে আমাদের কয়েকটি নোড.জেএস প্যাকেজ দরকার:

  • নোড.জেএস এর জন্য গুগল ক্লাউড ভিশন ক্লায়েন্ট লাইব্রেরি: @ গুগল-ক্লাউড / দৃষ্টি অনুপযুক্ত চিত্রগুলি সনাক্ত করতে ক্লাউড ভিশন এপিআইয়ের মাধ্যমে চিত্রটি চালাবেন।
  • একটি নোড.জেএস লাইব্রেরি আমাদের প্রসেসগুলি চালানোর অনুমতি দেয়: চাইল্ড-প্রসেস- ইমেজম্যাগিক চালানোর প্রতিশ্রুতি যেহেতু ইমেজম্যাগিক কমান্ড-লাইন সরঞ্জামটি সমস্ত কার্যের দৃষ্টান্তে প্রাক-ইনস্টল করা হয়েছে।

আপনার ক্লাউড ফাংশন অ্যাপ্লিকেশনটিতে এই দুটি প্যাকেজ ইনস্টল করতে, নিম্নলিখিত npm install --save কমান্ডটি npm install --save । নিশ্চিত হয়ে নিন যে আপনি এটি functions ডিরেক্টরি থেকে করছেন।

npm install --save @google-cloud/vision@0.12.0 child-process-promise@2.2.1

এটি স্থানীয়ভাবে দুটি প্যাকেজ ইনস্টল করবে এবং package.json আপনার package.json ফাইলে ঘোষিত নির্ভরতা হিসাবে যুক্ত করবে।

নির্ভরতা আমদানি করুন এবং কনফিগার করুন

ইনস্টল হওয়া দুটি নির্ভরশীলতা এবং কিছু নোড.জেএস কোর মডিউলগুলি ( path , os এবং fs ) আমদানি করার জন্য যা আমাদের এই বিভাগে প্রয়োজন হবে আপনার index.js ফাইলের শীর্ষে নিম্নলিখিত লাইনগুলি index.js করুন:

index.js

const Vision = require('@google-cloud/vision');
const vision = new Vision();
const spawn = require('child-process-promise').spawn;

const path = require('path');
const os = require('os');
const fs = require('fs');

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

অনুপযুক্ত চিত্রগুলি সনাক্ত করা হচ্ছে

আপনি functions.storage.onChange স্টোরেজ.অনেকে ক্লাউড ফাংশন ট্রিগার ব্যবহার করবেন যা কোনও ক্লাউড স্টোরেজ বালতিতে কোনও ফাইল বা ফোল্ডার তৈরি বা সংশোধন করার সাথে সাথেই আপনার কোডটি চালায়। আপনার index.js ফাইলটিতে index.js blurOffensiveImages ফাংশন index.js করুন:

index.js

// Checks if uploaded images are flagged as Adult or Violence and if so blurs them.
exports.blurOffensiveImages = functions.runWith({memory: '2GB'}).storage.object().onFinalize(
    async (object) => {
      const image = {
        source: {imageUri: `gs://${object.bucket}/${object.name}`},
      };

      // Check the image content using the Cloud Vision API.
      const batchAnnotateImagesResponse = await vision.safeSearchDetection(image);
      const safeSearchResult = batchAnnotateImagesResponse[0].safeSearchAnnotation;
      const Likelihood = Vision.types.Likelihood;
      if (Likelihood[safeSearchResult.adult] >= Likelihood.LIKELY ||
          Likelihood[safeSearchResult.violence] >= Likelihood.LIKELY) {
        console.log('The image', object.name, 'has been detected as inappropriate.');
        return blurImage(object.name);
      }
      console.log('The image', object.name, 'has been detected as OK.');
    });

নোট করুন যে আমরা ক্লাউড ফাংশন উদাহরণগুলির কিছু কনফিগারেশন যুক্ত করেছি যা .runWith({memory: '2GB'}) সহ ফাংশনটি পরিচালনা করবে, আমরা অনুরোধ করছি যে উদাহরণটি ডিফল্টের চেয়ে 2GB মেমরি পায়, এটি এই হিসাবে সহায়তা করবে ফাংশন স্মৃতি নিবিড় হয়।

যখন ফাংশনটি ট্রিগার করা হয় তখন চিত্রটি প্রাপ্তবয়স্ক বা হিংসাত্মক হিসাবে পতাকাঙ্কিত হয় কিনা তা সনাক্ত করতে ক্লাউড ভিশন এপিআইয়ের মাধ্যমে দৌড়ানো হয়। এই মানদণ্ডের উপর ভিত্তি করে যদি চিত্রটি অনুপযুক্ত হিসাবে ধরা পড়ে তবে আমরা সেই চিত্রটি অস্পষ্ট করছি যা আমরা পরে দেখতে পাব blurImage

ছবিটি অস্পষ্ট করছে

আপনার index.js ফাইলটিতে নিম্নলিখিত blurImage ফাংশনটি index.js করুন:

index.js

// Blurs the given image located in the given bucket using ImageMagick.
async function blurImage(filePath) {
  const tempLocalFile = path.join(os.tmpdir(), path.basename(filePath));
  const messageId = filePath.split(path.sep)[1];
  const bucket = admin.storage().bucket();

  // Download file from bucket.
  await bucket.file(filePath).download({destination: tempLocalFile});
  console.log('Image has been downloaded to', tempLocalFile);
  // Blur the image using ImageMagick.
  await spawn('convert', [tempLocalFile, '-channel', 'RGBA', '-blur', '0x24', tempLocalFile]);
  console.log('Image has been blurred');
  // Uploading the Blurred image back into the bucket.
  await bucket.upload(tempLocalFile, {destination: filePath});
  console.log('Blurred image has been uploaded to', filePath);
  // Deleting the local file to free up disk space.
  fs.unlinkSync(tempLocalFile);
  console.log('Deleted local file.');
  // Indicate that the message has been moderated.
  await admin.firestore().collection('messages').doc(messageId).update({moderated: true});
  console.log('Marked the image as moderated in the database.');
}

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

ফাংশন স্থাপন করুন

আপনি এটি স্থাপন করার পরে কেবল ফাংশনটি সক্রিয় হবে। কমান্ড লাইনে firebase deploy --only functions চালান - কেবলমাত্র firebase deploy --only functions :

firebase deploy --only functions

এটি আপনার দেখতে পাওয়া কনসোল আউটপুট:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: updating function addWelcomeMessages...
i  functions: creating function blurOffensiveImages...
✔  functions[addWelcomeMessages]: Successful update operation.
✔  functions[blurOffensiveImages]: Successful create operation.
✔  functions: all functions deployed successfully!

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/friendlychat-1234/overview

ফাংশন পরীক্ষা করুন

ফাংশনটি সফলভাবে স্থাপন করা হলে:

  1. হোস্টিং ইউআরএলটি ব্যবহার করে আপনার ব্রাউজারে আপনার অ্যাপ্লিকেশনটি খুলুন ( https://<project-id>.firebaseapp.com )।
  2. একবার সাইন ইন থাকা অ্যাপটি একটি চিত্র আপলোড করুন: 4db9fdab56703e4a.png
  3. আপলোড করার জন্য আপনার সেরা আপত্তিকর চিত্রটি চয়ন করুন (বা আপনি এই মাংস খাওয়ার জ্যাম্বো ব্যবহার করতে পারেন!) এবং কয়েক মুহুর্তের পরে আপনার পোস্টটির ঝাপসা সংস্করণ সহ আপনার পোস্টটি রিফ্রেশ দেখতে হবে: 83dd904fbaf97d2b.png

এই বিভাগে আপনি একটি ক্লাউড ফাংশন যুক্ত করবেন যা কোনও নতুন বার্তা পোস্ট করা হলে চ্যাটের অংশগ্রহণকারীদের জন্য বিজ্ঞপ্তি প্রেরণ করে।

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

আপনি যদি ওয়েব অ্যাপ্লিকেশনে এফসিএম ডিভাইস টোকেন পেতে চান তবে আপনি ফায়ারবেস ওয়েব কোডল্যাব দিয়ে যেতে পারেন।

বিজ্ঞপ্তি প্রেরণ করুন

নতুন বার্তাগুলি কখন পোস্ট করা হয় তা সনাক্ত করতে আপনি functions.firestore.document().onCreate ব্যবহার করবেন functions.firestore.document().onCreate ক্লাউড ফাংশন ট্রিগার যা আপনার কোডটি চালায় যখন ক্লাউড ফায়ারস্টোরের প্রদত্ত পথে একটি নতুন অবজেক্ট তৈরি করা হয়। আপনার index.js ফাইলটিতে index.js sendNotifications ফাংশন index.js করুন:

index.js

02 বিডি 25 সি 860

উপরের ফাংশনে আমরা ক্লাউড ফায়ার admin.messaging().sendToDevice ডেটাবেস থেকে সমস্ত ব্যবহারকারীর ডিভাইস টোকেন সংগ্রহ করছি এবং admin.messaging().sendToDevice ফাংশনটি ব্যবহার করে admin.messaging().sendToDevice প্রত্যেককে একটি বিজ্ঞপ্তি প্রেরণ admin.messaging().sendToDevice

টোকেনগুলি পরিষ্কার করুন

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

index.js

// Cleans up the tokens that are no longer valid.
function cleanupTokens(response, tokens) {
 // For each notification we check if there was an error.
 const tokensDelete = [];
 response.results.forEach((result, index) => {
   const error = result.error;
   if (error) {
     console.error('Failure sending notification to', tokens[index], error);
     // Cleanup the tokens who are not registered anymore.
     if (error.code === 'messaging/invalid-registration-token' ||
         error.code === 'messaging/registration-token-not-registered') {
       const deleteTask = admin.firestore().collection('fcmTokens').doc(tokens[index]).delete();
       tokensDelete.push(deleteTask);
     }
   }
 });
 return Promise.all(tokensDelete);
}

ফাংশন স্থাপন করুন

আপনি এটি স্থাপন করার পরে কেবল ফাংশনটি সক্রিয় হবে। কমান্ড লাইনে firebase deploy --only functions চালান - কেবলমাত্র firebase deploy --only functions :

firebase deploy --only functions

এটি আপনার দেখতে পাওয়া কনসোল আউটপুট:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: updating function addWelcomeMessages...
i  functions: updating function blurOffensiveImages...
i  functions: creating function sendNotifications...
✔  functions[addWelcomeMessages]: Successful update operation.
✔  functions[blurOffensiveImages]: Successful updating operation.
✔  functions[sendNotifications]: Successful create operation.
✔  functions: all functions deployed successfully!

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/friendlychat-1234/overview

ফাংশন পরীক্ষা করুন

  1. ফাংশনটি সফলভাবে স্থাপন করা হয়ে গেলে হোস্টিং ইউআরএল ( https://<project-id>.firebaseapp.com ) ব্যবহার করে আপনার ব্রাউজারে আপনার অ্যাপ্লিকেশনটি খুলুন।
  2. আপনি যদি প্রথমবার অ্যাপ্লিকেশনটিতে সাইন ইন করেন তবে তা নিশ্চিত হওয়ার পরে আপনাকে বিজ্ঞপ্তিগুলি মঞ্জুরি দেওয়ার বিষয়টি নিশ্চিত করুন: 8b9d0c66dc36153d.png
  3. চ্যাট অ্যাপ্লিকেশন ট্যাবটি বন্ধ করুন বা অন্য কোনও ট্যাব প্রদর্শন করুন: অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে থাকলেই বিজ্ঞপ্তিগুলি উপস্থিত হয়। আপনার অ্যাপটি অগ্রভাগে থাকা অবস্থায় কীভাবে বার্তাগুলি গ্রহণ করবেন তা যদি আপনি শিখতে চান তবে আমাদের ডকুমেন্টেশনটি একবার দেখুন।
  4. একটি ভিন্ন ব্রাউজার (বা কোনও ছদ্ম উইন্ডো) ব্যবহার করে অ্যাপটিতে সাইন ইন করুন এবং একটি বার্তা পোস্ট করুন। আপনি প্রথম ব্রাউজার দ্বারা প্রদর্শিত একটি বিজ্ঞপ্তি দেখতে হবে: 45282ab12b28b926.png

আপনি ক্লাউড ফাংশনগুলির জন্য ফায়ারবেস এসডিকে ব্যবহার করেছেন এবং একটি চ্যাট অ্যাপটিতে সার্ভার-সাইড উপাদান যুক্ত করেছেন।

আমরা কি আবরণ করেছি

  • ক্লাউড ফাংশনগুলির জন্য ফায়ারবেস এসডিকে ব্যবহার করে ক্লাউড ফাংশনগুলিকে অনুমোদন দেওয়া।
  • আউথ, ক্লাউড স্টোরেজ এবং ক্লাউড ফায়ার স্টোর ইভেন্টের উপর ভিত্তি করে ট্রিগার ক্লাউড ফাংশন।
  • আপনার ওয়েব অ্যাপ্লিকেশনটিতে ফায়ারবেস ক্লাউড মেসেজিং সমর্থন যুক্ত করুন।
  • ফায়ারবেস সিএলআই ব্যবহার করে মেঘের কার্যকারিতা নিযুক্ত করা হয়েছে।

পরবর্তী পদক্ষেপ

আরও জানুন