رویکردها
برای بهترین عملکرد با 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