Dialogflow এর সাথে Vision API একত্রিত করুন

১. শুরু করার আগে

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

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

নিচের নমুনা সংলাপটি একবার দেখুন:

ব্যবহারকারী: হাই

চ্যাটবট: হাই! আপনি ল্যান্ডমার্কগুলি ঘুরে দেখার জন্য একটি ছবি আপলোড করতে পারেন।

ব্যবহারকারী: তাজমহলের ছবি আপলোড করুন।

চ্যাটবট: ফাইলটি প্রক্রিয়া করা হচ্ছে, এখানে ফলাফল রয়েছে: তাজমহল, তাজমহল বাগান, তাজমহল।

15a4243e453415ca.png সম্পর্কে

পূর্বশর্ত

এগিয়ে যাওয়ার আগে, আপনাকে নিম্নলিখিত কোডল্যাবগুলি সম্পূর্ণ করতে হবে:

  1. Dialogflow ব্যবহার করে একটি অ্যাপয়েন্টমেন্ট শিডিউলার তৈরি করুন
  2. একটি Dialogflow চ্যাটবটকে Actions on Google-এর সাথে একীভূত করুন
  3. Dialogflow-এ সত্তাগুলি বুঝুন
  4. একটি Dialogflow অ্যাপের জন্য একটি ফ্রন্টএন্ড Django ক্লায়েন্ট তৈরি করুন

আপনাকে Dialogflow-এর মৌলিক ধারণা এবং গঠনগুলিও বুঝতে হবে, যা আপনি "Dialogflow পাথওয়ে দিয়ে চ্যাটবট তৈরি করুন "-এর নিম্নলিখিত ভিডিওগুলি থেকে সংগ্রহ করতে পারেন:

তুমি কি শিখবে

  • কিভাবে একটি Dialogflow এজেন্ট তৈরি করবেন
  • ফাইল আপলোড করার জন্য কীভাবে একটি Dialogflow এজেন্ট আপডেট করবেন
  • ডায়ালগফ্লো ফুলফিলমেন্টের সাথে ভিশন এপিআই সংযোগ কীভাবে সেট আপ করবেন
  • ডায়ালগফ্লো-এর জন্য একটি জ্যাঙ্গো ফ্রন্টএন্ড অ্যাপ কীভাবে সেট আপ এবং চালাবেন
  • অ্যাপ ইঞ্জিনে গুগল ক্লাউডে জ্যাঙ্গো ফ্রন্টএন্ড অ্যাপটি কীভাবে স্থাপন করবেন
  • কাস্টম ফ্রন্টএন্ড থেকে ডায়ালগফ্লো অ্যাপটি কীভাবে পরীক্ষা করবেন

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

  • একটি Dialogflow এজেন্ট তৈরি করুন
  • একটি ফাইল আপলোড করার জন্য একটি জ্যাঙ্গো ফ্রন্টএন্ড বাস্তবায়ন করুন
  • আপলোড করা ছবির বিপরীতে Vision API চালু করতে Dialogflow fulfillment বাস্তবায়ন করুন।

তোমার যা লাগবে

  • পাইথনের প্রাথমিক জ্ঞান
  • ডায়ালগফ্লো সম্পর্কে একটি মৌলিক ধারণা
  • ভিশন এপিআই সম্পর্কে একটি মৌলিক ধারণা

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

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

5b07e09dc4b84646.png সম্পর্কে

নিচের ছবিতে দেখানো হিসাবে অনুরোধ প্রবাহটি এভাবে কাজ করবে:

  1. ব্যবহারকারী ফ্রন্টএন্ডের মাধ্যমে একটি অনুরোধ পাঠাবেন।
  2. এটি ব্যবহারকারীর উচ্চারণকে সঠিক উদ্দেশ্যের সাথে ম্যাপ করার জন্য Dialogflow detectIntent API-তে একটি কল ট্রিগার করবে।
  3. একবার এক্সপ্লোর ল্যান্ডমার্কের উদ্দেশ্য শনাক্ত হয়ে গেলে, ডায়ালগফ্লো পূর্ণতা ভিশন API-তে একটি অনুরোধ পাঠাবে, একটি প্রতিক্রিয়া পাবে এবং ব্যবহারকারীর কাছে পাঠাবে।

153725eb50e008d4.png সম্পর্কে

সামগ্রিক স্থাপত্যটি কেমন হবে তা এখানে দেওয়া হল।

