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

رویکردها

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

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

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

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

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

REST

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

قدم بعدی چیست