Android এর জন্য স্থানান্তর করা হচ্ছে

গ্রেডেল আমদানি আপডেট করুন

নতুন SDK-তে প্রতিটি ML Kit API-এর জন্য শুধুমাত্র একটি নির্ভরতা প্রয়োজন। আপনাকে firebase-ml-vision বা firebase-ml-natural-language এর মতো সাধারণ লাইব্রেরি নির্দিষ্ট করার প্রয়োজন নেই। ML Kit Google Play পরিষেবার উপর নির্ভরশীল লাইব্রেরিগুলির জন্য com.google.android.gms নেমস্পেস ব্যবহার করে।

ভিশন এপিআই

আপনার অ্যাপ্লিকেশনের অংশ হিসেবে বান্ডেল করা মডেলগুলি সরবরাহ করা হয়। পাতলা মডেলগুলি ডাউনলোড করতে হবে। কিছু API বান্ডেল এবং পাতলা উভয় আকারেই পাওয়া যায়, অন্যগুলি কেবল এক বা অন্য আকারে পাওয়া যায়:

এপিআই বান্ডিলযুক্ত পাতলা
টেক্সট স্বীকৃতি x (বিটা) এক্স
মুখ সনাক্তকরণ এক্স এক্স
বারকোড স্ক্যানিং এক্স এক্স
চিত্র লেবেলিং এক্স এক্স
বস্তু সনাক্তকরণ এবং ট্র্যাকিং এক্স -

নিম্নলিখিত টেবিল অনুসারে আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে (সাধারণত app/build.gradle ) ML কিট অ্যান্ড্রয়েড লাইব্রেরির জন্য নির্ভরতা আপডেট করুন:

বান্ডিল মডেল

এপিআই পুরাতন নিদর্শন নতুন শিল্পকর্ম
বারকোড স্ক্যানিং com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-barcode-model:16.0.1
com.google.mlkit: বারকোড-স্ক্যানিং:17.3.0
মুখের আকৃতি com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-face-model:19.0.0
com.google.mlkit: মুখ-সনাক্তকরণ: 16.1.7
চিত্র লেবেলিং com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-image-label-model:19.0.0
com.google.mlkit:image-labeling:17.0.9
বস্তু সনাক্তকরণ com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-object-detection-model:19.0.3
com.google.mlkit: অবজেক্ট-ডিটেকশন:১৭.০.২

পাতলা মডেল

এপিআই পুরাতন নিদর্শন নতুন শিল্পকর্ম
বারকোড স্ক্যানিং com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
মুখ সনাক্তকরণ com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-face-detection:17.1.0
টেক্সট স্বীকৃতি com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-text-recognition:19.0.1

অটোএমএলভিশন এজ

এপিআই পুরাতন শিল্পকর্ম নতুন শিল্পকর্ম
ডাউনলোড না করেই অটোএমএল com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-automl:18.0.3
com.google.mlkit:image-labeling-custom:17.0.3
ডাউনলোড সহ অটোএমএল com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-automl:18.0.3
com.google.mlkit:image-labeling-custom:17.0.3
com.google.mlkit:linkfirebase:17.0.0

প্রাকৃতিক ভাষা API গুলি

আপনার অ্যাপ্লিকেশনের অংশ হিসেবে বান্ডেল করা মডেলগুলি সরবরাহ করা হয়। পাতলা মডেলগুলি ডাউনলোড করতে হবে:

এপিআই বান্ডিলযুক্ত পাতলা
ভাষা আইডি এক্স এক্স
স্মার্ট উত্তর এক্স x (বিটা)

নিম্নলিখিত টেবিল অনুসারে আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে (সাধারণত app/build.gradle ) ML কিট অ্যান্ড্রয়েড লাইব্রেরির জন্য নির্ভরতা আপডেট করুন:

বান্ডিল মডেল

এপিআই পুরাতন নিদর্শন নতুন শিল্পকর্ম
ভাষা আইডি com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7
com.google.mlkit:ভাষা-আইডি:17.0.6
স্মার্ট উত্তর com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7
com.google.mlkit: স্মার্ট-উত্তর:১৭.০.৪

পাতলা মডেল

এপিআই পুরাতন নিদর্শন নতুন শিল্পকর্ম
ভাষা আইডি com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7
com.google.android.gms:play-services-mlkit-language-id:17.0.0
স্মার্ট উত্তর com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7
com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1