a2fcea32222a9cb4.png সম্পর্কে

৩. ভিশন এপিআই কী?

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

৪. একটি ডায়ালগফ্লো এজেন্ট তৈরি করুন

  1. ডায়ালগফ্লো কনসোলে যান।
  2. সাইন ইন করুন। (যদি আপনি প্রথমবার ব্যবহারকারী হন, তাহলে সাইন আপ করতে আপনার ইমেল ব্যবহার করুন।)
  3. শর্তাবলী মেনে নিন, এবং আপনি কনসোলে থাকবেন।
  4. ক্লিক করুন d9e90c93fc779808.png সম্পর্কে , নীচে স্ক্রোল করুন এবং নতুন এজেন্ট তৈরি করুন ক্লিক করুন। 3b3f9677e2a26d93.png সম্পর্কে
  5. এজেন্টের নাম হিসেবে "VisionAPI" লিখুন।
  6. তৈরি করুন ক্লিক করুন।

Dialogflow এজেন্টের অংশ হিসেবে নিম্নলিখিত দুটি ডিফল্ট ইন্টেন্ট তৈরি করে:

  1. ডিফল্ট স্বাগতম ইন্টেন্ট আপনার ব্যবহারকারীদের স্বাগত জানায়।
  2. ডিফল্ট ফলব্যাক ইন্টেন্ট আপনার বট যে সমস্ত প্রশ্ন বুঝতে পারে না তা ধরে ফেলে।

এই মুহুর্তে, আপনার কাছে একটি কার্যকরী বট আছে যা ব্যবহারকারীদের স্বাগত জানায়, তবে ব্যবহারকারীদের জানাতে আপনাকে এটি আপডেট করতে হবে যে তারা ল্যান্ডমার্কগুলি অন্বেষণ করার জন্য একটি ছবি আপলোড করতে পারে।

ব্যবহারকারীকে ছবি আপলোড করার জন্য অবহিত করার জন্য ডিফল্ট স্বাগতম উদ্দেশ্য আপডেট করুন

  1. ডিফল্ট ওয়েলকাম ইন্টেন্ট ক্লিক করুন।
  2. Response > Default > Text অথবা SSML Response- এ নেভিগেট করুন এবং "Hi! You can upload a picture to explore landmarks" লিখুন।

f9cd9ba6917a7aa9.png সম্পর্কে

সত্তা তৈরি করুন

  1. এন্টিটিস- এ ক্লিক করুন।

432fff294b666c93.png সম্পর্কে

  1. Create Entity এ ক্লিক করুন, এর নাম দিন "filename", এবং Save এ ক্লিক করুন।

602d001d684485de.png সম্পর্কে

নতুন উদ্দেশ্য তৈরি করুন

  1. Intents > Create Intent এ ক্লিক করুন।
  2. "আপলোড করা ছবি এক্সপ্লোর করুন" নামটি ইন্টেন্ট নাম হিসেবে লিখুন।
  3. প্রশিক্ষণ বাক্যাংশ > প্রশিক্ষণ বাক্যাংশ যোগ করুন ক্লিক করুন এবং ব্যবহারকারীর অভিব্যক্তি হিসেবে "file is demo.jpg " এবং "file is taj.jpeg " লিখুন এবং @filename সত্তা হিসেবে ব্যবহার করুন।

dd54ebda59c6b896.png সম্পর্কে

  1. প্রতিক্রিয়া > প্রতিক্রিয়া যোগ করুন > ডিফল্ট > পাঠ্য অথবা SSML প্রতিক্রিয়া ক্লিক করুন। "ফাইল মূল্যায়ন" লিখুন এবং প্রতিক্রিয়া যোগ করুন ক্লিক করুন।
  2. Fulfillment > Enable fulfillment এ ক্লিক করুন এবং Enable webhook call for this intent চালু করুন।

b32b7ac054fcc938.png সম্পর্কে

৫. ভিশন এপিআই-এর সাথে একীভূত করার জন্য পরিপূর্ণতা সেট আপ করুন

  1. পূর্ণতা ক্লিক করুন।
  2. ইনলাইন এডিটর সক্ষম করুন।

c8574c6ef899393f.png সম্পর্কে

  1. নিম্নলিখিত কোডটি দিয়ে index.js আপডেট করুন এবং আপনার ক্লাউড স্টোরেজ বাকেটের নাম দিয়ে YOUR-BUCKET-NAME আপডেট করুন।
