ট্রিপ আপডেট করুন এবং তাদের রাজ্য পরিচালনা করুন

এই দস্তাবেজটি বর্ণনা করে যে কীভাবে একটি ট্রিপ আপডেট করতে হয় এবং তার অবস্থা পরিচালনা করতে হয়, যা একটি ট্রিপের জন্য প্রাসঙ্গিক ক্ষেত্র সেট করতে একটি ফিল্ড মাস্ক ব্যবহার করে। এটি অনুমান করে যে আপনি এই সাইটে বর্ণিত হিসাবে ফ্লিট ইঞ্জিন সেট আপ করেছেন এবং একটি ভ্রমণের জন্য নির্ধারিত একটি গাড়ির সাথে কাজ করছেন৷

ট্রিপ আপডেট বেসিক

নিম্নলিখিত পরিস্থিতিতে একটি ট্রিপ আপডেট করতে আপনার সিস্টেম ফ্লিট ইঞ্জিন ব্যবহার করে:

  • এটি তৈরি করার পরে একটি ভ্রমণের জন্য একটি গাড়ি বরাদ্দ করার সময়।
  • যখন ভ্রমণের অবস্থা পরিবর্তিত হয়; উদাহরণস্বরূপ, যখন গাড়িটি ওয়েপয়েন্টের মধ্য দিয়ে যায়।
  • আপনি যখন ট্রিপ ফিল্ড আপডেট করেন, যেমন যাত্রীর সংখ্যা এবং ড্রপ-অফ পয়েন্ট।

একটি ট্রিপ আপডেট করতে, gRPC এবং REST ব্যবহার করে একটি অনুরোধ পাঠান।

  • UpdateTrip() পদ্ধতি: gRPC বা REST
  • UpdateTripRequest বার্তা: শুধুমাত্র gRPC

আপনার প্রকল্পের পরিষেবা অ্যাকাউন্টের জন্য উপযুক্ত প্রমাণপত্রাদি ব্যবহার করুন যেমন Fleet Engine: Service অ্যাকাউন্ট ভূমিকাগুলিতে বর্ণিত হয়েছে৷

ট্রিপ ক্ষেত্র আপডেট করুন

আপনি একটি একক গন্তব্য ট্রিপ তৈরি করুন-ট্রিপ ক্ষেত্রে বর্ণিত যেকোনো ট্রিপ ক্ষেত্র আপডেট করতে পারেন। উদাহরণস্বরূপ, আপনি একটি ট্রিপ তৈরি করার পরে, এটি একটি সাধারণ অভ্যাস যা প্রথমে একটি যান খুঁজে বের করা এবং তারপর ট্রিপ vehicle_id ফিল্ডটি আপডেট করা যা ট্রিপটি সম্পন্ন করবে এমন গাড়ির সাথে যুক্ত করা।

মাঠের মাস্ক ব্যবহার করুন

ফিল্ড মাস্ক হল এপিআই কলারদের জন্য অনুরোধের বা আপডেট হওয়া উচিত এমন ক্ষেত্রগুলি তালিকাভুক্ত করার একটি উপায়৷ ফিল্ডমাস্ক ব্যবহার করা অপ্রয়োজনীয় কাজ এড়িয়ে যায় এবং কর্মক্ষমতা উন্নত করে। ফ্লিট ইঞ্জিন সমস্ত সংস্থান জুড়ে ক্ষেত্র আপডেট করার জন্য ফিল্ড মাস্ক ব্যবহার করে।

গাড়ির আইডি দিয়ে ট্রিপ আপডেট করুন

আপনাকে অবশ্যই একটি গাড়ির আইডি দিয়ে একটি ট্রিপ কনফিগার করতে হবে যাতে ফ্লিট ইঞ্জিন তার রুট বরাবর গাড়িটিকে ট্র্যাক করতে পারে। নিম্নলিখিত কোড নমুনা দেখায় কিভাবে একটি গাড়ির আইডি দিয়ে ট্রিপ আপডেট করতে হয়।

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 পর্যন্ত, আপনি ফ্লিট ইঞ্জিনে ভ্রমণের অবস্থা আপডেট করেন। ট্রিপ লাইফসাইকেল সর্বদা NEW রাষ্ট্রীয় মান দিয়ে শুরু হয় এবং COMPLETE বা CANCELED মান দিয়ে শেষ হয়।

উদাহরণ ট্রিপ আপডেট

ফ্লিট ইঞ্জিনে ব্যাক-টু-ব্যাক ট্রিপের জন্য কীভাবে ট্রিপ স্টেট আপডেট করতে হয় তা নিম্নলিখিতটি দেখায়।

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 ত্রুটির সম্মুখীন হতে পারেন, যে ক্ষেত্রে ফ্লিট ইঞ্জিনের অবস্থা অজানা। এটি তদন্ত করার জন্য, আপনি আপডেট বা নিরীক্ষণ করার চেষ্টা করছেন সেই একই ট্রিপ আইডি ব্যবহার করে প্রথমে CreateTrip আবার কল করুন। এটি একটি 201 (তৈরি করা) বা 409 (সংঘর্ষ) প্রদান করবে। পরবর্তী ক্ষেত্রে, পূর্ববর্তী অনুরোধটি DEADLINE_EXCEEDED এর আগে সফল হয়েছিল।

কনজিউমার SDK-এ নেটওয়ার্ক ত্রুটির তালিকা দেখুন, হয় Android বা iOS এর জন্য।

এরপর কি