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

رویکردها

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

  • از کیت توسعه نرم‌افزار 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

قدم بعدی چیست