ক্লাসের নাম আপডেট করুন

যদি আপনার ক্লাস এই টেবিলে প্রদর্শিত হয়, তাহলে নির্দেশিত পরিবর্তনটি করুন:

পুরাতন ক্লাস নতুন ক্লাস
com.google.firebase.ml.common.FirebaseMLException com.google.mlkit.common.MlKitException
com.google.firebase.ml.vision.common.FirebaseVisionImage com.google.mlkit.vision.common.InputImage সম্পর্কে
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector সম্পর্কে com.google.mlkit.vision.barcode.BarcodeScanner সম্পর্কে
com.google.firebase.ml.vision.labeler.FirebaseVisionImageLabel সম্পর্কে com.google.mlkit.vision.label.ImageLabeler সম্পর্কে
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector সম্পর্কে com.google.mlkit.vision.barcode.BarcodeScanner সম্পর্কে
com.google.firebase.ml.vision.automl.FirebaseAutoMLLocalModel com.google.mlkit.common.model.LocalModel
com.google.firebase.ml.vision.automl.FirebaseAutoMLRemoteমডেল com.google.mlkit.common.model.CustomRemoteModel
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceImageLabelerবিকল্প com.google.mlkit.vision.label.defaults.ImageLabelerবিকল্প
com.google.firebase.ml.vision.label.FirebaseVisionImageLabel সম্পর্কে com.google.mlkit.vision.label.ImageLabel সম্পর্কে
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceAutoMLImageLabelerবিকল্প com.google.mlkit.vision.label.custom.CustomImageLabelerবিকল্পসমূহ
com.google.firebase.ml.vision.objects.FirebaseVisionObjectDetectorOptions সম্পর্কে com.google.mlkit.vision.objects.defaults.ObjectDetectorOptions সম্পর্কে

অন্যান্য ক্লাসের জন্য, এই নিয়মগুলি অনুসরণ করুন:

  • ক্লাসের নাম থেকে FirebaseVision উপসর্গটি সরিয়ে ফেলুন।
  • ক্লাসের নাম থেকে Firebase প্রিফিক্স দিয়ে শুরু হওয়া অন্যান্য প্রিফিক্সগুলি সরিয়ে ফেলুন।

এছাড়াও, প্যাকেজের নামে com.google.firebase.ml প্রিফিক্সটি com.google.mlkit দিয়ে প্রতিস্থাপন করুন।

পদ্ধতির নাম আপডেট করুন