'use strict';

const functions = require('firebase-functions');
const {google} = require('googleapis');
const {WebhookClient} = require('dialogflow-fulfillment');
const vision = require('@google-cloud/vision');
  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
const bucketName = 'YOUR-BUCKET-NAME';
const timeZone = 'America/Los_Angeles';
const timeZoneOffset = '-07:00';

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response });
  console.log("Parameters", agent.parameters);

  function applyML(agent){
    const filename = agent.parameters.filename;
    console.log("filename is: ", filename);

    // call vision API to detect text
    return callVisionApi(agent, bucketName, filename).then(result => {
                      console.log(`result is ${result}`);
                      agent.add(`file is being processed, here are the results:  ${result}`);
            //agent.add(`file is being processed ${result}`);
        }).catch((error)=> {
            agent.add(`error occurred at apply ml function`  + error);
        });
  }

  let intentMap = new Map();
  intentMap.set('Explore uploaded image', applyML);
  agent.handleRequest(intentMap);
});


async function callVisionApi(agent, bucketName, fileName){
    // [START vision_text_detection_gcs]
  // Imports the Google Cloud client libraries
  // Creates a client
  
  const client = new vision.ImageAnnotatorClient();
    try {
        // Performs text detection on the gcs file
        const [result] = await client.landmarkDetection(`gs://${bucketName}/${fileName}`);
        const detections = result.landmarkAnnotations;
        var detected = [];
        detections.forEach(text => {
            console.log(text.description);
            detected.push(text.description);
        });
        return detected;
    }
    catch(error) {
        console.log('fetch failed', error);
        return [];
    }
}
  1. package.json এর কন্টেন্ট প্রতিস্থাপন করতে নিম্নলিখিতটি পেস্ট করুন।
{
  "name": "dialogflowFirebaseFulfillment",
  "description": "Dialogflow fulfillment for the bike shop sample",
  "version": "0.0.1",
  "private": true,
  "license": "Apache Version 2.0",
  "author": "Google Inc.",
  "engines": {
    "node": "6"
  },
  "scripts": {
    "lint": "semistandard --fix \"**/*.js\"",
    "start": "firebase deploy --only functions",
    "deploy": "firebase deploy --only functions"
  },
  "dependencies": {
    "firebase-functions": "2.0.2",
    "firebase-admin": "^5.13.1",
    "actions-on-google": "2.2.0", 
    "googleapis": "^27.0.0",
    "dialogflow-fulfillment": "^0.6.1",
    "@google-cloud/bigquery": "^1.3.0",
    "@google-cloud/storage": "^2.0.0",
    "@google-cloud/vision": "^0.25.0"
  }
}
  1. সংরক্ষণ করুন ক্লিক করুন।

৬. ফ্রন্টএন্ড অ্যাপটি ডাউনলোড করে চালান

  1. আপনার স্থানীয় মেশিনে এই সংগ্রহস্থলটি ক্লোন করুন:
https://github.com/priyankavergadia/visionapi-dialogflow.git
  1. কোডটি ধারণকারী ডিরেক্টরিতে যান। বিকল্পভাবে, আপনি নমুনাটি জিপ আকারে ডাউনলোড করে এক্সট্র্যাক্ট করতে পারেন।
cd visionapi-dialogflow

৭. আপনার স্থানীয় পরিবেশ সেট আপ করুন

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

আপনার ক্লাউড এসকিউএল ইনস্ট্যান্সে মৌলিক অ্যাডমিন কাজগুলি সম্পাদন করতে, আপনি মাইএসকিউএল ক্লায়েন্টের জন্য ক্লাউড এসকিউএল ব্যবহার করতে পারেন।

ক্লাউড এসকিউএল প্রক্সি ইনস্টল করুন

নিম্নলিখিত কমান্ড ব্যবহার করে ক্লাউড এসকিউএল প্রক্সি ডাউনলোড এবং ইনস্টল করুন। স্থানীয়ভাবে চালানোর সময় ক্লাউড এসকিউএল প্রক্সি আপনার ক্লাউড এসকিউএল ইনস্ট্যান্সের সাথে সংযোগ করতে ব্যবহৃত হয়।

প্রক্সি ডাউনলোড করুন:

curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64

প্রক্সি এক্সিকিউটেবল করুন।

chmod +x cloud_sql_proxy

