ডেলিভারি ভেইকেলের লোকেশন আপডেট করা

অ্যাপ্রোচ

Fleet Engine-এর সাথে সেরা পারফর্ম্যান্সের জন্য, প্রতি মিনিটে অন্তত একবার এবং প্রতি ৫ সেকেন্ডে সর্বাধিক একবার গাড়ির লোকেশন আপডেটের একটি স্ট্রিম প্রদান করুন। এইসব আপডেট প্রদান করতে নিম্নলিখিত যেকোনও একটি পদ্ধতি ব্যবহার করুন:

  • Driver SDK ব্যবহার করুন: সবচেয়ে সহজ বিকল্প।
  • কাস্টম কোড ব্যবহার করুন: আপনার ব্যাকএন্ডের মাধ্যমে লোকেশন রিলে করা হলে, অথবা আপনি Android বা iOS ছাড়া অন্য ডিভাইস ব্যবহার করলে এটি উপযোগী। এই ডকুমেন্টে সেই পদ্ধতি কভার করা হয়েছে।

আপনি কীভাবে গাড়ির লোকেশন আপডেট প্রদান করেন তা নির্বিশেষে, আপনার ব্যাকএন্ড ফ্লিট ইঞ্জিন আপডেট করার জন্য দায়ী যখন একটি ডেলিভারি গাড়ি একটি স্টপে যাওয়ার পথে থাকে এবং যখন এটি একটি স্টপে পৌঁছায়। এর মধ্যে ডিপোও অন্তর্ভুক্ত। Fleet Engine এইসব ইভেন্ট অটোমেটিক শনাক্ত করে না।

গাড়ির লোকেশন আপডেট করার উদাহরণ

Fleet Engine-এ কোনও গাড়ির লোকেশন আপডেট করতে, আপনি Java gRPC লাইব্রেরি বা REST ব্যবহার করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে। যেসব ভাষায় উপলভ্য তার সম্পূর্ণ তালিকা দেখতে, শিডিউল করা টাস্ক পরিষেবার জন্য ক্লায়েন্ট লাইব্রেরি দেখুন।

Java

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
  DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
      .setLastLocation(DeliveryVehicleLocation.newBuilder()
          .setSupplementalLocation(LatLng.newBuilder()
              .setLatitude(37.3382)
              .setLongitude(121.8863))
          .setSupplementalLocationTime(now())
          .setSupplementalLocationSensor(DeliveryVehicleLocationSensor.CUSTOMER_SUPPLIED_LOCATION)
          .setSupplementalLocationAccuracy(DoubleValue.of(15.0)))  // Optional
      .build();

  // DeliveryVehicle request
  UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
    UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
        .setName(vehicleName)
        .setDeliveryVehicle(myDeliveryVehicle)
        .setUpdateMask(FieldMask.newBuilder()
            .addPaths("last_location"))
        .build();

  try {
    DeliveryVehicle updatedDeliveryVehicle =
        deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

বিশ্রাম

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=last_location

অনুরোধের বিবরণ

অনুরোধের বডিতে অবশ্যই একটি DeliveryVehicle এন্টিটি থাকতে হবে যা নিম্নলিখিত ফিল্ডগুলি নির্দিষ্ট করে:

  • ফাঁকা রাখা যাবে না:

    ফিল্ডভ্যালু
    lastLocation.supplementalLocation গাড়ির লোকেশন।
    lastLocation.supplementalLocationTime গাড়িটি এই লোকেশনে শেষবার কখন ছিল সেই টাইমস্ট্যাম্প।
    lastLocation.supplementalLocationSensor CUSTOMER_SUPPLIED_LOCATION-এর সাথে পপুলেট করা উচিত।

  • ঐচ্ছিক ফিল্ড:

    ফিল্ডভ্যালু
    lastLocation.supplementalLocationAccuracy প্রদান করা লোকেশনের অ্যাকুরেসি, মিটারে।

  # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
  # environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "lastLocation": {
      "supplementalLocation": {"latitude": 12.1, "longitude": 14.5},
      "supplementalLocationTime": "$(date -u --iso-8601=seconds)",
      "supplementalLocationSensor": "CUSTOMER_SUPPLIED_LOCATION",
      "supplementalLocationAccuracy": 15
    }
  }
  EOM

এর পরে কী করতে হবে