কোডে ন্যূনতম পরিবর্তন রয়েছে:

  • ডিটেক্টর/স্ক্যানার/লেবেলার/অনুবাদক… ইনস্ট্যান্টিয়েশন পরিবর্তন করা হয়েছে। প্রতিটি বৈশিষ্ট্যের এখন নিজস্ব এন্ট্রি পয়েন্ট রয়েছে। উদাহরণস্বরূপ: বারকোডস্ক্যানিং, টেক্সট রিকগনিশন, ইমেজ লেবেলিং, ট্রান্সলেশন…। ফায়ারবেস পরিষেবা getInstance() এ কলগুলি ফিচার এন্ট্রি পয়েন্টের getClient() পদ্ধতিতে কল দ্বারা প্রতিস্থাপিত হয়।
  • TextRecognizer-এর জন্য ডিফল্ট ইনস্ট্যান্টিয়েশন সরানো হয়েছে, কারণ আমরা চীনা এবং কোরিয়ান স্ক্রিপ্টগুলি সনাক্ত করার জন্য অতিরিক্ত লাইব্রেরি চালু করেছি। ল্যাটিন স্ক্রিপ্ট টেক্সট স্বীকৃতি মডেলের সাথে ডিফল্ট বিকল্পগুলি ব্যবহার করতে, দয়া করে com.google.android.gms:play-services-mlkit-text-recognition এ নির্ভরতা ঘোষণা করুন এবং TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS) ব্যবহার করুন।
  • ImageLabeler এবং ObjectDetector-এর জন্য ডিফল্ট ইনস্ট্যান্টিয়েশন সরানো হয়েছে, কারণ আমরা এই দুটি বৈশিষ্ট্যের জন্য কাস্টম মডেল সাপোর্ট চালু করেছি। উদাহরণস্বরূপ, ImageLabeling-এ বেস মডেলের সাথে ডিফল্ট বিকল্পগুলি ব্যবহার করতে, অনুগ্রহ করে com.google.mlkit:image-labeling এ একটি নির্ভরতা ঘোষণা করুন এবং জাভাতে ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS) ব্যবহার করুন।
  • সমস্ত হ্যান্ডেল (ডিটেক্টর/স্ক্যানার/লেবেলার/ট্রান্সলেটর…) বন্ধ করা যায়। নিশ্চিত করুন যে যখন ঐ বস্তুগুলি আর ব্যবহার করা হবে না তখন close() পদ্ধতিটি কল করা হচ্ছে। যদি আপনি এগুলিকে Fragment বা AppCompatActivity তে ব্যবহার করেন, তাহলে এটি করার একটি সহজ উপায় হল Fragment বা AppCompatActivity তে LifecycleOwner.getLifecycle() কল করুন, এবং তারপর Lifecycle.addObserver কল করুন।
  • ধারাবাহিকতার জন্য Vision API-তে processImage() এবং detectInImage() নাম পরিবর্তন করে process() রাখা হয়েছে
  • ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই এখন "ভাষা কোড" এর পরিবর্তে "ভাষা ট্যাগ" ( বিসিপি ৪৭ স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত) শব্দটি ব্যবহার করে।
  • xxxOptions ক্লাস থেকে Getter পদ্ধতিগুলি সরানো হয়েছে।
  • পাবলিক ইন্টারফেসের অংশ হিসেবে InputImage ক্লাসে ( FirebaseVisionImage প্রতিস্থাপন করে) getBitmap() পদ্ধতিটি আর সমর্থিত নয়। বিভিন্ন ইনপুট থেকে বিটম্যাপ রূপান্তরিত করতে অনুগ্রহ করে ML Kit কুইকস্টার্ট নমুনায় BitmapUtils.java দেখুন।
  • FirebaseVisionImageMetadata সরানো হয়েছে, আপনি কেবল InputImages এর নির্মাণ পদ্ধতিতে প্রস্থ, উচ্চতা, ঘূর্ণন ডিগ্রি, ফর্ম্যাটের মতো চিত্রের মেটাডেটা পাস করতে পারেন।

এখানে পুরাতন এবং নতুন কোটলিন পদ্ধতির কিছু উদাহরণ দেওয়া হল:

পুরাতন

// Construct image labeler with base model and default options.
val imageLabeler = FirebaseVision.getInstance().onDeviceImageLabeler

// Construct object detector with base model and default options.
val objectDetector = FirebaseVision.getInstance().onDeviceObjectDetector

// Construct face detector with given options
val faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options)

// Construct image labeler with local AutoML model
val localModel =
    FirebaseAutoMLLocalModel.Builder()
      .setAssetFilePath("automl/manifest.json")
      .build()
val autoMLImageLabeler =
    FirebaseVision.getInstance()
      .getOnDeviceAutoMLImageLabeler(
          FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel)
            .setConfidenceThreshold(0.3F)
            .build()
    )

নতুন

// Construct image labeler with base model and default options.
val imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)
// Optional: add life cycle observer
lifecycle.addObserver(imageLabeler)

// Construct object detector with base model and default options.
val objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS)

// Construct face detector with given options
val faceDetector = FaceDetection.getClient(options)

// Construct image labeler with local AutoML model
val localModel =
  LocalModel.Builder()
    .setAssetManifestFilePath("automl/manifest.json")
    .build()
val autoMLImageLabeler =
  ImageLabeling.getClient(
    CustomImageLabelerOptions.Builder(localModel)
    .setConfidenceThreshold(0.3F).build())
  

এখানে পুরাতন এবং নতুন জাভা পদ্ধতির কিছু উদাহরণ দেওয়া হল:

পুরাতন

// Construct image labeler with base model and default options.
FirebaseVisionImageLabeler imagelLabeler =
     FirebaseVision.getInstance().getOnDeviceImageLabeler();

// Construct object detector with base model and default options.
FirebaseVisionObjectDetector objectDetector =
     FirebaseVision.getInstance().getOnDeviceObjectDetector();

// Construct face detector with given options
FirebaseVisionFaceDetector faceDetector =
     FirebaseVision.getInstance().getVisionFaceDetector(options);