একটি ক্লাউড SQL ইনস্ট্যান্স তৈরি করুন

  1. MySQL সেকেন্ড জেনারেশন ইনস্ট্যান্সের জন্য একটি ক্লাউড SQL তৈরি করুন। নামের সাথে "polls-instance" অথবা অনুরূপ কিছু লিখুন। ইনস্ট্যান্সটি প্রস্তুত হতে কয়েক মিনিট সময় লাগতে পারে। এটি প্রস্তুত হওয়ার পরে, এটি ইনস্ট্যান্স তালিকায় দৃশ্যমান হওয়া উচিত।
  2. এখন gcloud কমান্ড-লাইন টুল ব্যবহার করে নিম্নলিখিত কমান্ডটি চালান যেখানে [YOUR_INSTANCE_NAME] আপনার ক্লাউড SQL ইনস্ট্যান্সের নাম উপস্থাপন করে। পরবর্তী ধাপের জন্য connectionName এর জন্য দেখানো মানটি নোট করুন। এটি [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] ফর্ম্যাটে প্রদর্শিত হবে।
gcloud sql instances describe [YOUR_INSTANCE_NAME]

বিকল্পভাবে, আপনি কনসোলের ইনস্ট্যান্সে ক্লিক করে ইনস্ট্যান্স সংযোগের নাম পেতে পারেন।

c11e94464bf4fcf8.png সম্পর্কে

আপনার ক্লাউড SQL ইনস্ট্যান্সটি শুরু করুন

পূর্ববর্তী বিভাগের connectionName ব্যবহার করে ক্লাউড SQL প্রক্সি শুরু করুন।

./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

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

এরপর, একটি নতুন ক্লাউড SQL ব্যবহারকারী এবং ডাটাবেস তৈরি করুন।

  1. আপনার ক্লাউড SQL ইনস্ট্যান্সের জন্য Google Cloud Console ব্যবহার করে polls-instance নামে একটি নতুন ডাটাবেস তৈরি করুন। উদাহরণস্বরূপ, আপনি নাম হিসেবে "polls" লিখতে পারেন। a3707ec9bc38d412.png সম্পর্কে
  2. আপনার ক্লাউড SQL ইনস্ট্যান্সের জন্য ক্লাউড কনসোল ব্যবহার করে polls-instance নামে একটি নতুন ব্যবহারকারী তৈরি করুন। অনুসরণ

ডাটাবেস সেটিংস কনফিগার করুন

  1. সম্পাদনার জন্য mysite/settings-changeme.py খুলুন।
  2. ফাইলটির নাম পরিবর্তন করে setting.py করুন।
  3. দুটি জায়গায়, [YOUR-USERNAME] এবং [YOUR-PASSWORD] এর পরিবর্তে পূর্ববর্তী বিভাগে তৈরি করা ডাটাবেস ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিন। এটি অ্যাপ ইঞ্জিন স্থাপন এবং স্থানীয় পরীক্ষার জন্য ডাটাবেসের সাথে সংযোগ স্থাপন করতে সাহায্য করে।
  4. 'HOST': 'cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANC E_NAME]' আগের বিভাগে অর্জিত আপনার ইনস্ট্যান্স নাম দিয়ে [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] প্রতিস্থাপন করুন।
  5. নিম্নলিখিত কমান্ডটি চালান এবং পরবর্তী ধাপের জন্য আউটপুট করা connectionName মানটি কপি করুন।
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. [YOUR-CONNECTION-NAME] এর পরিবর্তে আগের ধাপে রেকর্ড করা মানটি ব্যবহার করুন।
  2. [YOUR-DATABASE] এর পরিবর্তে আগের বিভাগে আপনার বেছে নেওয়া নামটি দিন।
# [START db_setup]
if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
            'NAME': '[YOUR-DATABASE]',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': '[YOUR-DATABASE]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]'
        }
    }
# [END db_setup]
  1. settings.py বন্ধ করে সংরক্ষণ করুন।

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

  1. Dialogflow এর কনসোলে, ক্লিক করুন 21a21c1104f5fdf3.png সম্পর্কে . জেনারেল ট্যাবে, গুগল প্রজেক্ট > প্রজেক্ট আইডিতে নেভিগেট করুন এবং গুগল ক্লাউডে ক্লিক করুন। 7b2236f5627c37a0.png সম্পর্কে ক্লাউড কনসোল খুলতে। a4cfb880b3c8e789.png সম্পর্কে
  2. নেভিগেশন মেনু ☰ > IAM & Admin > Service accounts- এ ক্লিক করুন, তারপর 796e7c9e65ae751f.png সম্পর্কে Dialogflow integrations এর পাশে এবং Create key এ ক্লিক করুন।

