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

অ্যাপ্রোচ

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

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

আপনি যেভাবে গাড়ির লোকেশন আপডেট প্রদান করুন না কেন, কোনও ডেলিভারি গাড়ি যখন কোনও স্টপেজের দিকে যাচ্ছে এবং যখন সেটি কোনও স্টপেজে পৌঁছাচ্ছে, তখন Fleet Engine আপডেট করার জন্য আপনার ব্যাকএন্ড দায়ী। এর মধ্যে ডিপোও অন্তর্ভুক্ত। 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

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