مکان وسیله نقلیه تحویل را به‌روزرسانی کنید

رویکردها

برای بهترین عملکرد با Fleet Engine، جریانی از به روز رسانی مکان خودرو را حداقل هر دقیقه یک بار و حداکثر هر 5 ثانیه یک بار در اختیار آن قرار دهید. برای ارائه این به روز رسانی ها از یکی از راه های زیر استفاده کنید:

  • از گزینه Driver SDK : Simplest استفاده کنید .
  • از کد سفارشی استفاده کنید : اگر مکان‌ها از طریق باطن شما منتقل می‌شوند یا از دستگاه‌هایی غیر از Android یا iOS استفاده می‌کنید مفید است. این سند آن رویکرد را پوشش می دهد.

صرف نظر از اینکه چگونه به‌روزرسانی‌های مکان خودرو را ارائه می‌دهید، باطن شما مسئول به‌روزرسانی Fleet Engine در زمانی که وسیله نقلیه تحویلی به ایستگاه می‌رود و زمانی که به ایستگاه می‌رسد، است. این شامل خود انبار نیز می شود. Fleet Engine این رویدادها را به طور خودکار شناسایی نمی کند.

نمونه‌های مکان خودرو را به‌روزرسانی کنید

می‌توانید از کتابخانه Java gRPC برای به‌روزرسانی مکان خودرو در Fleet Engine یا 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

بعدش چی