3d72abc0c184d281.png সম্পর্কে

  1. আপনার কম্পিউটারে একটি JSON ফাইল ডাউনলোড হবে, যা আপনার নিম্নলিখিত সেটআপ বিভাগগুলিতে প্রয়োজন হবে।

৯. অ্যাপ থেকে কল করার জন্য Dialogflow detectIntent এন্ডপয়েন্ট সেট আপ করুন

  1. চ্যাট ফোল্ডারে, key-sample.json কে আপনার ক্রেডেনশিয়াল JSON ফাইল দিয়ে প্রতিস্থাপন করুন এবং এর নাম দিন key.json
  2. চ্যাট ফোল্ডারের views.py তে, GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" আপনার প্রোজেক্ট আইডিতে পরিবর্তন করুন।

১০. ক্লাউড স্টোরেজ বাকেট তৈরি করুন

ফ্রন্টএন্ড স্ট্যাটিক অবজেক্টের জন্য একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন

  1. ক্লাউড কনসোলে, নেভিগেট নেভিগেশন মেনু ☰ > স্টোরেজ এ ক্লিক করুন।

87ff9469db4eb77f.png সম্পর্কে

  1. বাকেট তৈরি করুন ক্লিক করুন।
  2. বিশ্বব্যাপী একটি অনন্য নাম প্রদান করুন।

a15a6612e92a39d3.png সম্পর্কে

  1. আপনার ডেটা কোথায় সংরক্ষণ করবেন তা বেছে নিন। অঞ্চলটি বেছে নিন এবং আপনার প্রয়োজন অনুসারে সবচেয়ে উপযুক্ত স্থানটি নির্বাচন করুন।
  2. আপনার ডিফল্ট স্টোরেজ ক্লাস হিসেবে স্ট্যান্ডার্ড বেছে নিন।

9c56abe632cf61db.png সম্পর্কে

  1. Set permissions uniformly at bucket-level (Bucket Policy Only) নির্বাচন করুন, তারপর bucket তৈরি করতে Continue এ ক্লিক করুন।

f175ac794049df04.png সম্পর্কে

  1. বাকেটটি তৈরি হয়ে গেলে, নেভিগেশন মেনু ☰ > স্টোরেজ > ব্রাউজারে ক্লিক করুন এবং আপনার তৈরি করা বাকেটটি সনাক্ত করুন।

9500ee19b427158c.png সম্পর্কে

  1. ক্লিক করুন 796e7c9e65ae751f.png সম্পর্কে সংশ্লিষ্ট বাকেটের পাশে এবং বাকেট অনুমতি সম্পাদনা করুন এ ক্লিক করুন।

fd0a310bc3656edd.png সম্পর্কে

  1. Add Members এ ক্লিক করুন, New members এ ক্লিক করুন, "allUsers" লিখুন, তারপর Select a role > Storage Object Viewer এ ক্লিক করুন। এটি allUsers কে স্ট্যাটিক ফ্রন্টএন্ড ফাইলগুলিতে দেখার অ্যাক্সেস প্রদান করে। এটি ফাইলগুলির জন্য একটি আদর্শ সুরক্ষা সেটিংস নয়, তবে এটি এই নির্দিষ্ট কোডল্যাবের উদ্দেশ্যে কাজ করে।

7519116abd56d5a3.png সম্পর্কে

ব্যবহারকারীর আপলোড করা ছবির জন্য একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন

ব্যবহারকারীর ছবি আপলোড করার জন্য একটি পৃথক বাকেট তৈরি করতে একই নির্দেশাবলী অনুসরণ করুন। আবার "allUsers" তে অনুমতি সেট করুন, তবে ভূমিকা হিসেবে Storage Object Creator এবং Storage Object Viewer নির্বাচন করুন।

১১. ফ্রন্টএন্ড অ্যাপে ক্লাউড স্টোরেজ বাকেট কনফিগার করুন