// Construct image labeler with local AutoML model
FirebaseAutoMLLocalModel localModel =
    new FirebaseAutoMLLocalModel.Builder()
      .setAssetFilePath("automl/manifest.json")
      .build();
FirebaseVisionImageLabeler autoMLImageLabeler =
    FirebaseVision.getInstance()
      .getOnDeviceAutoMLImageLabeler(
          FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel)
            .setConfidenceThreshold(0.3F)
            .build());

নতুন

// Construct image labeler with base model and default options.
ImageLabeler imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS);
// Optional: add life cycle observer
getLifecycle().addObserver(imageLabeler);

// Construct object detector with base model and default options.
ObjectDetector objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS);

// Construct face detector with given options
FaceDetector faceDetector = FaceDetection.getClient(options);

// Construct image labeler with local AutoML model
LocalModel localModel =
  new LocalModel.Builder()
    .setAssetManifestFilePath("automl/manifest.json")
    .build();
ImageLabeler autoMLImageLabeler =
  ImageLabeling.getClient(
    new CustomImageLabelerOptions.Builder(localModel)
    .setConfidenceThreshold(0.3F).build());
  

API-নির্দিষ্ট পরিবর্তনগুলি

বারকোড স্ক্যানিং

বারকোড স্ক্যানিং API-এর জন্য, মডেলগুলি এখন দুটি উপায়ে সরবরাহ করা যেতে পারে:

  • গুগল প্লে সার্ভিসেস অর্থাৎ "পাতলা" (প্রস্তাবিত) এর মাধ্যমে - এটি অ্যাপের আকার হ্রাস করে এবং মডেলটি অ্যাপ্লিকেশনগুলির মধ্যে ভাগ করা হয়। তবে, ডেভেলপারদের প্রথমবার ব্যবহার করার আগে নিশ্চিত করতে হবে যে মডেলটি ডাউনলোড করা হয়েছে।
  • আপনার অ্যাপের APK-কে "বান্ডেলড" বলা হয় - এটি অ্যাপের আকার বাড়ায় কিন্তু এর অর্থ হল মডেলটি তাৎক্ষণিকভাবে ব্যবহারযোগ্য।

দুটি বাস্তবায়ন কিছুটা ভিন্ন, "পাতলা" সংস্করণের তুলনায় "বান্ডেলড" সংস্করণে বেশ কিছু উন্নতি হয়েছে। এই পার্থক্যগুলির বিশদ বিবরণ বারকোড স্ক্যানিং API নির্দেশিকাগুলিতে পাওয়া যাবে।

মুখ সনাক্তকরণ

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

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

বাস্তবায়নের আচরণ একই রকম।

অনুবাদ

  • TranslateLanguage এখন তার ধ্রুবকগুলির জন্য ভাষা ট্যাগ ( EN ) এর পরিবর্তে পঠনযোগ্য নাম ব্যবহার করে (যেমন ENGLISH )। এগুলি এখন @IntDef এর পরিবর্তে @StringDef, এবং ধ্রুবকের মান হল BCP 47 ভাষা ট্যাগের সাথে মিলে যায়।

  • যদি আপনার অ্যাপ "ডিভাইস আইডল" ডাউনলোড কন্ডিশন অপশন ব্যবহার করে, তাহলে জেনে রাখুন যে এই অপশনটি সরিয়ে ফেলা হয়েছে এবং আর ব্যবহার করা যাবে না। আপনি এখনও "ডিভাইস চার্জিং" অপশনটি ব্যবহার করতে পারেন। আপনি যদি আরও জটিল আচরণ চান, তাহলে আপনার নিজস্ব যুক্তি অনুসারে RemoteModelManager.download কল করতে বিলম্ব করতে পারেন।

অটোএমএল ইমেজ লেবেলিং

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

যদি আপনি আরও জটিল আচরণ চান, তাহলে আপনার নিজস্ব যুক্তির ভিত্তিতে RemoteModelManager.download কল করতে বিলম্ব করতে পারেন।

বস্তু সনাক্তকরণ এবং ট্র্যাকিং

