ব্যাক-টু-ব্যাক ট্রিপ তৈরি করুন

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

ট্রিপ তৈরির প্রাথমিক বিষয়াবলী

এই বিভাগে ফ্লিট ইঞ্জিনে একটি ট্রিপ তৈরি করার জন্য প্রয়োজনীয় অনুরোধের বিবরণ বর্ণনা করা হয়েছে। আপনি gRPC এবং REST ব্যবহার করে একটি তৈরির অনুরোধ পাঠাতে পারেন।

  • CreateTrip() মেথড: gRPC অথবা REST
  • CreateTripRequest বার্তা: শুধুমাত্র gRPC

ট্রিপ ফিল্ডস

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

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

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

যানবাহন_ওয়েপয়েন্ট হ্যাঁ

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

যাত্রীর সংখ্যা না যাত্রাপথে যাত্রীর সংখ্যা।
ড্রপঅফ_পয়েন্ট না ভ্রমণের গন্তব্য।
গাড়ির_আইডি না ট্রিপের জন্য বরাদ্দকৃত যানবাহনটির আইডি।

উদাহরণ: পরপর একটি ট্রিপ তৈরি করুন

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

// 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;
}

পরপর ভ্রমণের আপডেট

যখন আপনি পরপর দুটি ট্রিপের জন্য একটি যানবাহন বরাদ্দ করেন, তখন সেই যানবাহনে আগে থেকেই একটি ট্রিপ বরাদ্দ করা থাকলেও আপনি সেটিতে একটি ট্রিপ বরাদ্দ করেন।

ফ্লিট ইঞ্জিনে তৈরি করা যেকোনো ট্রিপকে অবশ্যই একটি গাড়ির সাথে যুক্ত করতে হবে, যাতে ফ্লিট ইঞ্জিন ট্রিপের আনুমানিক পৌঁছানোর সময় (ETA) গণনা করতে ও সেটির ট্র্যাক রাখতে পারে। আপনি ট্রিপ তৈরির সময় অথবা পরে ট্রিপটি আপডেট করার সময় এই কাজটি করতে পারেন।

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

উদাহরণস্বরূপ, পরপর দুটি ট্রিপের কথা ভাবুন: ট্রিপ এ এবং ট্রিপ বি । গাড়িটি ট্রিপ এ-এর জন্য গ্রাহককে তুলে নিয়েছে এবং গন্তব্যে যাওয়ার পথে, চালক পরবর্তী ট্রিপ, অর্থাৎ ট্রিপ বি- এর জন্য আরেকজন গ্রাহককে তুলে নেওয়ার অনুরোধ পান।

  • getVehicle() কল করলে remainingWaypoints ফেরত আসে, যেগুলোতে থাকে:
    A- কে নামিয়ে দেওয়াB- কে তুলে নেওয়াB- কে নামিয়ে দেওয়া
  • ট্রিপ A- এর জন্য getTrip() অথবা onTripRemainingWaypointsUpdated কলব্যাকটি remainingWaypoints রিটার্ন করে, যেগুলোতে নিম্নলিখিত বিষয়গুলো থাকে:
    নামিয়ে দেওয়া
  • ট্রিপ B- এর জন্য getTrip() অথবা onTripRemainingWaypointsUpdated কলব্যাকটি remainingWaypoints রিটার্ন করে, যেগুলোতে নিম্নলিখিত বিষয়গুলো থাকে:
    A নামিয়ে দেওয়াB তুলে নেওয়া → এবং B নামিয়ে দেওয়া

এরপর কী?