settings.py-তে ক্লাউড স্টোরেজ বাকেট কনফিগার করুন

  1. mysite/setting.py খুলুন।
  2. GCS_BUCKET ভেরিয়েবলটি সনাক্ত করুন এবং '<YOUR-GCS-BUCKET-NA ME>' আপনার ক্লাউড স্টোরেজ স্ট্যাটিক বাকেট দিয়ে প্রতিস্থাপন করুন।
  3. GS_MEDIA_BUCKET_NAME ভেরিয়েবলটি সনাক্ত করুন এবং ছবিগুলির জন্য '<YOUR-GCS-BUCKET-NAME-MED IA>' এর পরিবর্তে আপনার ক্লাউড স্টোরেজ বাকেটের নাম দিন।
  4. GS_STATIC_BUCKET_NAME ভেরিয়েবলটি সনাক্ত করুন এবং স্ট্যাটিক ফাইলগুলির জন্য '<YOUR-GCS-BUCKET-NAME-STAT IC>' আপনার ক্লাউড স্টোরেজ বাকেটের নাম দিয়ে প্রতিস্থাপন করুন।
  5. ফাইলটি সংরক্ষণ করুন।
GCS_BUCKET = '<YOUR-GCS-BUCKET-NAME>'
GS_MEDIA_BUCKET_NAME = '<YOUR-GCS-BUCKET-NAME-MEDIA>'
GS_STATIC_BUCKET_NAME = '<YOUR-GCS-BUCKET-NAME-STATIC>'

home.html-এ ক্লাউড স্টোরেজ বাকেট কনফিগার করুন

  • চ্যাট ফোল্ডারটি খুলুন, তারপর templates খুলুন এবং home-changeme.html এর নাম পরিবর্তন করে home.html করুন।
  • <YOUR-GCS-BUCKET-NAME-MEDIA> খুঁজুন এবং আপনার বাকেটের নাম দিয়ে প্রতিস্থাপন করুন যেখানে আপনি ব্যবহারকারীর আপলোড করা ফাইলটি সংরক্ষণ করতে চান। এটি আপনাকে ব্যবহারকারীর আপলোড করা ফাইলটি ফ্রন্টএন্ডে সংরক্ষণ করতে এবং স্ট্যাটিক সম্পদগুলিকে ক্লাউড স্টোরেজ বাকেটে রাখতে বাধা দেয়। Vision API ফাইলটি তুলে নেওয়ার এবং ভবিষ্যদ্বাণী করার জন্য ক্লাউড স্টোরেজ বাকেটকে কল করে।

১২. স্থানীয়ভাবে অ্যাপটি তৈরি করুন এবং চালান

আপনার স্থানীয় কম্পিউটারে Django অ্যাপটি চালানোর জন্য, আপনাকে Python, pip এবং virtualenv সহ একটি Python ডেভেলপমেন্ট পরিবেশ সেট আপ করতে হবে। নির্দেশাবলীর জন্য, Setup Up a Python Development Environment দেখুন।

  1. একটি বিচ্ছিন্ন পাইথন পরিবেশ তৈরি করুন এবং নির্ভরতা ইনস্টল করুন।
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. আপনার মডেল সেট আপ করতে জ্যাঙ্গো মাইগ্রেশন চালান।
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. একটি স্থানীয় ওয়েব সার্ভার শুরু করুন।
python3 manage.py runserver
  1. আপনার ওয়েব ব্রাউজারে, http://localhost:8000/ এ যান। আপনি একটি সাধারণ ওয়েবপৃষ্ঠা দেখতে পাবেন যা দেখতে এরকম:।

8f986b8981f80f7b.png সম্পর্কে

আপনার কম্পিউটারে চলমান জ্যাঙ্গো ওয়েব সার্ভার দ্বারা নমুনা অ্যাপ পৃষ্ঠাগুলি সরবরাহ করা হয়। যখন আপনি এগিয়ে যাওয়ার জন্য প্রস্তুত হন, তখন স্থানীয় ওয়েব সার্ভারটি বন্ধ করতে Control+C ( Macintosh-এ Command+C ) টিপুন।

জ্যাঙ্গো অ্যাডমিন কনসোল ব্যবহার করুন

  1. একটি সুপারইউজার তৈরি করুন।
python3 manage.py createsuperuser
  1. একটি স্থানীয় ওয়েব সার্ভার শুরু করুন।
python3 manage.py runserver
  1. আপনার ওয়েব ব্রাউজারে http://localhost:8000/admin/ এ যান। অ্যাডমিন সাইটে লগ ইন করতে, createsuperuser চালানোর সময় তৈরি করা ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি লিখুন।