যদি আপনার অ্যাপটি মোটা শ্রেণীবিভাগ সহ বস্তু সনাক্তকরণ ব্যবহার করে, তাহলে মনে রাখবেন যে নতুন SDK সনাক্ত করা বস্তুর জন্য শ্রেণিবিভাগ বিভাগ ফেরত দেওয়ার পদ্ধতি পরিবর্তন করেছে।

শ্রেণীবিভাগ বিভাগটি পূর্ণসংখ্যার পরিবর্তে DetectedObject.Label এর একটি উদাহরণ হিসাবে ফেরত পাঠানো হয়। মোটা শ্রেণীবিভাগের জন্য সম্ভাব্য সমস্ত বিভাগ PredefinedCategory শ্রেণীতে অন্তর্ভুক্ত করা হয়।

এখানে পুরাতন এবং নতুন কোটলিন কোডের একটি উদাহরণ দেওয়া হল:

পুরাতন

if (object.classificationCategory == FirebaseVisionObject.CATEGORY_FOOD) {
    ...
}

নতুন

if (!object.labels.isEmpty() && object.labels[0].text == PredefinedCategory.FOOD) {
    ...
}
// or
if (!object.labels.isEmpty() && object.labels[0].index == PredefinedCategory.FOOD_INDEX) {
    ...
}

এখানে পুরাতন এবং নতুন জাভা কোডের একটি উদাহরণ দেওয়া হল:

পুরাতন

if (object.getClassificationCategory() == FirebaseVisionObject.CATEGORY_FOOD) {
    ...
}

নতুন

if (!object.getLabels().isEmpty()
    && object.getLabels().get(0).getText().equals(PredefinedCategory.FOOD)) {
    ...
}
// or
if (!object.getLabels().isEmpty()
    && object.getLabels().get(0).getIndex() == PredefinedCategory.FOOD_INDEX) {
    ...
}

"অজানা" বিভাগটি সরানো হয়েছে। যখন কোনও বস্তুর শ্রেণীবিভাগের আস্থা কম থাকে, তখন আমরা কোনও লেবেল ফেরত দিই না।

ফায়ারবেস নির্ভরতা অপসারণ করুন (ঐচ্ছিক)

এই ধাপটি শুধুমাত্র তখনই প্রযোজ্য যখন এই শর্তগুলি পূরণ করা হয়:

  • Firebase ML Kit হল একমাত্র Firebase উপাদান যা আপনি ব্যবহার করেন।
  • আপনি কেবল অন-ডিভাইস API ব্যবহার করেন।
  • আপনি মডেল সার্ভিং ব্যবহার করেন না।

যদি এমন হয়, তাহলে মাইগ্রেশনের পরে আপনি Firebase নির্ভরতাগুলি সরিয়ে ফেলতে পারেন। এই পদক্ষেপগুলি অনুসরণ করুন:

  • আপনার অ্যাপের মডিউল (অ্যাপ-লেভেল) ডিরেক্টরিতে থাকা google-services.json কনফিগারেশন ফাইলটি মুছে ফেলুন এবং Firebase কনফিগারেশন ফাইলটি সরিয়ে ফেলুন।
  • আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে (সাধারণত app/build.gradle) Google Services Gradle প্লাগইনটি Strict Version Matcher প্লাগইন দিয়ে প্রতিস্থাপন করুন:

আগে

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'  // Google Services plugin

android {
  // …
}

পরে

apply plugin: 'com.android.application'
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'

android {
  // …
}
  • আপনার প্রোজেক্ট (রুট-লেভেল) গ্র্যাডল ফাইল (build.gradle) এর Google Services Gradle প্লাগইন ক্লাসপাথটি Strict Version Matcher প্লাগইন দিয়ে প্রতিস্থাপন করুন:

আগে

buildscript {
  dependencies {
    // ...

    classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
  }
}

পরে

buildscript {
  dependencies {
    // ...

    classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.1'
  }
}

Firebase সাপোর্ট সাইটের নির্দেশাবলী অনুসারে Firebase কনসোলে আপনার Firebase অ্যাপটি মুছে ফেলুন।

সাহায্য পাওয়া

যদি আপনার কোনও সমস্যা হয়, তাহলে অনুগ্রহ করে আমাদের কমিউনিটি পৃষ্ঠাটি দেখুন যেখানে আমরা আমাদের সাথে যোগাযোগের জন্য উপলব্ধ চ্যানেলগুলির রূপরেখা দিই।