ডেলিভারি গাড়ির অবস্থান আপডেট করুন

পদ্ধতি

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

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

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

গাড়ির অবস্থানের উদাহরণ আপডেট করুন

ফ্লিট ইঞ্জিনে গাড়ির অবস্থান আপডেট করতে আপনি জাভা জিআরপিসি লাইব্রেরি ব্যবহার করতে পারেন, অথবা REST ব্যবহার করতে পারেন।

জাভা

  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

এরপর কি?