এই ডকুমেন্ট থেকে জানা যায় যে কীভাবে ট্রিপ আপডেট করতে হয় এবং এর স্ট্যাটাস ম্যানেজ করতে হয়, যার মধ্যে ট্রিপের জন্য প্রাসঙ্গিক ফিল্ড সেট করতে ফিল্ড মাস্ক ব্যবহার করা অন্তর্ভুক্ত। এটি ধরে নেয় যে আপনি এই সাইটে বর্ণিত Fleet Engine সেট-আপ করেছেন এবং ট্রিপে অ্যাসাইন করা গাড়ির সাথে কাজ করছেন।
ট্রিপ আপডেট সংক্রান্ত প্রাথমিক তথ্য
নিম্নলিখিত পরিস্থিতিতে ট্রিপ আপডেট করার জন্য আপনার সিস্টেম Fleet Engine ব্যবহার করে:
- ট্রিপ তৈরি করার পরে কোনও গাড়ি অ্যাসাইন করার সময়।
- ট্রিপের স্ট্যাটাস পরিবর্তন হলে; যেমন, গাড়িটি যখন ওয়েপয়েন্টের মধ্য দিয়ে যায়।
- আপনি যখন ট্রিপের ফিল্ড আপডেট করেন, যেমন যাত্রীর সংখ্যা এবং ড্রপ-অফ পয়েন্ট।
ট্রিপ আপডেট করতে, gRPC বা REST ব্যবহার করে অনুরোধ পাঠান।
Fleet Engine: পরিষেবা অ্যাকাউন্টের ভূমিকা-তে যেমন বর্ণনা করা হয়েছে, আপনার প্রোজেক্টের পরিষেবা অ্যাকাউন্টের জন্য উপযুক্ত ক্রেডেনশিয়াল ব্যবহার করুন।
ট্রিপ ফিল্ড আপডেট করুন
একটি গন্তব্যের ট্রিপ তৈরি করুন-এর ট্রিপ ফিল্ড-এ বর্ণিত যেকোনও ট্রিপ ফিল্ড আপনি আপডেট করতে পারবেন। যেমন, ট্রিপ তৈরি করার পরে, প্রথমে একটি গাড়ি খুঁজে বের করা এবং তারপরে ট্রিপ vehicle_id ফিল্ড আপডেট করে
যে গাড়িটি ট্রিপটি চালাবে তার সাথে এটিকে যুক্ত করা একটি সাধারণ
অভ্যাস।
ফিল্ড মাস্ক ব্যবহার করা
ফিল্ড মাস্ক হল API কলারদের জন্য ফিল্ডের তালিকা তৈরি করার একটি উপায় যা একটি অনুরোধের বা আপডেট করা উচিত। FieldMask ব্যবহার করলে অপ্রয়োজনীয় কাজ এড়ানো যায় এবং পারফর্ম্যান্স উন্নত হয়। Fleet Engine সব রিসোর্স জুড়ে ফিল্ড আপডেট করার জন্য ফিল্ড মাস্ক ব্যবহার করে।
গাড়ির আইডি দিয়ে ট্রিপ আপডেট করুন
আপনাকে অবশ্যই একটি গাড়ির আইডি সহ একটি ট্রিপ কনফিগার করতে হবে যাতে ফ্লিট ইঞ্জিন তার রুট বরাবর গাড়িটি ট্র্যাক করতে পারে। নিম্নলিখিত কোড স্যাম্পেল দেখায় যে কীভাবে গাড়ির আইডি সহ ট্রিপ আপডেট করতে হয়।
static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "trip-8241890";
String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
// The trip settings to update.
Trip trip = Trip.newBuilder()
.setVehicleId("8241890")
.build();
// The trip update request.
UpdateTripRequest updateTripRequest =
UpdateTripRequest.newBuilder() // No need for the header.
.setName(tripName)
.setTrip(trip)
.setUpdateMask(FieldMask.newBuilder().addPaths("vehicle_id"))
.build();
// Error handling.
// If the Fleet Engine has both a trip and vehicle with IDs, and if the
// credentials validate, then the service updates the trip.
try {
Trip updatedTrip = tripService.updateTrip(updateTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND: // Neither the trip nor vehicle exist.
break;
case PERMISSION_DENIED:
break;
}
return;
}
ট্রিপের জন্য ট্রিপের স্ট্যাটাস ম্যানেজ করুন
আপনি TripStatus গুনতির ভ্যালু
ব্যবহার করে ট্রিপের স্ট্যাটাস উল্লেখ করেন। ট্রিপের স্ট্যাটাস পরিবর্তন হলে; যেমন ENROUTE_TO_PICKUP থেকে
ARRIVED_AT_PICKUP, আপনি Fleet Engine-এ ট্রিপের স্ট্যাটাস আপডেট করেন। ট্রিপের
লাইফসাইকেল সবসময় NEW স্টেট ভ্যালু দিয়ে শুরু হয় এবং COMPLETE অথবা CANCELED
ভ্যালু দিয়ে শেষ হয়।
ট্রিপ আপডেট করার উদাহরণ
Fleet Engine-এ পরপর ট্রিপের জন্য ট্রিপের স্ট্যাটাস কীভাবে আপডেট করতে হয় তা নিচে দেখানো হয়েছে।
static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "trip-8241890";
String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
// Trip settings to be updated.
Trip trip = Trip.newBuilder()
.setTripStatus(TripStatus.ARRIVED_AT_PICKUP)
.build();
// Trip update request
UpdateTripRequest updateTripRequest = UpdateTripRequest.newBuilder()
.setName(tripName)
.setTrip(trip)
.setUpdateMask(FieldMask.newBuilder().addPaths("trip_status"))
.build();
// Error handling.
try {
Trip updatedTrip = tripService.updateTrip(updateTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND: // The trip doesn't exist.
break;
case FAILED_PRECONDITION: // The given trip status is invalid.
break;
case PERMISSION_DENIED:
break;
}
return;
}
অন্যান্য ধরনের ট্রিপ বিভাগে ট্রিপ কীভাবে আপডেট করতে হয় তার অন্যান্য উদাহরণ দেখতে পাবেন।
ট্রিপ সংক্রান্ত সমস্যার সমাধান করা
আগে থেকে থাকা ট্রিপ আপডেট বা খোঁজার সময়, আপনি
DEADLINE_EXCEEDED সমস্যার সম্মুখীন হতে পারেন, যেক্ষেত্রে Fleet Engine-এর স্ট্যাটাস অজানা।
এটি তদন্ত করতে, প্রথমে আপনি যে ট্রিপ আইডি আপডেট বা মনিটর করার চেষ্টা করছেন, সেটি ব্যবহার করে আবার CreateTrip কল করুন। এটি 201 (তৈরি করা হয়েছে) অথবা
409 (দ্বন্দ্ব) রিটার্ন করবে। পরের ক্ষেত্রে, আগের অনুরোধ DEADLINE_EXCEEDED-এর আগে
সফল হয়েছে।
Consumer SDK-তে নেটওয়ার্কের সমস্যার তালিকা দেখুন, হয় Android অথবা iOS-এর জন্য।