একটি ট্রিপ শেষ হওয়ার সাথে সাথেই আরেকটি ট্রিপ শুরু করা

এই ডকুমেন্টে কীভাবে একটি ব্যাক-টু-ব্যাক ট্রিপ তৈরি করতে হয়, সঠিক ফিল্ড সেট করতে হয় এবং সেটি সম্পূর্ণ করার জন্য কোনও গাড়িতে অ্যাসাইন করতে হয় তা বর্ণনা করা হয়েছে। এটি ধরে নেয় যে আপনি Fleet Engine সেট-আপ করেছেন, আপনি গাড়ি তৈরি করেছেন, আপনার কাছে একটি ড্রাইভার অ্যাপ আছে এবং ঐচ্ছিকভাবে, একটি গ্রাহক অ্যাপ আছে। এছাড়াও, আপনাকে অন-ডিমান্ড ট্রিপের জন্য উপলভ্য বিভিন্ন ট্রিপ দৃশ্যকল্প সম্পর্কেও জানতে হবে। এর জন্য নিম্নলিখিত সম্পর্কিত গাইড দেখুন:

ট্রিপ তৈরি করার প্রাথমিক তথ্য

এই বিভাগে, Fleet Engine-এ ট্রিপ তৈরি করার জন্য প্রয়োজনীয় অনুরোধের বিবরণ সম্পর্কে বর্ণনা করা হয়েছে। আপনি gRPC এবং REST-এর মধ্যে যেকোনও একটি ব্যবহার করে তৈরি করার অনুরোধ জানান।

  • CreateTrip() পদ্ধতি: gRPC অথবা REST
  • CreateTripRequest মেসেজ: শুধুমাত্র gRPC

ট্রিপ ফিল্ড

Fleet Engine-এ ট্রিপ তৈরি করতে নিম্নলিখিত ফিল্ড ব্যবহার করুন। আপনি বিভিন্ন ধরনের ট্রিপের জন্য আলাদা আলাদা ফিল্ড ব্যবহার করতে পারেন: একটি বা একাধিক গন্তব্য, একটির পরে একটি বা শেয়ার করা পুলিং ট্রিপ। আপনি ট্রিপ তৈরি করার সময় ঐচ্ছিক ফিল্ড পূরণ করতে পারেন অথবা ট্রিপ আপডেট করার সময় পরে সেগুলি সেট করতে পারেন।

ট্রিপ ফিল্ড
নাম প্রয়োজনীয়? বিবরণ
অভিভাবক হ্যাঁ প্রোজেক্ট আইডি সহ স্ট্রিং। এই আইডিটি আপনার সম্পূর্ণ Fleet Engine ইন্টিগ্রেশন জুড়ে একই আইডি হতে হবে, একই পরিষেবা অ্যাকাউন্ট ভূমিকা সহ।
trip_id হ্যাঁ আপনার তৈরি করা একটি স্ট্রিং যা এই ট্রিপকে অনন্যভাবে শনাক্ত করে। ট্রিপ আইডিতে নির্দিষ্ট কিছু বিধিনিষেধ আছে, যা রেফারেন্সে উল্লেখ করা হয়েছে।
trip_type হ্যাঁ আপনি যে ট্রিপের ধরন তৈরি করছেন তার জন্য TripType-কে নিম্নলিখিত ভ্যালুতে সেট করুন:
  • একটি গন্তব্য: SHARED বা EXCLUSIVE-এ সেট করুন।
  • একাধিক গন্তব্য: EXCLUSIVE হিসেবে সেট করা আছে।
  • পরপর: EXCLUSIVE-এ সেট করা আছে।
  • শেয়ার করা পুলিং: SHARED হিসেবে সেট করা আছে।
pickup_point হ্যাঁ ট্রিপের শুরুর জায়গা।
মধ্যবর্তী গন্তব্য হ্যাঁ

শুধুমাত্র একাধিক গন্তব্য সহ ট্রিপের ক্ষেত্রে: পিক-আপ ও ড্রপ-অফের মধ্যে ড্রাইভার যেসব মধ্যবর্তী গন্তব্যে যান, তার তালিকা। dropoff_point-এর মতো, এই ফিল্ডটিও UpdateTrip কল করে পরে সেট করা যেতে পারে, তবে একাধিক গন্তব্য সহ ট্রিপের সংজ্ঞা অনুযায়ী এতে মধ্যবর্তী গন্তব্য থাকে।

vehicle_waypoints হ্যাঁ

শুধুমাত্র শেয়ার-পুলিং ট্রিপ: এই ফিল্ডে একাধিক ট্রিপের ওয়েপয়েন্ট ইন্টারলিভ করা যায়। এতে অ্যাসাইন করা গাড়ির জন্য বাকি থাকা সবকটি ওয়েপয়েন্ট থাকে, সেই সাথে এই ট্রিপের জন্য পিক-আপ ও ড্রপ-অফ ওয়েপয়েন্টও থাকে। আপনি CreateTrip বা UpdateTrip-এ কল করে এই ফিল্ড সেট করতে পারবেন। এছাড়াও, আপনি UpdateVehicle-এ কল করে waypoints ফিল্ডের মাধ্যমে গাড়ির ওয়েপয়েন্ট আপডেট করতে পারবেন। গোপনীয়তা সংক্রান্ত কারণে পরিষেবাটি GetTrip কলে এই তথ্য ফেরত দেয় না।

