অ্যাপ্রোচ
Fleet Engine-এর সাথে সেরা পারফর্ম্যান্স পেতে, এটিকে অন্তত প্রতি মিনিটে একবার এবং সর্বাধিক প্রতি ৫ সেকেন্ডে একবার করে গাড়ির লোকেশন আপডেট প্রদান করুন। এইসব আপডেট প্রদান করতে নিম্নলিখিত পদ্ধতিগুলির মধ্যে যেকোনও একটি ব্যবহার করুন:
- Driver SDK ব্যবহার করুন: সবচেয়ে সহজ বিকল্প।
- কাস্টম কোড ব্যবহার করুন: আপনার ব্যাকএন্ডের মাধ্যমে লোকেশন রিলে করা হলে, অথবা Android বা iOS ছাড়া অন্য ডিভাইস ব্যবহার করলে এটি কাজে লাগে। এই ডকুমেন্টে সেই পদ্ধতি সম্পর্কে আলোচনা করা হয়েছে।
আপনি যেভাবে গাড়ির লোকেশন আপডেট প্রদান করুন না কেন, কোনও ডেলিভারি গাড়ি যখন কোনও স্টপেজের দিকে যাচ্ছে এবং যখন সেটি কোনও স্টপেজে পৌঁছাচ্ছে, তখন Fleet Engine আপডেট করার জন্য আপনার ব্যাকএন্ড দায়ী। এর মধ্যে ডিপোও অন্তর্ভুক্ত। Fleet Engine এইসব ইভেন্ট অটোমেটিক শনাক্ত করে না।
গাড়ির লোকেশন আপডেট করার উদাহরণ
Fleet Engine-এ কোনও গাড়ির লোকেশন আপডেট করতে, আপনি Java gRPC লাইব্রেরি বা REST ব্যবহার করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে। যেসব ভাষায় উপলভ্য তার সম্পূর্ণ তালিকা দেখতে, শিডিউল করা টাস্ক পরিষেবার জন্য ক্লায়েন্ট লাইব্রেরি দেখুন।
Java
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.supplementalLocationSensorCUSTOMER_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