১৩. অ্যাপ ইঞ্জিন স্ট্যান্ডার্ড পরিবেশে অ্যাপটি স্থাপন করুন

নিম্নলিখিত কমান্ডটি চালিয়ে সমস্ত স্ট্যাটিক কন্টেন্ট একটি ফোল্ডারে সংগ্রহ করুন, যা অ্যাপের সমস্ত স্ট্যাটিক ফাইল settings.py তে STATIC_ROOT দ্বারা নির্দিষ্ট ফোল্ডারে স্থানান্তর করে:

python3 manage.py collectstatic

অ্যাপের ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি চালিয়ে অ্যাপটি আপলোড করুন যেখানে app.yaml ফাইলটি অবস্থিত:

gcloud app deploy

আপডেট সম্পন্ন হয়েছে বলে আপনাকে জানানো বার্তাটির জন্য অপেক্ষা করুন।

১৪. ফ্রন্টএন্ড অ্যাপটি পরীক্ষা করুন

আপনার ওয়েব ব্রাউজারে, https://<your_project_id>.appspot.com এ যান।

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

app deploy কমান্ড app.yaml এ বর্ণিত অ্যাপটি স্থাপন করে এবং নতুন স্থাপন করা সংস্করণটিকে ডিফল্ট সংস্করণ হিসেবে সেট করে, যার ফলে এটি সমস্ত নতুন ট্র্যাফিক পরিবেশন করে।

১৫. উৎপাদন

যখন আপনি প্রোডাকশনে আপনার কন্টেন্ট পরিবেশন করার জন্য প্রস্তুত হবেন, তখন mysite/settings.pyDEBUG ভেরিয়েবলটিকে False এ পরিবর্তন করুন।

১৬. আপনার চ্যাটবট পরীক্ষা করুন

আপনি সিমুলেটরে আপনার চ্যাটবট পরীক্ষা করতে পারেন, অথবা আপনার পূর্বে তৈরি ওয়েব বা গুগল হোম ইন্টিগ্রেশন ব্যবহার করতে পারেন।

  1. ব্যবহারকারী: "হাই"
  2. চ্যাটবট: "হাই! আপনি ল্যান্ডমার্কগুলি অন্বেষণ করার জন্য একটি ছবি আপলোড করতে পারেন।"
  3. ব্যবহারকারী একটি ছবি আপলোড করেন।

এই ছবিটি ডাউনলোড করুন, এর নাম দিন demo.jpg , এবং এটি ব্যবহার করুন।

c3aff843c9f132e4.jpeg সম্পর্কে

  1. চ্যাটবট: "ফাইলটি প্রক্রিয়া করা হচ্ছে, এখানে ফলাফল রয়েছে: গোল্ডেন গেট ব্রিজ, গোল্ডেন গেট জাতীয় বিনোদন এলাকা, গোল্ডেন গেট ব্রিজ, গোল্ডেন গেট ব্রিজ, গোল্ডেন গেট ব্রিজ।"

সামগ্রিকভাবে, এটি দেখতে এরকম হওয়া উচিত:

228df9993bfc001d.png সম্পর্কে

১৭. পরিষ্কার করা

যদি আপনি অন্যান্য ডায়ালগফ্লো কোডল্যাবগুলি সম্পূর্ণ করতে চান, তাহলে এই বিভাগটি এড়িয়ে যান এবং পরে এটিতে ফিরে যান।

ডায়ালগফ্লো এজেন্ট মুছে ফেলুন

  1. ক্লিক করুন ca4337eeb5565bcb.png আপনার বিদ্যমান এজেন্টের পাশে।

520c1c6bb9f46ea6.png সম্পর্কে

  1. জেনারেল ট্যাবে, নিচে স্ক্রোল করুন এবং Delete This Agent এ ক্লিক করুন।
  2. যে উইন্ডোটি আসবে তাতে Delete টাইপ করুন এবং Delete এ ক্লিক করুন।

১৮. অভিনন্দন

আপনি Dialogflow-এ একটি চ্যাটবট তৈরি করেছেন এবং এটি Vision API-এর সাথে ইন্টিগ্রেট করেছেন। আপনি এখন একজন চ্যাটবট ডেভেলপার!

আরও জানুন

আরও জানতে, Dialogflow Github পৃষ্ঠায় কোড নমুনাগুলি দেখুন।