number_of_passengers না ট্রিপে যাত্রীর সংখ্যা।
dropoff_point না ট্রিপের গন্তব্য।
vehicle_id না ট্রিপে অ্যাসাইন করা গাড়ির আইডি।

যেমন: একটির পরে একটি ট্রিপ তৈরি করা

কীভাবে একটি ব্যাক-টু-ব্যাক ট্রিপ তৈরি করতে হয় এবং তা কোনও গাড়িতে অ্যাসাইন করতে হয় তা নিচে দেখানো হল। এই পরিস্থিতিতে, ট্রিপ তৈরি করার পদ্ধতিটি একটি গন্তব্য সহ ট্রিপের মতোই। পরে আপনি আরেকটি ট্রিপ তৈরি করে, আগে থেকেই অ্যাক্টিভ থাকা ট্রিপের সাথে কোনও গাড়িতে অ্যাসাইন করেন।

// A vehicle with ID 'my-vehicle' is already created and it is assigned to a trip with ID 'current-trip'.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String VEHICLE_ID =" my-vehicle";
static final String TRIP_ID = "back-to-back-trip");

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

String parent = "providers/" + PROJECT_ID;

Trip trip = Trip.newBuilder()
    .setTripType(TripType.EXCLUSIVE)
    .setPickupPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.195139).setLongitude(106.820826)))
    .setDropoffPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.1275).setLongitude(106.6537)))
    .setVehicleId(VEHICLE_ID)
    .build();

// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
    .setParent(parent)
    .setTripId(TRIP_ID)
    .setTrip(trip)
    .build();

// Error handling.
try {
  // Fleet Engine automatically assigns a 'waypoints' list to the trip containing
  // the vehicle's current trip waypoints.
  Trip createdTrip =
      tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

একটির পরে একটি ট্রিপ আপডেট করা

আপনি যখন একটি ব্যাক-টু-ব্যাক ট্রিপের জন্য কোনও গাড়ি অ্যাসাইন করেন, তখন আপনি কোনও গাড়িতে একটি ট্রিপ অ্যাসাইন করেন, এমনকি যদি এটিতে আগে থেকেই একটি অ্যাসাইন করা থাকে।

Fleet Engine-এ তৈরি করা যেকোনও ট্রিপকে অবশ্যই কোনও গাড়ির সাথে অ্যাসাইন করতে হবে, যাতে Fleet Engine ট্রিপের আনুমানিক সময় গণনা করতে এবং ট্র্যাক করতে পারে। আপনি এটি ট্রিপ তৈরি করার সময় অথবা পরে ট্রিপ আপডেট করার সময় করতে পারবেন।

আপনি কোনও গাড়ির জন্য ট্রিপ অ্যাসাইন করার পরে, Fleet Engine অটোমেটিক ব্যাক-টু-ব্যাক ট্রিপের সাথে সম্পর্কিত ওয়েপয়েন্ট গাড়ির ওয়েপয়েন্ট ফিল্ডে যোগ করে। একটি ট্রিপের remainingWaypoints ফিল্ডে সবকটি ওয়েপয়েন্টের তালিকা থাকে, যার মধ্যে অন্যান্য ট্রিপের ওয়েপয়েন্টও অন্তর্ভুক্ত থাকে, যেগুলি ট্রিপের ড্রপ-অফের আগে ভিজিট করা হবে।

যেমন, পরপর দুটি ট্রিপের কথা বিবেচনা করুন: ট্রিপ ক এবং ট্রিপ খ। গাড়িটি ট্রিপ ক-এর জন্য গ্রাহককে পিক-আপ করেছে এবং গন্তব্যে যাওয়ার পথে ড্রাইভার ট্রিপ খ-এর জন্য অন্য গ্রাহককে পিক-আপ করার অনুরোধ পেয়েছেন।

  • getVehicle()-কে কল করলে remainingWaypoints রিটার্ন করে যার মধ্যে এগুলি থাকে:
    A ড্রপ-অফ → B পিক-আপ → B ড্রপ-অফ.
  • getTrip() অথবা onTripRemainingWaypointsUpdated কলব্যাকের জন্য ট্রিপ ক থেকে remainingWaypoints ফেরত আসে যার মধ্যে:
    ক ড্রপ-অফ থাকে।
  • getTrip() অথবা onTripRemainingWaypointsUpdated কলব্যাক ট্রিপ B-এর জন্য remainingWaypoints রিটার্ন করে যাতে এগুলি থাকে:
    A ড্রপ-অফ → B পিক-আপ → এবং B ড্রপ-অফ।

এর পরে কী করতে হবে